svf-lib 1.0.764 → 1.0.768
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/Release-build/lib/libSvf.a +0 -0
- package/SVF-linux/include/Graphs/ConsG.h +1 -1
- package/SVF-linux/include/Graphs/ConsGEdge.h +2 -2
- package/SVF-linux/include/Graphs/VFG.h +4 -4
- package/SVF-linux/include/MemoryModel/LocationSet.h +3 -3
- package/SVF-linux/include/MemoryModel/SVFIR.h +1 -1
- package/SVF-linux/include/MemoryModel/SVFStatements.h +378 -308
- package/SVF-linux/include/MemoryModel/SVFVariables.h +9 -9
- package/SVF-linux/include/SVF-FE/DCHG.h +3 -3
- package/SVF-linux/include/SVF-FE/SVFIRBuilder.h +2 -2
- package/SVF-linux/include/Util/IRAnnotator.h +1 -1
- package/SVF-osx/Release-build/lib/CUDD/libCudd.a +0 -0
- package/SVF-osx/Release-build/lib/libSvf.a +0 -0
- package/SVF-osx/include/Graphs/ConsG.h +1 -1
- package/SVF-osx/include/Graphs/ConsGEdge.h +2 -2
- package/SVF-osx/include/Graphs/VFG.h +4 -4
- package/SVF-osx/include/MemoryModel/LocationSet.h +3 -3
- package/SVF-osx/include/MemoryModel/SVFIR.h +1 -1
- package/SVF-osx/include/MemoryModel/SVFStatements.h +378 -308
- package/SVF-osx/include/MemoryModel/SVFVariables.h +9 -9
- package/SVF-osx/include/SVF-FE/DCHG.h +3 -3
- package/SVF-osx/include/SVF-FE/SVFIRBuilder.h +2 -2
- package/SVF-osx/include/Util/IRAnnotator.h +1 -1
- package/package.json +1 -1
|
Binary file
|
|
@@ -291,7 +291,7 @@ public:
|
|
|
291
291
|
inline bool isZeroOffsettedGepCGEdge(ConstraintEdge *edge) const
|
|
292
292
|
{
|
|
293
293
|
if (NormalGepCGEdge *normalGepCGEdge = SVFUtil::dyn_cast<NormalGepCGEdge>(edge))
|
|
294
|
-
if (0 == normalGepCGEdge->
|
|
294
|
+
if (0 == normalGepCGEdge->getFieldOffset())
|
|
295
295
|
return true;
|
|
296
296
|
return false;
|
|
297
297
|
}
|
|
@@ -304,9 +304,9 @@ public:
|
|
|
304
304
|
}
|
|
305
305
|
|
|
306
306
|
/// Get location set of the gep edge
|
|
307
|
-
inline Size_t
|
|
307
|
+
inline Size_t getFieldOffset() const
|
|
308
308
|
{
|
|
309
|
-
return ls.
|
|
309
|
+
return ls.accumulateConstantFieldIdx();
|
|
310
310
|
}
|
|
311
311
|
};
|
|
312
312
|
|
|
@@ -487,28 +487,28 @@ protected:
|
|
|
487
487
|
{
|
|
488
488
|
AddrVFGNode* sNode = new AddrVFGNode(totalVFGNode++,addr);
|
|
489
489
|
addStmtVFGNode(sNode, addr);
|
|
490
|
-
setDef(addr->
|
|
490
|
+
setDef(addr->getLHSVar(),sNode);
|
|
491
491
|
}
|
|
492
492
|
/// Add a Copy VFG node
|
|
493
493
|
inline void addCopyVFGNode(const CopyStmt* copy)
|
|
494
494
|
{
|
|
495
495
|
CopyVFGNode* sNode = new CopyVFGNode(totalVFGNode++,copy);
|
|
496
496
|
addStmtVFGNode(sNode, copy);
|
|
497
|
-
setDef(copy->
|
|
497
|
+
setDef(copy->getLHSVar(),sNode);
|
|
498
498
|
}
|
|
499
499
|
/// Add a Gep VFG node
|
|
500
500
|
inline void addGepVFGNode(const GepStmt* gep)
|
|
501
501
|
{
|
|
502
502
|
GepVFGNode* sNode = new GepVFGNode(totalVFGNode++,gep);
|
|
503
503
|
addStmtVFGNode(sNode, gep);
|
|
504
|
-
setDef(gep->
|
|
504
|
+
setDef(gep->getLHSVar(),sNode);
|
|
505
505
|
}
|
|
506
506
|
/// Add a Load VFG node
|
|
507
507
|
void addLoadVFGNode(const LoadStmt* load)
|
|
508
508
|
{
|
|
509
509
|
LoadVFGNode* sNode = new LoadVFGNode(totalVFGNode++,load);
|
|
510
510
|
addStmtVFGNode(sNode, load);
|
|
511
|
-
setDef(load->
|
|
511
|
+
setDef(load->getLHSVar(),sNode);
|
|
512
512
|
}
|
|
513
513
|
/// Add a Store VFG node,
|
|
514
514
|
/// To be noted store does not create a new pointer, we do not set def for any SVFIR node
|
|
@@ -104,7 +104,7 @@ public:
|
|
|
104
104
|
inline LocationSet operator+ (const LocationSet& rhs) const
|
|
105
105
|
{
|
|
106
106
|
LocationSet ls(rhs);
|
|
107
|
-
ls.fldIdx +=
|
|
107
|
+
ls.fldIdx += accumulateConstantFieldIdx();
|
|
108
108
|
OffsetValueVec::const_iterator it = getOffsetValueVec().begin();
|
|
109
109
|
OffsetValueVec::const_iterator eit = getOffsetValueVec().end();
|
|
110
110
|
for (; it != eit; ++it)
|
|
@@ -151,7 +151,7 @@ public:
|
|
|
151
151
|
|
|
152
152
|
/// Get methods
|
|
153
153
|
//@{
|
|
154
|
-
inline Size_t
|
|
154
|
+
inline Size_t accumulateConstantFieldIdx() const
|
|
155
155
|
{
|
|
156
156
|
return fldIdx;
|
|
157
157
|
}
|
|
@@ -203,7 +203,7 @@ template <> struct std::hash<SVF::LocationSet> {
|
|
|
203
203
|
size_t operator()(const SVF::LocationSet &ls) const {
|
|
204
204
|
SVF::Hash<std::pair<SVF::NodeID, SVF::NodeID>> h;
|
|
205
205
|
std::hash<SVF::LocationSet::OffsetValueVec> v;
|
|
206
|
-
return h(std::make_pair(ls.
|
|
206
|
+
return h(std::make_pair(ls.accumulateConstantFieldIdx(), v(ls.getOffsetValueVec())));
|
|
207
207
|
}
|
|
208
208
|
};
|
|
209
209
|
|
|
@@ -651,7 +651,7 @@ private:
|
|
|
651
651
|
/// Add Offset(Gep) edge
|
|
652
652
|
NormalGepStmt* addNormalGepStmt(NodeID src, NodeID dst, const LocationSet& ls);
|
|
653
653
|
/// Add Variant(Gep) edge
|
|
654
|
-
VariantGepStmt* addVariantGepStmt(NodeID src, NodeID dst);
|
|
654
|
+
VariantGepStmt* addVariantGepStmt(NodeID src, NodeID dst, const LocationSet& ls);
|
|
655
655
|
/// Add Thread fork edge for parameter passing
|
|
656
656
|
TDForkPE* addThreadForkPE(NodeID src, NodeID dst, const CallBlockNode* cs);
|
|
657
657
|
/// Add Thread join edge for parameter passing
|