summaryrefslogtreecommitdiff
path: root/src/analysis/sign-lattice.cpp
diff options
context:
space:
mode:
authorBruce He <44327446+zm2he@users.noreply.github.com>2023-06-29 20:16:40 +0000
committerGitHub <noreply@github.com>2023-06-29 16:16:40 -0400
commit7b2e06aa3a0b6cef9568c3eab010a7187b9b6803 (patch)
tree4408c424ab640f9534362784f3355db4981480b7 /src/analysis/sign-lattice.cpp
parent84316e8fc3448932c4d62d1e749047aaacf02ef2 (diff)
downloadbinaryen-7b2e06aa3a0b6cef9568c3eab010a7187b9b6803.tar.gz
binaryen-7b2e06aa3a0b6cef9568c3eab010a7187b9b6803.tar.bz2
binaryen-7b2e06aa3a0b6cef9568c3eab010a7187b9b6803.zip
Dynamic Sized Bitvector Powerset Lattice for Static Analysis (#5784)
This change introduces a finite-height powerset lattice FinitePowersetLattice where each element's height is determined when constructed in runtime. This is implemented using a vector of `bools. This change also modifies BlockState and MonotoneCFGAnalyzer to be templated on a generic lattice type instead of using a hardcoded lattice. It additionally fixes an iterator bug in MonotoneCFGAnalyzer::fromCFG which assigned a temporary iterator object as predecessor and successor pointers to BlockStates instead of pointers to actual BlockState objects.
Diffstat (limited to 'src/analysis/sign-lattice.cpp')
-rw-r--r--src/analysis/sign-lattice.cpp8
1 files changed, 2 insertions, 6 deletions
diff --git a/src/analysis/sign-lattice.cpp b/src/analysis/sign-lattice.cpp
index 9baa2f2fd..0d9379938 100644
--- a/src/analysis/sign-lattice.cpp
+++ b/src/analysis/sign-lattice.cpp
@@ -11,11 +11,9 @@ private:
Sign value;
public:
- static bool isTop(const SignLattice& element) { return element.value == TOP; }
+ bool isTop() { return value == TOP; }
- static bool isBottom(const SignLattice& element) {
- return element.value == BOTTOM;
- }
+ bool isBottom() { return value == BOTTOM; }
static LatticeComparison compare(const SignLattice& left,
const SignLattice& right) {
@@ -44,6 +42,4 @@ public:
}
};
-static_assert(is_lattice<SignLattice>);
-
} // namespace wasm::analysis