svf-lib 1.0.2583 → 1.0.2585
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-linux-x86_64/lib/libSvfLLVM.so.3.4 +0 -0
- package/SVF-osx/include/AE/Core/AbstractState.h +1 -1
- package/SVF-osx/include/AE/Core/AddressValue.h +6 -6
- package/SVF-osx/include/AE/Core/IntervalValue.h +64 -64
- package/SVF-osx/include/AE/Core/NumericValue.h +45 -45
- package/SVF-osx/include/AE/Svfexe/AEDetector.h +7 -7
- package/SVF-osx/include/DDA/FlowDDA.h +2 -2
- package/SVF-osx/include/Graphs/CDG.h +3 -3
- package/SVF-osx/include/Graphs/CHG.h +3 -3
- package/SVF-osx/include/Graphs/IRGraph.h +3 -3
- package/SVF-osx/include/Graphs/VFG.h +6 -6
- package/SVF-osx/include/Graphs/WTO.h +1 -1
- package/SVF-osx/include/MTA/LockAnalysis.h +8 -8
- package/SVF-osx/include/MemoryModel/ConditionalPT.h +69 -69
- package/SVF-osx/include/MemoryModel/MutablePointsToDS.h +33 -33
- package/SVF-osx/include/MemoryModel/PersistentPointsToDS.h +18 -18
- package/SVF-osx/include/SABER/SaberCheckerAPI.h +2 -2
- package/SVF-osx/include/SVF-LLVM/GEPTypeBridgeIterator.h +13 -13
- package/SVF-osx/include/SVF-LLVM/LLVMModule.h +2 -2
- package/SVF-osx/include/SVFIR/SVFIR.h +3 -3
- package/SVF-osx/include/SVFIR/SVFVariables.h +1 -1
- package/SVF-osx/include/Util/CommandLine.h +10 -10
- package/SVF-osx/include/Util/SparseBitVector.h +29 -29
- package/SVF-osx/include/Util/iterator.h +15 -15
- package/SVF-osx/lib/libSvfLLVM.3.4.dylib +0 -0
- package/package.json +1 -1
|
@@ -529,14 +529,14 @@ class SparseBitVector
|
|
|
529
529
|
const_cast<SparseBitVector<ElementSize> *>(this)->Elements.end();
|
|
530
530
|
|
|
531
531
|
if (Elements.empty())
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
532
|
+
{
|
|
533
|
+
CurrElementIter = Begin;
|
|
534
|
+
return CurrElementIter;
|
|
535
|
+
}
|
|
536
536
|
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
537
|
+
// Make sure our current iterator is valid.
|
|
538
|
+
if (CurrElementIter == End)
|
|
539
|
+
--CurrElementIter;
|
|
540
540
|
|
|
541
541
|
// Search from our current iterator, either backwards or forwards,
|
|
542
542
|
// depending on what element we are looking for.
|
|
@@ -548,15 +548,15 @@ class SparseBitVector
|
|
|
548
548
|
else if (CurrElementIter->index() > ElementIndex)
|
|
549
549
|
{
|
|
550
550
|
while (ElementIter != Begin
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
551
|
+
&& ElementIter->index() > ElementIndex)
|
|
552
|
+
--ElementIter;
|
|
553
|
+
}
|
|
554
|
+
else
|
|
555
|
+
{
|
|
556
|
+
while (ElementIter != End &&
|
|
557
|
+
ElementIter->index() < ElementIndex)
|
|
558
|
+
++ElementIter;
|
|
559
|
+
}
|
|
560
560
|
CurrElementIter = ElementIter;
|
|
561
561
|
return ElementIter;
|
|
562
562
|
}
|
|
@@ -697,13 +697,13 @@ class SparseBitVector
|
|
|
697
697
|
{
|
|
698
698
|
// If they are both at the end, ignore the rest of the fields.
|
|
699
699
|
if (AtEnd && RHS.AtEnd)
|
|
700
|
-
|
|
700
|
+
return true;
|
|
701
701
|
// Otherwise they are the same if they have the same bit number and
|
|
702
702
|
// bitmap.
|
|
703
703
|
return AtEnd == RHS.AtEnd && RHS.BitNumber == BitNumber;
|
|
704
704
|
}
|
|
705
705
|
|
|
706
|
-
|
|
706
|
+
bool operator!=(const SparseBitVectorIterator &RHS) const
|
|
707
707
|
{
|
|
708
708
|
return !(*this == RHS);
|
|
709
709
|
}
|
|
@@ -746,7 +746,7 @@ public:
|
|
|
746
746
|
bool test(unsigned Idx) const
|
|
747
747
|
{
|
|
748
748
|
if (Elements.empty())
|
|
749
|
-
|
|
749
|
+
return false;
|
|
750
750
|
|
|
751
751
|
unsigned ElementIndex = Idx / ElementSize;
|
|
752
752
|
ElementListConstIter ElementIter = FindLowerBoundConst(ElementIndex);
|
|
@@ -754,12 +754,12 @@ public:
|
|
|
754
754
|
// If we can't find an element that is supposed to contain this bit, there
|
|
755
755
|
// is nothing more to do.
|
|
756
756
|
if (ElementIter == Elements.end() ||
|
|
757
|
-
|
|
757
|
+
ElementIter->index() != ElementIndex)
|
|
758
758
|
return false;
|
|
759
|
-
|
|
760
|
-
|
|
759
|
+
return ElementIter->test(Idx % ElementSize);
|
|
760
|
+
}
|
|
761
761
|
|
|
762
|
-
|
|
762
|
+
void reset(unsigned Idx)
|
|
763
763
|
{
|
|
764
764
|
if (Elements.empty())
|
|
765
765
|
return;
|
|
@@ -1119,22 +1119,22 @@ public:
|
|
|
1119
1119
|
int find_first() const
|
|
1120
1120
|
{
|
|
1121
1121
|
if (Elements.empty())
|
|
1122
|
-
|
|
1122
|
+
return -1;
|
|
1123
1123
|
const SparseBitVectorElement<ElementSize> &First = *(Elements.begin());
|
|
1124
1124
|
return (First.index() * ElementSize) + First.find_first();
|
|
1125
1125
|
}
|
|
1126
1126
|
|
|
1127
|
-
|
|
1128
|
-
|
|
1127
|
+
// Return the last set bit in the bitmap. Return -1 if no bits are set.
|
|
1128
|
+
int find_last() const
|
|
1129
1129
|
{
|
|
1130
1130
|
if (Elements.empty())
|
|
1131
|
-
|
|
1131
|
+
return -1;
|
|
1132
1132
|
const SparseBitVectorElement<ElementSize> &Last = *(Elements.rbegin());
|
|
1133
1133
|
return (Last.index() * ElementSize) + Last.find_last();
|
|
1134
1134
|
}
|
|
1135
1135
|
|
|
1136
|
-
|
|
1137
|
-
|
|
1136
|
+
// Return true if the SparseBitVector is empty
|
|
1137
|
+
bool empty() const
|
|
1138
1138
|
{
|
|
1139
1139
|
return Elements.empty();
|
|
1140
1140
|
}
|
|
@@ -106,10 +106,10 @@ public:
|
|
|
106
106
|
DerivedT operator+(DifferenceTypeT n) const
|
|
107
107
|
{
|
|
108
108
|
static_assert(std::is_base_of<iter_facade_base, DerivedT>::value,
|
|
109
|
-
|
|
109
|
+
"Must pass the derived type to this template!");
|
|
110
110
|
static_assert(
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
IsRandomAccess,
|
|
112
|
+
"The '+' operator is only defined for random access iterators.");
|
|
113
113
|
DerivedT tmp = *static_cast<const DerivedT *>(this);
|
|
114
114
|
tmp += n;
|
|
115
115
|
return tmp;
|
|
@@ -124,8 +124,8 @@ public:
|
|
|
124
124
|
DerivedT operator-(DifferenceTypeT n) const
|
|
125
125
|
{
|
|
126
126
|
static_assert(
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
IsRandomAccess,
|
|
128
|
+
"The '-' operator is only defined for random access iterators.");
|
|
129
129
|
DerivedT tmp = *static_cast<const DerivedT *>(this);
|
|
130
130
|
tmp -= n;
|
|
131
131
|
return tmp;
|
|
@@ -170,23 +170,23 @@ public:
|
|
|
170
170
|
bool operator>(const DerivedT &RHS) const
|
|
171
171
|
{
|
|
172
172
|
static_assert(
|
|
173
|
-
|
|
174
|
-
|
|
173
|
+
IsRandomAccess,
|
|
174
|
+
"Relational operators are only defined for random access iterators.");
|
|
175
175
|
return !(static_cast<const DerivedT &>(*this) < RHS) &&
|
|
176
|
-
|
|
176
|
+
!(static_cast<const DerivedT &>(*this) == RHS);
|
|
177
177
|
}
|
|
178
178
|
bool operator<=(const DerivedT &RHS) const
|
|
179
179
|
{
|
|
180
180
|
static_assert(
|
|
181
|
-
|
|
182
|
-
|
|
181
|
+
IsRandomAccess,
|
|
182
|
+
"Relational operators are only defined for random access iterators.");
|
|
183
183
|
return !(static_cast<const DerivedT &>(*this) > RHS);
|
|
184
184
|
}
|
|
185
185
|
bool operator>=(const DerivedT &RHS) const
|
|
186
186
|
{
|
|
187
187
|
static_assert(
|
|
188
|
-
|
|
189
|
-
|
|
188
|
+
IsRandomAccess,
|
|
189
|
+
"Relational operators are only defined for random access iterators.");
|
|
190
190
|
return !(static_cast<const DerivedT &>(*this) < RHS);
|
|
191
191
|
}
|
|
192
192
|
|
|
@@ -207,7 +207,7 @@ public:
|
|
|
207
207
|
ReferenceProxy operator[](DifferenceTypeT n) const
|
|
208
208
|
{
|
|
209
209
|
static_assert(IsRandomAccess,
|
|
210
|
-
|
|
210
|
+
"Subscripting is only defined for random access iterators.");
|
|
211
211
|
return ReferenceProxy(static_cast<const DerivedT *>(this)->operator+(n));
|
|
212
212
|
}
|
|
213
213
|
};
|
|
@@ -277,8 +277,8 @@ public:
|
|
|
277
277
|
difference_type operator-(const DerivedT &RHS) const
|
|
278
278
|
{
|
|
279
279
|
static_assert(
|
|
280
|
-
|
|
281
|
-
|
|
280
|
+
BaseT::IsRandomAccess,
|
|
281
|
+
"The '-' operator is only defined for random access iterators.");
|
|
282
282
|
return I - RHS.I;
|
|
283
283
|
}
|
|
284
284
|
|
|
Binary file
|