svf-lib 1.0.2214 → 1.0.2215
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-osx/Release-build/bin/ae +0 -0
- package/SVF-osx/Release-build/bin/cfl +0 -0
- package/SVF-osx/Release-build/bin/dvf +0 -0
- package/SVF-osx/Release-build/bin/llvm2svf +0 -0
- package/SVF-osx/Release-build/bin/mta +0 -0
- package/SVF-osx/Release-build/bin/saber +0 -0
- package/SVF-osx/Release-build/bin/svf-ex +0 -0
- package/SVF-osx/Release-build/bin/wpa +0 -0
- package/SVF-osx/Release-build/include/Graphs/BasicBlockG.h +2 -2
- package/SVF-osx/Release-build/include/Graphs/CDG.h +1 -1
- package/SVF-osx/Release-build/include/Graphs/CFLGraph.h +1 -1
- package/SVF-osx/Release-build/include/Graphs/CHG.h +1 -1
- package/SVF-osx/Release-build/include/Graphs/CallGraph.h +1 -1
- package/SVF-osx/Release-build/include/Graphs/ConsGNode.h +1 -1
- package/SVF-osx/Release-build/include/Graphs/GenericGraph.h +3 -3
- package/SVF-osx/Release-build/include/Graphs/ICFGNode.h +6 -6
- package/SVF-osx/Release-build/include/Graphs/VFGNode.h +20 -20
- package/SVF-osx/Release-build/include/MTA/TCT.h +1 -1
- package/SVF-osx/Release-build/include/SVF-LLVM/BreakConstantExpr.h +1 -1
- package/SVF-osx/Release-build/include/SVF-LLVM/CppUtil.h +1 -1
- package/SVF-osx/Release-build/include/SVF-LLVM/LLVMModule.h +12 -12
- package/SVF-osx/Release-build/include/SVF-LLVM/LLVMUtil.h +2 -2
- package/SVF-osx/Release-build/include/SVF-LLVM/ObjTypeInference.h +1 -1
- package/SVF-osx/Release-build/include/SVF-LLVM/SVFIRBuilder.h +6 -6
- package/SVF-osx/Release-build/include/SVF-LLVM/{SVFValue.h → SVFLLVMValue.h} +43 -43
- package/SVF-osx/Release-build/include/SVF-LLVM/SVFModule.h +1 -1
- package/SVF-osx/Release-build/include/SVFIR/SVFValue.h +2 -2
- package/SVF-osx/Release-build/include/SVFIR/SVFVariables.h +28 -28
- package/SVF-osx/Release-build/lib/libSvfCore.a +0 -0
- package/SVF-osx/Release-build/lib/libSvfLLVM.a +0 -0
- package/package.json +1 -1
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -115,9 +115,9 @@ public:
|
|
|
115
115
|
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
static inline bool classof(const
|
|
118
|
+
static inline bool classof(const SVFValue* node)
|
|
119
119
|
{
|
|
120
|
-
return node->getNodeKind() ==
|
|
120
|
+
return node->getNodeKind() == SVFValue::BasicBlockKd;
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
static inline bool classof(const SVFBasicBlock* node)
|
|
@@ -140,7 +140,7 @@ protected:
|
|
|
140
140
|
* Generic node on the graph as base class
|
|
141
141
|
*/
|
|
142
142
|
template<class NodeTy,class EdgeTy>
|
|
143
|
-
class GenericNode: public
|
|
143
|
+
class GenericNode: public SVFValue
|
|
144
144
|
{
|
|
145
145
|
friend class SVFIRWriter;
|
|
146
146
|
friend class SVFIRReader;
|
|
@@ -163,7 +163,7 @@ private:
|
|
|
163
163
|
|
|
164
164
|
public:
|
|
165
165
|
/// Constructor
|
|
166
|
-
GenericNode(NodeID i, GNodeK k, const SVFType* svfType = nullptr):
|
|
166
|
+
GenericNode(NodeID i, GNodeK k, const SVFType* svfType = nullptr): SVFValue(i, k, svfType)
|
|
167
167
|
{
|
|
168
168
|
|
|
169
169
|
}
|
|
@@ -327,7 +327,7 @@ public:
|
|
|
327
327
|
return true;
|
|
328
328
|
}
|
|
329
329
|
|
|
330
|
-
static inline bool classof(const
|
|
330
|
+
static inline bool classof(const SVFValue*)
|
|
331
331
|
{
|
|
332
332
|
return true;
|
|
333
333
|
}
|
|
@@ -137,7 +137,7 @@ public:
|
|
|
137
137
|
return isICFGNodeKinds(node->getNodeKind());
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
static inline bool classof(const
|
|
140
|
+
static inline bool classof(const SVFValue* node)
|
|
141
141
|
{
|
|
142
142
|
return isICFGNodeKinds(node->getNodeKind());
|
|
143
143
|
}
|
|
@@ -261,7 +261,7 @@ public:
|
|
|
261
261
|
return isInterICFGNodeKind(node->getNodeKind());
|
|
262
262
|
}
|
|
263
263
|
|
|
264
|
-
static inline bool classof(const
|
|
264
|
+
static inline bool classof(const SVFValue* node)
|
|
265
265
|
{
|
|
266
266
|
return isInterICFGNodeKind(node->getNodeKind());
|
|
267
267
|
}
|
|
@@ -331,7 +331,7 @@ public:
|
|
|
331
331
|
return node->getNodeKind() == FunEntryBlock;
|
|
332
332
|
}
|
|
333
333
|
|
|
334
|
-
static inline bool classof(const
|
|
334
|
+
static inline bool classof(const SVFValue*node)
|
|
335
335
|
{
|
|
336
336
|
return node->getNodeKind() == FunEntryBlock;
|
|
337
337
|
}
|
|
@@ -399,7 +399,7 @@ public:
|
|
|
399
399
|
return node->getNodeKind() == FunExitBlock;
|
|
400
400
|
}
|
|
401
401
|
|
|
402
|
-
static inline bool classof(const
|
|
402
|
+
static inline bool classof(const SVFValue*node)
|
|
403
403
|
{
|
|
404
404
|
return node->getNodeKind() == FunExitBlock;
|
|
405
405
|
}
|
|
@@ -571,7 +571,7 @@ public:
|
|
|
571
571
|
return node->getNodeKind() == FunCallBlock;
|
|
572
572
|
}
|
|
573
573
|
|
|
574
|
-
static inline bool classof(const
|
|
574
|
+
static inline bool classof(const SVFValue*node)
|
|
575
575
|
{
|
|
576
576
|
return node->getNodeKind() == FunCallBlock;
|
|
577
577
|
}
|
|
@@ -650,7 +650,7 @@ public:
|
|
|
650
650
|
{
|
|
651
651
|
return node->getNodeKind() == FunRetBlock;
|
|
652
652
|
}
|
|
653
|
-
static inline bool classof(const
|
|
653
|
+
static inline bool classof(const SVFValue*node)
|
|
654
654
|
{
|
|
655
655
|
return node->getNodeKind() == FunRetBlock;
|
|
656
656
|
}
|
|
@@ -112,7 +112,7 @@ public:
|
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
|
|
115
|
-
static inline bool classof(const
|
|
115
|
+
static inline bool classof(const SVFValue* node)
|
|
116
116
|
{
|
|
117
117
|
return isVFGNodeKinds(node->getNodeKind());
|
|
118
118
|
}
|
|
@@ -184,7 +184,7 @@ public:
|
|
|
184
184
|
{
|
|
185
185
|
return isStmtVFGNodeKinds(node->getNodeKind());
|
|
186
186
|
}
|
|
187
|
-
static inline bool classof(const
|
|
187
|
+
static inline bool classof(const SVFValue*node)
|
|
188
188
|
{
|
|
189
189
|
return isStmtVFGNodeKinds(node->getNodeKind());
|
|
190
190
|
}
|
|
@@ -228,7 +228,7 @@ public:
|
|
|
228
228
|
{
|
|
229
229
|
return node->getNodeKind() == Load;
|
|
230
230
|
}
|
|
231
|
-
static inline bool classof(const
|
|
231
|
+
static inline bool classof(const SVFValue*node)
|
|
232
232
|
{
|
|
233
233
|
return node->getNodeKind() == Load;
|
|
234
234
|
}
|
|
@@ -273,7 +273,7 @@ public:
|
|
|
273
273
|
{
|
|
274
274
|
return node->getNodeKind() == Store;
|
|
275
275
|
}
|
|
276
|
-
static inline bool classof(const
|
|
276
|
+
static inline bool classof(const SVFValue*node)
|
|
277
277
|
{
|
|
278
278
|
return node->getNodeKind() == Store;
|
|
279
279
|
}
|
|
@@ -318,7 +318,7 @@ public:
|
|
|
318
318
|
{
|
|
319
319
|
return node->getNodeKind() == Copy;
|
|
320
320
|
}
|
|
321
|
-
static inline bool classof(const
|
|
321
|
+
static inline bool classof(const SVFValue*node)
|
|
322
322
|
{
|
|
323
323
|
return node->getNodeKind() == Copy;
|
|
324
324
|
}
|
|
@@ -364,7 +364,7 @@ public:
|
|
|
364
364
|
{
|
|
365
365
|
return node->getNodeKind() == Cmp;
|
|
366
366
|
}
|
|
367
|
-
static inline bool classof(const
|
|
367
|
+
static inline bool classof(const SVFValue*node)
|
|
368
368
|
{
|
|
369
369
|
return node->getNodeKind() == Cmp;
|
|
370
370
|
}
|
|
@@ -441,7 +441,7 @@ public:
|
|
|
441
441
|
{
|
|
442
442
|
return node->getNodeKind() == BinaryOp;
|
|
443
443
|
}
|
|
444
|
-
static inline bool classof(const
|
|
444
|
+
static inline bool classof(const SVFValue*node)
|
|
445
445
|
{
|
|
446
446
|
return node->getNodeKind() == BinaryOp;
|
|
447
447
|
}
|
|
@@ -515,7 +515,7 @@ public:
|
|
|
515
515
|
{
|
|
516
516
|
return node->getNodeKind() == UnaryOp;
|
|
517
517
|
}
|
|
518
|
-
static inline bool classof(const
|
|
518
|
+
static inline bool classof(const SVFValue*node)
|
|
519
519
|
{
|
|
520
520
|
return node->getNodeKind() == UnaryOp;
|
|
521
521
|
}
|
|
@@ -587,7 +587,7 @@ public:
|
|
|
587
587
|
{
|
|
588
588
|
return node->getNodeKind() == Branch;
|
|
589
589
|
}
|
|
590
|
-
static inline bool classof(const
|
|
590
|
+
static inline bool classof(const SVFValue*node)
|
|
591
591
|
{
|
|
592
592
|
return node->getNodeKind() == Branch;
|
|
593
593
|
}
|
|
@@ -653,7 +653,7 @@ public:
|
|
|
653
653
|
{
|
|
654
654
|
return node->getNodeKind() == Gep;
|
|
655
655
|
}
|
|
656
|
-
static inline bool classof(const
|
|
656
|
+
static inline bool classof(const SVFValue*node)
|
|
657
657
|
{
|
|
658
658
|
return node->getNodeKind() == Gep;
|
|
659
659
|
}
|
|
@@ -730,7 +730,7 @@ public:
|
|
|
730
730
|
{
|
|
731
731
|
return isPHIVFGNodeKinds(node->getNodeKind());
|
|
732
732
|
}
|
|
733
|
-
static inline bool classof(const
|
|
733
|
+
static inline bool classof(const SVFValue*node)
|
|
734
734
|
{
|
|
735
735
|
return isPHIVFGNodeKinds(node->getNodeKind());
|
|
736
736
|
}
|
|
@@ -790,7 +790,7 @@ public:
|
|
|
790
790
|
{
|
|
791
791
|
return node->getNodeKind() == TIntraPhi;
|
|
792
792
|
}
|
|
793
|
-
static inline bool classof(const
|
|
793
|
+
static inline bool classof(const SVFValue*node)
|
|
794
794
|
{
|
|
795
795
|
return node->getNodeKind() == TIntraPhi;
|
|
796
796
|
}
|
|
@@ -831,7 +831,7 @@ public:
|
|
|
831
831
|
{
|
|
832
832
|
return node->getNodeKind() == Addr;
|
|
833
833
|
}
|
|
834
|
-
static inline bool classof(const
|
|
834
|
+
static inline bool classof(const SVFValue*node)
|
|
835
835
|
{
|
|
836
836
|
return node->getNodeKind() == Addr;
|
|
837
837
|
}
|
|
@@ -875,7 +875,7 @@ public:
|
|
|
875
875
|
{
|
|
876
876
|
return isArgumentVFGNodeKinds(node->getNodeKind());
|
|
877
877
|
}
|
|
878
|
-
static inline bool classof(const
|
|
878
|
+
static inline bool classof(const SVFValue*node)
|
|
879
879
|
{
|
|
880
880
|
return isArgumentVFGNodeKinds(node->getNodeKind());
|
|
881
881
|
}
|
|
@@ -929,7 +929,7 @@ public:
|
|
|
929
929
|
{
|
|
930
930
|
return node->getNodeKind() == AParm;
|
|
931
931
|
}
|
|
932
|
-
static inline bool classof(const
|
|
932
|
+
static inline bool classof(const SVFValue*node)
|
|
933
933
|
{
|
|
934
934
|
return node->getNodeKind() == AParm;
|
|
935
935
|
}
|
|
@@ -1003,7 +1003,7 @@ public:
|
|
|
1003
1003
|
{
|
|
1004
1004
|
return node->getNodeKind() == FParm;
|
|
1005
1005
|
}
|
|
1006
|
-
static inline bool classof(const
|
|
1006
|
+
static inline bool classof(const SVFValue*node)
|
|
1007
1007
|
{
|
|
1008
1008
|
return node->getNodeKind() == FParm;
|
|
1009
1009
|
}
|
|
@@ -1065,7 +1065,7 @@ public:
|
|
|
1065
1065
|
{
|
|
1066
1066
|
return node->getNodeKind() == ARet;
|
|
1067
1067
|
}
|
|
1068
|
-
static inline bool classof(const
|
|
1068
|
+
static inline bool classof(const SVFValue*node)
|
|
1069
1069
|
{
|
|
1070
1070
|
return node->getNodeKind() == ARet;
|
|
1071
1071
|
}
|
|
@@ -1135,7 +1135,7 @@ public:
|
|
|
1135
1135
|
{
|
|
1136
1136
|
return node->getNodeKind() == FRet;
|
|
1137
1137
|
}
|
|
1138
|
-
static inline bool classof(const
|
|
1138
|
+
static inline bool classof(const SVFValue*node)
|
|
1139
1139
|
{
|
|
1140
1140
|
return node->getNodeKind() == FRet;
|
|
1141
1141
|
}
|
|
@@ -1198,7 +1198,7 @@ public:
|
|
|
1198
1198
|
{
|
|
1199
1199
|
return node->getNodeKind() == TInterPhi;
|
|
1200
1200
|
}
|
|
1201
|
-
static inline bool classof(const
|
|
1201
|
+
static inline bool classof(const SVFValue*node)
|
|
1202
1202
|
{
|
|
1203
1203
|
return node->getNodeKind() == TInterPhi;
|
|
1204
1204
|
}
|
|
@@ -1250,7 +1250,7 @@ public:
|
|
|
1250
1250
|
{
|
|
1251
1251
|
return node->getNodeKind() == NPtr;
|
|
1252
1252
|
}
|
|
1253
|
-
static inline bool classof(const
|
|
1253
|
+
static inline bool classof(const SVFValue*node)
|
|
1254
1254
|
{
|
|
1255
1255
|
return node->getNodeKind() == NPtr;
|
|
1256
1256
|
}
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
#define INCLUDE_SVF_FE_LLVMMODULE_H_
|
|
32
32
|
|
|
33
33
|
#include "SVF-LLVM/BasicTypes.h"
|
|
34
|
-
#include "SVF-LLVM/
|
|
34
|
+
#include "SVF-LLVM/SVFLLVMValue.h"
|
|
35
35
|
#include "SVF-LLVM/SVFModule.h"
|
|
36
36
|
#include "Util/Options.h"
|
|
37
37
|
#include "Graphs/BasicBlockG.h"
|
|
@@ -61,8 +61,8 @@ public:
|
|
|
61
61
|
typedef Map<const Argument*, SVFArgument*> LLVMArgument2SVFArgumentMap;
|
|
62
62
|
typedef Map<const Constant*, SVFConstant*> LLVMConst2SVFConstMap;
|
|
63
63
|
typedef Map<const Value*, SVFOtherValue*> LLVMValue2SVFOtherValueMap;
|
|
64
|
-
typedef Map<const
|
|
65
|
-
typedef Map<const
|
|
64
|
+
typedef Map<const SVFLLVMValue*, const Value*> SVFValue2LLVMValueMap;
|
|
65
|
+
typedef Map<const SVFValue*, const Value*> SVFBaseNode2LLVMValueMap;
|
|
66
66
|
typedef Map<const Type*, SVFType*> LLVMType2SVFTypeMap;
|
|
67
67
|
typedef Map<const Type*, StInfo*> Type2TypeInfoMap;
|
|
68
68
|
typedef Map<std::string, std::vector<std::string>> Fun2AnnoMap;
|
|
@@ -75,7 +75,7 @@ public:
|
|
|
75
75
|
|
|
76
76
|
/// llvm value to sym id map
|
|
77
77
|
/// local (%) and global (@) identifiers are pointer types which have a value node id.
|
|
78
|
-
typedef OrderedMap<const
|
|
78
|
+
typedef OrderedMap<const SVFLLVMValue*, NodeID> ValueToIDMapTy;
|
|
79
79
|
|
|
80
80
|
typedef OrderedMap<const SVFFunction*, NodeID> FunToIDMapTy;
|
|
81
81
|
|
|
@@ -208,13 +208,13 @@ public:
|
|
|
208
208
|
|
|
209
209
|
/// Get SVFIR Node according to LLVM value
|
|
210
210
|
///getNode - Return the node corresponding to the specified pointer.
|
|
211
|
-
NodeID getValueNode(const
|
|
211
|
+
NodeID getValueNode(const SVFLLVMValue* V);
|
|
212
212
|
|
|
213
|
-
bool hasValueNode(const
|
|
213
|
+
bool hasValueNode(const SVFLLVMValue* V);
|
|
214
214
|
|
|
215
215
|
/// getObject - Return the obj node id refer to the memory object for the
|
|
216
216
|
/// specified global, heap or alloca instruction according to llvm value.
|
|
217
|
-
NodeID getObjectNode(const
|
|
217
|
+
NodeID getObjectNode(const SVFLLVMValue* V);
|
|
218
218
|
|
|
219
219
|
void dumpSymTable();
|
|
220
220
|
|
|
@@ -285,16 +285,16 @@ public:
|
|
|
285
285
|
setValueAttr(ov,svfov);
|
|
286
286
|
}
|
|
287
287
|
|
|
288
|
-
|
|
288
|
+
SVFLLVMValue* getSVFValue(const Value* value);
|
|
289
289
|
|
|
290
|
-
const Value* getLLVMValue(const
|
|
290
|
+
const Value* getLLVMValue(const SVFLLVMValue* value) const
|
|
291
291
|
{
|
|
292
292
|
SVFValue2LLVMValueMap::const_iterator it = SVFValue2LLVMValue.find(value);
|
|
293
293
|
assert(it!=SVFValue2LLVMValue.end() && "can't find corresponding llvm value!");
|
|
294
294
|
return it->second;
|
|
295
295
|
}
|
|
296
296
|
|
|
297
|
-
const Value* getLLVMValue(const
|
|
297
|
+
const Value* getLLVMValue(const SVFValue* value) const
|
|
298
298
|
{
|
|
299
299
|
SVFBaseNode2LLVMValueMap ::const_iterator it = SVFBaseNode2LLVMValue.find(value);
|
|
300
300
|
assert(it != SVFBaseNode2LLVMValue.end() && "can't find corresponding llvm value!");
|
|
@@ -536,8 +536,8 @@ private:
|
|
|
536
536
|
void initSVFFunction();
|
|
537
537
|
void initSVFBasicBlock(const Function* func);
|
|
538
538
|
void initDomTree(SVFFunction* func, const Function* f);
|
|
539
|
-
void setValueAttr(const Value* val,
|
|
540
|
-
void addToSVFVar2LLVMValueMap(const Value* val,
|
|
539
|
+
void setValueAttr(const Value* val, SVFLLVMValue* value);
|
|
540
|
+
void addToSVFVar2LLVMValueMap(const Value* val, SVFValue* svfBaseNode);
|
|
541
541
|
void buildFunToFunMap();
|
|
542
542
|
void buildGlobalDefToRepMap();
|
|
543
543
|
/// Invoke llvm passes to modify module
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
|
|
33
33
|
#include "Util/SVFUtil.h"
|
|
34
34
|
#include "SVF-LLVM/BasicTypes.h"
|
|
35
|
-
#include "SVF-LLVM/
|
|
35
|
+
#include "SVF-LLVM/SVFLLVMValue.h"
|
|
36
36
|
#include "Util/ThreadAPI.h"
|
|
37
37
|
|
|
38
38
|
namespace SVF
|
|
@@ -377,7 +377,7 @@ inline bool isConstDataOrAggData(const Value* val)
|
|
|
377
377
|
const Value* getGlobalRep(const Value* val);
|
|
378
378
|
|
|
379
379
|
/// Check whether this value points-to a constant object
|
|
380
|
-
bool isConstantObjSym(const
|
|
380
|
+
bool isConstantObjSym(const SVFLLVMValue* val);
|
|
381
381
|
|
|
382
382
|
/// Check whether this value points-to a constant object
|
|
383
383
|
bool isConstantObjSym(const Value* val);
|
|
@@ -50,7 +50,7 @@ private:
|
|
|
50
50
|
SVFIR* pag;
|
|
51
51
|
SVFModule* svfModule;
|
|
52
52
|
const SVFBasicBlock* curBB; ///< Current basic block during SVFIR construction when visiting the module
|
|
53
|
-
const
|
|
53
|
+
const SVFLLVMValue* curVal; ///< Current Value during SVFIR construction when visiting the module
|
|
54
54
|
|
|
55
55
|
public:
|
|
56
56
|
/// Constructor
|
|
@@ -93,14 +93,14 @@ public:
|
|
|
93
93
|
processCE(V);
|
|
94
94
|
|
|
95
95
|
// strip off the constant cast and return the value node
|
|
96
|
-
|
|
96
|
+
SVFLLVMValue* svfVal = llvmModuleSet()->getSVFValue(V);
|
|
97
97
|
return llvmModuleSet()->getValueNode(svfVal);
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
/// GetObject - Return the object node (stack/global/heap/function) according to a LLVM Value
|
|
101
101
|
inline NodeID getObjectNode(const Value* V)
|
|
102
102
|
{
|
|
103
|
-
|
|
103
|
+
SVFLLVMValue* svfVal = llvmModuleSet()->getSVFValue(V);
|
|
104
104
|
return llvmModuleSet()->getObjectNode(svfVal);
|
|
105
105
|
}
|
|
106
106
|
|
|
@@ -246,12 +246,12 @@ protected:
|
|
|
246
246
|
curBB = (bb == nullptr? nullptr : llvmModuleSet()->getSVFBasicBlock(bb));
|
|
247
247
|
curVal = (val == nullptr ? nullptr: llvmModuleSet()->getSVFValue(val));
|
|
248
248
|
}
|
|
249
|
-
inline void setCurrentLocation(const
|
|
249
|
+
inline void setCurrentLocation(const SVFLLVMValue* val, const SVFBasicBlock* bb)
|
|
250
250
|
{
|
|
251
251
|
curBB = bb;
|
|
252
252
|
curVal = val;
|
|
253
253
|
}
|
|
254
|
-
inline const
|
|
254
|
+
inline const SVFLLVMValue* getCurrentValue() const
|
|
255
255
|
{
|
|
256
256
|
return curVal;
|
|
257
257
|
}
|
|
@@ -263,7 +263,7 @@ protected:
|
|
|
263
263
|
/// Add global black hole Address edge
|
|
264
264
|
void addGlobalBlackHoleAddrEdge(NodeID node, const ConstantExpr *int2Ptrce)
|
|
265
265
|
{
|
|
266
|
-
const
|
|
266
|
+
const SVFLLVMValue* cval = getCurrentValue();
|
|
267
267
|
const SVFBasicBlock* cbb = getCurrentBB();
|
|
268
268
|
setCurrentLocation(int2Ptrce,nullptr);
|
|
269
269
|
addBlackHoleAddrEdge(node);
|
|
@@ -50,7 +50,7 @@ class SVFArgument;
|
|
|
50
50
|
class SVFFunction;
|
|
51
51
|
class SVFType;
|
|
52
52
|
|
|
53
|
-
class
|
|
53
|
+
class SVFLLVMValue
|
|
54
54
|
{
|
|
55
55
|
friend class SVFIRWriter;
|
|
56
56
|
friend class SVFIRReader;
|
|
@@ -89,7 +89,7 @@ protected:
|
|
|
89
89
|
std::string name; ///< Short name of value for printing & debugging
|
|
90
90
|
std::string sourceLoc; ///< Source code information of this value
|
|
91
91
|
/// Constructor without name
|
|
92
|
-
|
|
92
|
+
SVFLLVMValue(const SVFType* ty, SVFValKind k)
|
|
93
93
|
: kind(k), ptrInUncalledFun(false),
|
|
94
94
|
constDataOrAggData(SVFConstData == k), type(ty), sourceLoc("NoLoc")
|
|
95
95
|
{
|
|
@@ -107,8 +107,8 @@ protected:
|
|
|
107
107
|
}
|
|
108
108
|
///@}
|
|
109
109
|
public:
|
|
110
|
-
|
|
111
|
-
virtual ~
|
|
110
|
+
SVFLLVMValue() = delete;
|
|
111
|
+
virtual ~SVFLLVMValue() = default;
|
|
112
112
|
|
|
113
113
|
/// Get the type of this SVFValue
|
|
114
114
|
inline GNodeK getKind() const
|
|
@@ -160,7 +160,7 @@ public:
|
|
|
160
160
|
|
|
161
161
|
/// Overloading operator << for dumping ICFG node ID
|
|
162
162
|
//@{
|
|
163
|
-
friend OutStream& operator<<(OutStream &os, const
|
|
163
|
+
friend OutStream& operator<<(OutStream &os, const SVFLLVMValue &value)
|
|
164
164
|
{
|
|
165
165
|
return os << value.toString();
|
|
166
166
|
}
|
|
@@ -169,7 +169,7 @@ public:
|
|
|
169
169
|
|
|
170
170
|
class ArgValVar;
|
|
171
171
|
|
|
172
|
-
class SVFFunction : public
|
|
172
|
+
class SVFFunction : public SVFLLVMValue
|
|
173
173
|
{
|
|
174
174
|
friend class LLVMModuleSet;
|
|
175
175
|
friend class SVFIRWriter;
|
|
@@ -225,7 +225,7 @@ public:
|
|
|
225
225
|
SVFFunction(void) = delete;
|
|
226
226
|
virtual ~SVFFunction();
|
|
227
227
|
|
|
228
|
-
static inline bool classof(const
|
|
228
|
+
static inline bool classof(const SVFLLVMValue *node)
|
|
229
229
|
{
|
|
230
230
|
return node->getKind() == SVFFunc;
|
|
231
231
|
}
|
|
@@ -399,7 +399,7 @@ public:
|
|
|
399
399
|
class ICFGNode;
|
|
400
400
|
class FunObjVar;
|
|
401
401
|
|
|
402
|
-
class SVFInstruction : public
|
|
402
|
+
class SVFInstruction : public SVFLLVMValue
|
|
403
403
|
{
|
|
404
404
|
friend class SVFIRWriter;
|
|
405
405
|
friend class SVFIRReader;
|
|
@@ -415,7 +415,7 @@ public:
|
|
|
415
415
|
bool isRet, SVFValKind k = SVFInst);
|
|
416
416
|
SVFInstruction(void) = delete;
|
|
417
417
|
|
|
418
|
-
static inline bool classof(const
|
|
418
|
+
static inline bool classof(const SVFLLVMValue *node)
|
|
419
419
|
{
|
|
420
420
|
return node->getKind() == SVFInst ||
|
|
421
421
|
node->getKind() == SVFCall ||
|
|
@@ -446,17 +446,17 @@ class SVFCallInst : public SVFInstruction
|
|
|
446
446
|
friend class SVFIRBuilder;
|
|
447
447
|
|
|
448
448
|
private:
|
|
449
|
-
std::vector<const
|
|
449
|
+
std::vector<const SVFLLVMValue*> args;
|
|
450
450
|
bool varArg;
|
|
451
|
-
const
|
|
451
|
+
const SVFLLVMValue* calledVal;
|
|
452
452
|
|
|
453
453
|
protected:
|
|
454
454
|
///@{ attributes to be set only through Module builders e.g., LLVMModule
|
|
455
|
-
inline void addArgument(const
|
|
455
|
+
inline void addArgument(const SVFLLVMValue* a)
|
|
456
456
|
{
|
|
457
457
|
args.push_back(a);
|
|
458
458
|
}
|
|
459
|
-
inline void setCalledOperand(const
|
|
459
|
+
inline void setCalledOperand(const SVFLLVMValue* v)
|
|
460
460
|
{
|
|
461
461
|
calledVal = v;
|
|
462
462
|
}
|
|
@@ -469,7 +469,7 @@ public:
|
|
|
469
469
|
}
|
|
470
470
|
SVFCallInst(void) = delete;
|
|
471
471
|
|
|
472
|
-
static inline bool classof(const
|
|
472
|
+
static inline bool classof(const SVFLLVMValue *node)
|
|
473
473
|
{
|
|
474
474
|
return node->getKind() == SVFCall || node->getKind() == SVFVCall;
|
|
475
475
|
}
|
|
@@ -485,7 +485,7 @@ public:
|
|
|
485
485
|
{
|
|
486
486
|
return args.empty();
|
|
487
487
|
}
|
|
488
|
-
inline const
|
|
488
|
+
inline const SVFLLVMValue* getArgOperand(u32_t i) const
|
|
489
489
|
{
|
|
490
490
|
assert(i < arg_size() && "out of bound access of the argument");
|
|
491
491
|
return args[i];
|
|
@@ -494,7 +494,7 @@ public:
|
|
|
494
494
|
{
|
|
495
495
|
return arg_size();
|
|
496
496
|
}
|
|
497
|
-
inline const
|
|
497
|
+
inline const SVFLLVMValue* getCalledOperand() const
|
|
498
498
|
{
|
|
499
499
|
return calledVal;
|
|
500
500
|
}
|
|
@@ -512,17 +512,17 @@ public:
|
|
|
512
512
|
}
|
|
513
513
|
};
|
|
514
514
|
|
|
515
|
-
class SVFConstant : public
|
|
515
|
+
class SVFConstant : public SVFLLVMValue
|
|
516
516
|
{
|
|
517
517
|
friend class SVFIRWriter;
|
|
518
518
|
friend class SVFIRReader;
|
|
519
519
|
public:
|
|
520
|
-
SVFConstant(const SVFType* ty, SVFValKind k = SVFConst):
|
|
520
|
+
SVFConstant(const SVFType* ty, SVFValKind k = SVFConst): SVFLLVMValue(ty, k)
|
|
521
521
|
{
|
|
522
522
|
}
|
|
523
523
|
SVFConstant() = delete;
|
|
524
524
|
|
|
525
|
-
static inline bool classof(const
|
|
525
|
+
static inline bool classof(const SVFLLVMValue *node)
|
|
526
526
|
{
|
|
527
527
|
return node->getKind() == SVFConst ||
|
|
528
528
|
node->getKind() == SVFGlob ||
|
|
@@ -542,16 +542,16 @@ class SVFGlobalValue : public SVFConstant
|
|
|
542
542
|
friend class LLVMModuleSet;
|
|
543
543
|
|
|
544
544
|
private:
|
|
545
|
-
const
|
|
545
|
+
const SVFLLVMValue* realDefGlobal; /// the definition of a function across multiple modules
|
|
546
546
|
|
|
547
547
|
protected:
|
|
548
|
-
inline void setDefGlobalForMultipleModule(const
|
|
548
|
+
inline void setDefGlobalForMultipleModule(const SVFLLVMValue* defg)
|
|
549
549
|
{
|
|
550
550
|
realDefGlobal = defg;
|
|
551
551
|
}
|
|
552
552
|
|
|
553
553
|
public:
|
|
554
|
-
SVFGlobalValue(const SVFType* ty): SVFConstant(ty,
|
|
554
|
+
SVFGlobalValue(const SVFType* ty): SVFConstant(ty, SVFLLVMValue::SVFGlob), realDefGlobal(nullptr)
|
|
555
555
|
{
|
|
556
556
|
}
|
|
557
557
|
SVFGlobalValue(std::string&& name, const SVFType* ty) : SVFGlobalValue(ty)
|
|
@@ -560,13 +560,13 @@ public:
|
|
|
560
560
|
}
|
|
561
561
|
SVFGlobalValue() = delete;
|
|
562
562
|
|
|
563
|
-
inline const
|
|
563
|
+
inline const SVFLLVMValue* getDefGlobalForMultipleModule() const
|
|
564
564
|
{
|
|
565
565
|
if(realDefGlobal==nullptr)
|
|
566
566
|
return this;
|
|
567
567
|
return realDefGlobal;
|
|
568
568
|
}
|
|
569
|
-
static inline bool classof(const
|
|
569
|
+
static inline bool classof(const SVFLLVMValue *node)
|
|
570
570
|
{
|
|
571
571
|
return node->getKind() == SVFGlob;
|
|
572
572
|
}
|
|
@@ -576,7 +576,7 @@ public:
|
|
|
576
576
|
}
|
|
577
577
|
};
|
|
578
578
|
|
|
579
|
-
class SVFArgument : public
|
|
579
|
+
class SVFArgument : public SVFLLVMValue
|
|
580
580
|
{
|
|
581
581
|
friend class SVFIRWriter;
|
|
582
582
|
friend class SVFIRReader;
|
|
@@ -587,7 +587,7 @@ private:
|
|
|
587
587
|
public:
|
|
588
588
|
SVFArgument(const SVFType* ty, const SVFFunction* fun, u32_t argNo,
|
|
589
589
|
bool uncalled)
|
|
590
|
-
:
|
|
590
|
+
: SVFLLVMValue(ty, SVFLLVMValue::SVFArg), fun(fun), argNo(argNo),
|
|
591
591
|
uncalled(uncalled)
|
|
592
592
|
{
|
|
593
593
|
}
|
|
@@ -610,7 +610,7 @@ public:
|
|
|
610
610
|
return uncalled;
|
|
611
611
|
}
|
|
612
612
|
|
|
613
|
-
static inline bool classof(const
|
|
613
|
+
static inline bool classof(const SVFLLVMValue *node)
|
|
614
614
|
{
|
|
615
615
|
return node->getKind() == SVFArg;
|
|
616
616
|
}
|
|
@@ -627,7 +627,7 @@ public:
|
|
|
627
627
|
}
|
|
628
628
|
SVFConstantData() = delete;
|
|
629
629
|
|
|
630
|
-
static inline bool classof(const
|
|
630
|
+
static inline bool classof(const SVFLLVMValue *node)
|
|
631
631
|
{
|
|
632
632
|
return node->getKind() == SVFConstData ||
|
|
633
633
|
node->getKind() == SVFConstInt ||
|
|
@@ -654,12 +654,12 @@ private:
|
|
|
654
654
|
s64_t sval;
|
|
655
655
|
public:
|
|
656
656
|
SVFConstantInt(const SVFType* ty, u64_t z, s64_t s)
|
|
657
|
-
: SVFConstantData(ty,
|
|
657
|
+
: SVFConstantData(ty, SVFLLVMValue::SVFConstInt), zval(z), sval(s)
|
|
658
658
|
{
|
|
659
659
|
}
|
|
660
660
|
SVFConstantInt() = delete;
|
|
661
661
|
|
|
662
|
-
static inline bool classof(const
|
|
662
|
+
static inline bool classof(const SVFLLVMValue *node)
|
|
663
663
|
{
|
|
664
664
|
return node->getKind() == SVFConstInt;
|
|
665
665
|
}
|
|
@@ -687,7 +687,7 @@ private:
|
|
|
687
687
|
float dval;
|
|
688
688
|
public:
|
|
689
689
|
SVFConstantFP(const SVFType* ty, double d)
|
|
690
|
-
: SVFConstantData(ty,
|
|
690
|
+
: SVFConstantData(ty, SVFLLVMValue::SVFConstFP), dval(d)
|
|
691
691
|
{
|
|
692
692
|
}
|
|
693
693
|
SVFConstantFP() = delete;
|
|
@@ -696,7 +696,7 @@ public:
|
|
|
696
696
|
{
|
|
697
697
|
return dval;
|
|
698
698
|
}
|
|
699
|
-
static inline bool classof(const
|
|
699
|
+
static inline bool classof(const SVFLLVMValue *node)
|
|
700
700
|
{
|
|
701
701
|
return node->getKind() == SVFConstFP;
|
|
702
702
|
}
|
|
@@ -713,12 +713,12 @@ class SVFConstantNullPtr : public SVFConstantData
|
|
|
713
713
|
|
|
714
714
|
public:
|
|
715
715
|
SVFConstantNullPtr(const SVFType* ty)
|
|
716
|
-
: SVFConstantData(ty,
|
|
716
|
+
: SVFConstantData(ty, SVFLLVMValue::SVFNullPtr)
|
|
717
717
|
{
|
|
718
718
|
}
|
|
719
719
|
SVFConstantNullPtr() = delete;
|
|
720
720
|
|
|
721
|
-
static inline bool classof(const
|
|
721
|
+
static inline bool classof(const SVFLLVMValue *node)
|
|
722
722
|
{
|
|
723
723
|
return node->getKind() == SVFNullPtr;
|
|
724
724
|
}
|
|
@@ -735,12 +735,12 @@ class SVFBlackHoleValue : public SVFConstantData
|
|
|
735
735
|
|
|
736
736
|
public:
|
|
737
737
|
SVFBlackHoleValue(const SVFType* ty)
|
|
738
|
-
: SVFConstantData(ty,
|
|
738
|
+
: SVFConstantData(ty, SVFLLVMValue::SVFBlackHole)
|
|
739
739
|
{
|
|
740
740
|
}
|
|
741
741
|
SVFBlackHoleValue() = delete;
|
|
742
742
|
|
|
743
|
-
static inline bool classof(const
|
|
743
|
+
static inline bool classof(const SVFLLVMValue *node)
|
|
744
744
|
{
|
|
745
745
|
return node->getKind() == SVFBlackHole;
|
|
746
746
|
}
|
|
@@ -750,18 +750,18 @@ public:
|
|
|
750
750
|
}
|
|
751
751
|
};
|
|
752
752
|
|
|
753
|
-
class SVFOtherValue : public
|
|
753
|
+
class SVFOtherValue : public SVFLLVMValue
|
|
754
754
|
{
|
|
755
755
|
friend class SVFIRWriter;
|
|
756
756
|
friend class SVFIRReader;
|
|
757
757
|
public:
|
|
758
|
-
SVFOtherValue(const SVFType* ty, SVFValKind k =
|
|
759
|
-
:
|
|
758
|
+
SVFOtherValue(const SVFType* ty, SVFValKind k = SVFLLVMValue::SVFOther)
|
|
759
|
+
: SVFLLVMValue(ty, k)
|
|
760
760
|
{
|
|
761
761
|
}
|
|
762
762
|
SVFOtherValue() = delete;
|
|
763
763
|
|
|
764
|
-
static inline bool classof(const
|
|
764
|
+
static inline bool classof(const SVFLLVMValue *node)
|
|
765
765
|
{
|
|
766
766
|
return node->getKind() == SVFOther || node->getKind() == SVFMetaAsValue;
|
|
767
767
|
}
|
|
@@ -776,12 +776,12 @@ class SVFMetadataAsValue : public SVFOtherValue
|
|
|
776
776
|
friend class SVFIRReader;
|
|
777
777
|
public:
|
|
778
778
|
SVFMetadataAsValue(const SVFType* ty)
|
|
779
|
-
: SVFOtherValue(ty,
|
|
779
|
+
: SVFOtherValue(ty, SVFLLVMValue::SVFMetaAsValue)
|
|
780
780
|
{
|
|
781
781
|
}
|
|
782
782
|
SVFMetadataAsValue() = delete;
|
|
783
783
|
|
|
784
|
-
static inline bool classof(const
|
|
784
|
+
static inline bool classof(const SVFLLVMValue *node)
|
|
785
785
|
{
|
|
786
786
|
return node->getKind() == SVFMetaAsValue;
|
|
787
787
|
}
|
|
@@ -796,7 +796,7 @@ public:
|
|
|
796
796
|
/// Converts an SVFValue to corresponding LLVM::Value, then get the string
|
|
797
797
|
/// representation of it. Use it only when you are debugging. Don't use
|
|
798
798
|
/// it in any SVF algorithm because it relies on information stored in LLVM bc.
|
|
799
|
-
std::string dumpLLVMValue(const
|
|
799
|
+
std::string dumpLLVMValue(const SVFLLVMValue* svfValue);
|
|
800
800
|
|
|
801
801
|
|
|
802
802
|
|
|
@@ -38,7 +38,7 @@ namespace SVF
|
|
|
38
38
|
{
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
class
|
|
41
|
+
class SVFValue
|
|
42
42
|
{
|
|
43
43
|
|
|
44
44
|
public:
|
|
@@ -149,7 +149,7 @@ public:
|
|
|
149
149
|
};
|
|
150
150
|
|
|
151
151
|
|
|
152
|
-
|
|
152
|
+
SVFValue(NodeID i, GNodeK k, const SVFType* ty = nullptr): id(i),nodeKind(k), type(ty)
|
|
153
153
|
{
|
|
154
154
|
|
|
155
155
|
}
|
|
@@ -177,7 +177,7 @@ public:
|
|
|
177
177
|
return isSVFVarKind(node->getNodeKind());
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
-
static inline bool classof(const
|
|
180
|
+
static inline bool classof(const SVFValue* node)
|
|
181
181
|
{
|
|
182
182
|
return isSVFVarKind(node->getNodeKind());
|
|
183
183
|
}
|
|
@@ -270,7 +270,7 @@ public:
|
|
|
270
270
|
{
|
|
271
271
|
return isValVarKinds(node->getNodeKind());
|
|
272
272
|
}
|
|
273
|
-
static inline bool classof(const
|
|
273
|
+
static inline bool classof(const SVFValue* node)
|
|
274
274
|
{
|
|
275
275
|
return isValVarKinds(node->getNodeKind());
|
|
276
276
|
}
|
|
@@ -328,7 +328,7 @@ public:
|
|
|
328
328
|
{
|
|
329
329
|
return isObjVarKinds(node->getNodeKind());
|
|
330
330
|
}
|
|
331
|
-
static inline bool classof(const
|
|
331
|
+
static inline bool classof(const SVFValue* node)
|
|
332
332
|
{
|
|
333
333
|
return isObjVarKinds(node->getNodeKind());
|
|
334
334
|
}
|
|
@@ -382,7 +382,7 @@ public:
|
|
|
382
382
|
{
|
|
383
383
|
return node->getNodeKind() == ArgValNode;
|
|
384
384
|
}
|
|
385
|
-
static inline bool classof(const
|
|
385
|
+
static inline bool classof(const SVFValue* node)
|
|
386
386
|
{
|
|
387
387
|
return node->getNodeKind() == ArgValNode;
|
|
388
388
|
}
|
|
@@ -454,7 +454,7 @@ public:
|
|
|
454
454
|
{
|
|
455
455
|
return node->getNodeKind() == SVFVar::GepValNode;
|
|
456
456
|
}
|
|
457
|
-
static inline bool classof(const
|
|
457
|
+
static inline bool classof(const SVFValue* node)
|
|
458
458
|
{
|
|
459
459
|
return node->getNodeKind() == SVFVar::GepValNode;
|
|
460
460
|
}
|
|
@@ -551,7 +551,7 @@ public:
|
|
|
551
551
|
{
|
|
552
552
|
return isBaseObjVarKinds(node->getNodeKind());
|
|
553
553
|
}
|
|
554
|
-
static inline bool classof(const
|
|
554
|
+
static inline bool classof(const SVFValue* node)
|
|
555
555
|
{
|
|
556
556
|
return isBaseObjVarKinds(node->getNodeKind());
|
|
557
557
|
}
|
|
@@ -754,7 +754,7 @@ public:
|
|
|
754
754
|
{
|
|
755
755
|
return node->getNodeKind() == SVFVar::GepObjNode;
|
|
756
756
|
}
|
|
757
|
-
static inline bool classof(const
|
|
757
|
+
static inline bool classof(const SVFValue* node)
|
|
758
758
|
{
|
|
759
759
|
return node->getNodeKind() == SVFVar::GepObjNode;
|
|
760
760
|
}
|
|
@@ -863,7 +863,7 @@ public:
|
|
|
863
863
|
{
|
|
864
864
|
return node->getNodeKind() == HeapObjNode;
|
|
865
865
|
}
|
|
866
|
-
static inline bool classof(const
|
|
866
|
+
static inline bool classof(const SVFValue* node)
|
|
867
867
|
{
|
|
868
868
|
return node->getNodeKind() == HeapObjNode;
|
|
869
869
|
}
|
|
@@ -926,7 +926,7 @@ public:
|
|
|
926
926
|
{
|
|
927
927
|
return node->getNodeKind() == StackObjNode;
|
|
928
928
|
}
|
|
929
|
-
static inline bool classof(const
|
|
929
|
+
static inline bool classof(const SVFValue* node)
|
|
930
930
|
{
|
|
931
931
|
return node->getNodeKind() == StackObjNode;
|
|
932
932
|
}
|
|
@@ -1006,7 +1006,7 @@ public:
|
|
|
1006
1006
|
{
|
|
1007
1007
|
return node->getNodeKind() == FunObjNode;
|
|
1008
1008
|
}
|
|
1009
|
-
static inline bool classof(const
|
|
1009
|
+
static inline bool classof(const SVFValue* node)
|
|
1010
1010
|
{
|
|
1011
1011
|
return node->getNodeKind() == FunObjNode;
|
|
1012
1012
|
}
|
|
@@ -1245,7 +1245,7 @@ public:
|
|
|
1245
1245
|
{
|
|
1246
1246
|
return node->getNodeKind() == FunValNode;
|
|
1247
1247
|
}
|
|
1248
|
-
static inline bool classof(const
|
|
1248
|
+
static inline bool classof(const SVFValue* node)
|
|
1249
1249
|
{
|
|
1250
1250
|
return node->getNodeKind() == FunValNode;
|
|
1251
1251
|
}
|
|
@@ -1294,7 +1294,7 @@ public:
|
|
|
1294
1294
|
{
|
|
1295
1295
|
return node->getNodeKind() == GlobalValNode;
|
|
1296
1296
|
}
|
|
1297
|
-
static inline bool classof(const
|
|
1297
|
+
static inline bool classof(const SVFValue* node)
|
|
1298
1298
|
{
|
|
1299
1299
|
return node->getNodeKind() == GlobalValNode;
|
|
1300
1300
|
}
|
|
@@ -1335,7 +1335,7 @@ public:
|
|
|
1335
1335
|
{
|
|
1336
1336
|
return node->getNodeKind() == ConstAggValNode;
|
|
1337
1337
|
}
|
|
1338
|
-
static inline bool classof(const
|
|
1338
|
+
static inline bool classof(const SVFValue* node)
|
|
1339
1339
|
{
|
|
1340
1340
|
return node->getNodeKind() == ConstAggValNode;
|
|
1341
1341
|
}
|
|
@@ -1387,7 +1387,7 @@ public:
|
|
|
1387
1387
|
{
|
|
1388
1388
|
return isConstantDataValVar(node->getNodeKind());
|
|
1389
1389
|
}
|
|
1390
|
-
static inline bool classof(const
|
|
1390
|
+
static inline bool classof(const SVFValue* node)
|
|
1391
1391
|
{
|
|
1392
1392
|
return isConstantDataValVar(node->getNodeKind());
|
|
1393
1393
|
}
|
|
@@ -1442,7 +1442,7 @@ public:
|
|
|
1442
1442
|
{
|
|
1443
1443
|
return node->getNodeKind() == BlackHoleValNode;
|
|
1444
1444
|
}
|
|
1445
|
-
static inline bool classof(const
|
|
1445
|
+
static inline bool classof(const SVFValue* node)
|
|
1446
1446
|
{
|
|
1447
1447
|
return node->getNodeKind() == BlackHoleValNode;
|
|
1448
1448
|
}
|
|
@@ -1496,7 +1496,7 @@ public:
|
|
|
1496
1496
|
{
|
|
1497
1497
|
return node->getNodeKind() == ConstFPValNode;
|
|
1498
1498
|
}
|
|
1499
|
-
static inline bool classof(const
|
|
1499
|
+
static inline bool classof(const SVFValue* node)
|
|
1500
1500
|
{
|
|
1501
1501
|
return node->getNodeKind() == ConstFPValNode;
|
|
1502
1502
|
}
|
|
@@ -1548,7 +1548,7 @@ public:
|
|
|
1548
1548
|
{
|
|
1549
1549
|
return node->getNodeKind() == ConstIntValNode;
|
|
1550
1550
|
}
|
|
1551
|
-
static inline bool classof(const
|
|
1551
|
+
static inline bool classof(const SVFValue* node)
|
|
1552
1552
|
{
|
|
1553
1553
|
return node->getNodeKind() == ConstIntValNode;
|
|
1554
1554
|
}
|
|
@@ -1602,7 +1602,7 @@ public:
|
|
|
1602
1602
|
{
|
|
1603
1603
|
return node->getNodeKind() == ConstNullptrValNode;
|
|
1604
1604
|
}
|
|
1605
|
-
static inline bool classof(const
|
|
1605
|
+
static inline bool classof(const SVFValue* node)
|
|
1606
1606
|
{
|
|
1607
1607
|
return node->getNodeKind() == ConstNullptrValNode;
|
|
1608
1608
|
}
|
|
@@ -1655,7 +1655,7 @@ public:
|
|
|
1655
1655
|
{
|
|
1656
1656
|
return node->getNodeKind() == GlobalObjNode;
|
|
1657
1657
|
}
|
|
1658
|
-
static inline bool classof(const
|
|
1658
|
+
static inline bool classof(const SVFValue* node)
|
|
1659
1659
|
{
|
|
1660
1660
|
return node->getNodeKind() == GlobalObjNode;
|
|
1661
1661
|
}
|
|
@@ -1701,7 +1701,7 @@ public:
|
|
|
1701
1701
|
{
|
|
1702
1702
|
return node->getNodeKind() == ConstAggObjNode;
|
|
1703
1703
|
}
|
|
1704
|
-
static inline bool classof(const
|
|
1704
|
+
static inline bool classof(const SVFValue* node)
|
|
1705
1705
|
{
|
|
1706
1706
|
return node->getNodeKind() == ConstAggObjNode;
|
|
1707
1707
|
}
|
|
@@ -1759,7 +1759,7 @@ public:
|
|
|
1759
1759
|
return isConstantDataObjVarKinds(node->getNodeKind());
|
|
1760
1760
|
}
|
|
1761
1761
|
|
|
1762
|
-
static inline bool classof(const
|
|
1762
|
+
static inline bool classof(const SVFValue* node)
|
|
1763
1763
|
{
|
|
1764
1764
|
return isConstantDataObjVarKinds(node->getNodeKind());
|
|
1765
1765
|
}
|
|
@@ -1826,7 +1826,7 @@ public:
|
|
|
1826
1826
|
return node->getNodeKind() == SVFVar::ConstFPObjNode;
|
|
1827
1827
|
}
|
|
1828
1828
|
|
|
1829
|
-
static inline bool classof(const
|
|
1829
|
+
static inline bool classof(const SVFValue* node)
|
|
1830
1830
|
{
|
|
1831
1831
|
return node->getNodeKind() == SVFVar::ConstFPObjNode;
|
|
1832
1832
|
}
|
|
@@ -1890,7 +1890,7 @@ public:
|
|
|
1890
1890
|
return node->getNodeKind() == SVFVar::ConstIntObjNode;
|
|
1891
1891
|
}
|
|
1892
1892
|
|
|
1893
|
-
static inline bool classof(const
|
|
1893
|
+
static inline bool classof(const SVFValue* node)
|
|
1894
1894
|
{
|
|
1895
1895
|
return node->getNodeKind() == SVFVar::ConstIntObjNode;
|
|
1896
1896
|
}
|
|
@@ -1956,7 +1956,7 @@ public:
|
|
|
1956
1956
|
return node->getNodeKind() == SVFVar::ConstNullptrObjNode;
|
|
1957
1957
|
}
|
|
1958
1958
|
|
|
1959
|
-
static inline bool classof(const
|
|
1959
|
+
static inline bool classof(const SVFValue* node)
|
|
1960
1960
|
{
|
|
1961
1961
|
return node->getNodeKind() == SVFVar::ConstNullptrObjNode;
|
|
1962
1962
|
}
|
|
@@ -2005,7 +2005,7 @@ public:
|
|
|
2005
2005
|
{
|
|
2006
2006
|
return node->getNodeKind() == SVFVar::RetValNode;
|
|
2007
2007
|
}
|
|
2008
|
-
static inline bool classof(const
|
|
2008
|
+
static inline bool classof(const SVFValue* node)
|
|
2009
2009
|
{
|
|
2010
2010
|
return node->getNodeKind() == SVFVar::RetValNode;
|
|
2011
2011
|
}
|
|
@@ -2062,7 +2062,7 @@ public:
|
|
|
2062
2062
|
{
|
|
2063
2063
|
return node->getNodeKind() == SVFVar::VarargValNode;
|
|
2064
2064
|
}
|
|
2065
|
-
static inline bool classof(const
|
|
2065
|
+
static inline bool classof(const SVFValue* node)
|
|
2066
2066
|
{
|
|
2067
2067
|
return node->getNodeKind() == SVFVar::VarargValNode;
|
|
2068
2068
|
}
|
|
@@ -2112,7 +2112,7 @@ public:
|
|
|
2112
2112
|
{
|
|
2113
2113
|
return node->getNodeKind() == SVFVar::DummyValNode;
|
|
2114
2114
|
}
|
|
2115
|
-
static inline bool classof(const
|
|
2115
|
+
static inline bool classof(const SVFValue* node)
|
|
2116
2116
|
{
|
|
2117
2117
|
return node->getNodeKind() == SVFVar::DummyValNode;
|
|
2118
2118
|
}
|
|
@@ -2173,7 +2173,7 @@ public:
|
|
|
2173
2173
|
return node->getNodeKind() == SVFVar::DummyObjNode;
|
|
2174
2174
|
}
|
|
2175
2175
|
|
|
2176
|
-
static inline bool classof(const
|
|
2176
|
+
static inline bool classof(const SVFValue* node)
|
|
2177
2177
|
{
|
|
2178
2178
|
return node->getNodeKind() == SVFVar::DummyObjNode;
|
|
2179
2179
|
}
|
|
Binary file
|
|
Binary file
|