diff --git a/projects/dvm b/projects/dvm index c00e381..a711f8e 160000 --- a/projects/dvm +++ b/projects/dvm @@ -1 +1 @@ -Subproject commit c00e3818124823325d022b963db9e0437a5427f6 +Subproject commit a711f8ebfd023ca90a6d9c9bdf5a4726cd276d51 diff --git a/projects/libpredictor b/projects/libpredictor index 840f9d9..d0772cd 160000 --- a/projects/libpredictor +++ b/projects/libpredictor @@ -1 +1 @@ -Subproject commit 840f9d9c1ad579825d81c46cdf70877c497fecca +Subproject commit d0772cdb57432b8c96ce634687641b1c8c76d21c diff --git a/src/PrivateAnalyzer/private_arrays_search.cpp b/src/PrivateAnalyzer/private_arrays_search.cpp index f8ab229..ce70854 100644 --- a/src/PrivateAnalyzer/private_arrays_search.cpp +++ b/src/PrivateAnalyzer/private_arrays_search.cpp @@ -508,13 +508,13 @@ AccessingSet AccessingSet::Diff(const AccessingSet& secondSet) const return uncovered; } -bool operator==(const ArrayDimension& lhs, const ArrayDimension& rhs) +bool operator!=(const ArrayDimension& lhs, const ArrayDimension& rhs) { - return lhs.start == rhs.start && lhs.step == rhs.step && lhs.tripCount == rhs.tripCount; + return !(lhs.start == rhs.start && lhs.step == rhs.step && lhs.tripCount == rhs.tripCount); } -bool operator==(const AccessingSet& lhs, const AccessingSet& rhs) +bool operator!=(const AccessingSet& lhs, const AccessingSet& rhs) { for (size_t i = 0; i < lhs.allElements.size(); i++) { @@ -522,11 +522,27 @@ bool operator==(const AccessingSet& lhs, const AccessingSet& rhs) { if (lhs.allElements[i][j] != rhs.allElements[i][j]) { - return false; + return true; } } } - return true; + return false; +} + +bool operator!=(const ArrayAccessingIndexes& lhs, const ArrayAccessingIndexes& rhs) +{ + if(lhs.size() != rhs.size()) + { + return true; + } + for(auto& [key, value]: lhs) + { + if(rhs.find(key) == rhs.end()) + { + return true; + } + } + return false; } void Collapse(Region* region) diff --git a/src/PrivateAnalyzer/private_arrays_search.h b/src/PrivateAnalyzer/private_arrays_search.h index f8508f3..983f3dc 100644 --- a/src/PrivateAnalyzer/private_arrays_search.h +++ b/src/PrivateAnalyzer/private_arrays_search.h @@ -30,7 +30,7 @@ class AccessingSet { bool ContainsElement(const vector& element) const; void FindCoveredBy(const vector& element, vector>& result) const; void FindUncovered(const vector& element, vector>& result) const; - friend bool operator==(const AccessingSet& lhs, const AccessingSet& rhs); + friend bool operator!=(const AccessingSet& lhs, const AccessingSet& rhs); }; using ArrayAccessingIndexes = map;