svf-lib 1.0.2555 → 1.0.2556
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.
|
@@ -189,16 +189,6 @@ public:
|
|
|
189
189
|
return abstractTrace[node];
|
|
190
190
|
}
|
|
191
191
|
|
|
192
|
-
// ---- Def/Use site queries (sparsity-aware) ------------------------
|
|
193
|
-
|
|
194
|
-
virtual Set<const ICFGNode*> getUseSitesOfObjVar(const ObjVar* obj, const ICFGNode* node) const;
|
|
195
|
-
virtual Set<const ICFGNode*> getUseSitesOfValVar(const ValVar* var) const;
|
|
196
|
-
virtual const ICFGNode* getDefSiteOfValVar(const ValVar* var) const;
|
|
197
|
-
virtual const ICFGNode* getDefSiteOfObjVar(const ObjVar* obj, const ICFGNode* node) const;
|
|
198
|
-
|
|
199
|
-
/// Propagate an ObjVar's abstract value from defSite to all its use-sites.
|
|
200
|
-
void propagateObjVarAbsVal(const ObjVar* var, const ICFGNode* defSite);
|
|
201
|
-
|
|
202
192
|
protected:
|
|
203
193
|
/// Factory-only construction. External callers must use getAEInstance();
|
|
204
194
|
/// `SparseAbstractInterpretation` reaches this via its own ctor.
|
|
@@ -98,10 +98,14 @@ public:
|
|
|
98
98
|
bool hasAbsValue(const ValVar* var, const ICFGNode* node) const override;
|
|
99
99
|
using SemiSparseAbstractInterpretation::hasAbsValue;
|
|
100
100
|
|
|
101
|
-
Set<const ICFGNode*>
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
101
|
+
const Set<const ICFGNode*> getUseSitesOfValVar(const ValVar* var) const;
|
|
102
|
+
const ICFGNode* getDefSiteOfValVar(const ValVar* var) const;
|
|
103
|
+
/// Given an ObjVar and its def-site ICFGNode, find all use-site ICFGNodes
|
|
104
|
+
/// by following outgoing IndirectSVFGEdges whose pts contains the ObjVar
|
|
105
|
+
const Set<const ICFGNode*> getDefSiteOfObjVar(const ObjVar* obj, const ICFGNode* node) const;
|
|
106
|
+
/// Given an ObjVar and its def-site ICFGNode, find all use-site ICFGNodes
|
|
107
|
+
/// by following outgoing IndirectSVFGEdges whose pts contains the ObjVar
|
|
108
|
+
const Set<const ICFGNode*> getUseSitesOfObjVar(const ObjVar* obj, const ICFGNode* node) const;
|
|
105
109
|
|
|
106
110
|
protected:
|
|
107
111
|
/// Build the SVFG on top of the semi-sparse precompute.
|
|
@@ -179,21 +179,21 @@ public:
|
|
|
179
179
|
return hasDef(valVar) && hasSVFGNode(getDef(valVar));
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
-
/// Given a ValVar and its SVFGNode, find the definition-site
|
|
182
|
+
/// Given a ValVar and its SVFGNode, find the definition-site SVFGNode
|
|
183
183
|
/// by following incoming direct VFGEdges (asserts unique definition)
|
|
184
|
-
const
|
|
184
|
+
const SVFGNode* getDefSiteOfValVar(const ValVar* var) const;
|
|
185
185
|
|
|
186
|
-
/// Given an ObjVar and its use-site
|
|
186
|
+
/// Given an ObjVar and its use-site SVFGNode, find the definition-site ICFGNode
|
|
187
187
|
/// by following incoming IndirectSVFGEdges whose pts contains the ObjVar (asserts unique definition)
|
|
188
|
-
const
|
|
188
|
+
const Set<const SVFGNode*> getDefSiteOfObjVar(const ObjVar* obj, const SVFGNode* node) const;
|
|
189
189
|
|
|
190
|
-
/// Given a ValVar, find all use-site
|
|
190
|
+
/// Given a ValVar, find all use-site SVFGNodes
|
|
191
191
|
/// by following outgoing direct VFGEdges from its unique definition SVFGNode
|
|
192
|
-
const Set<const
|
|
192
|
+
const Set<const SVFGNode*> getUseSitesOfValVar(const ValVar* var) const;
|
|
193
193
|
|
|
194
|
-
/// Given an ObjVar and its def-site
|
|
194
|
+
/// Given an ObjVar and its def-site SVFGNodes, find all use-site SVFGNodes
|
|
195
195
|
/// by following outgoing IndirectSVFGEdges whose pts contains the ObjVar
|
|
196
|
-
const Set<const
|
|
196
|
+
const Set<const SVFGNode*> getUseSitesOfObjVar(const ObjVar* obj, const SVFGNode* node) const;
|
|
197
197
|
|
|
198
198
|
/// Perform statistics
|
|
199
199
|
void performStat();
|
|
Binary file
|