svf-lib 1.0.1817 → 1.0.1819
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/svf/libSvfCore.a +0 -0
- package/SVF-linux/svf/include/MemoryModel/PointerAnalysis.h +0 -9
- package/SVF-linux/svf/include/Util/SVFStat.h +3 -0
- package/SVF-osx/Release-build/svf/libSvfCore.a +0 -0
- package/SVF-osx/Release-build/svf-llvm/libSvfLLVM.a +0 -0
- package/SVF-osx/svf/include/AbstractExecution/BoundedZ3Expr.h +0 -2
- package/SVF-osx/svf/include/AbstractExecution/ConsExeState.h +0 -8
- package/SVF-osx/svf/include/AbstractExecution/ExeState.h +0 -8
- package/SVF-osx/svf/include/AbstractExecution/IntervalExeState.h +0 -7
- package/SVF-osx/svf/include/AbstractExecution/IntervalValue.h +0 -3
- package/SVF-osx/svf/include/AbstractExecution/NumericLiteral.h +0 -2
- package/SVF-osx/svf/include/AbstractExecution/RelExeState.h +0 -1
- package/SVF-osx/svf/include/AbstractExecution/RelationSolver.h +0 -1
- package/SVF-osx/svf/include/AbstractExecution/SVFIR2ConsExeState.h +0 -1
- package/SVF-osx/svf/include/AbstractExecution/SVFIR2ItvExeState.h +0 -4
- package/SVF-osx/svf/include/AbstractExecution/SingleAbsValue.h +0 -2
- package/SVF-osx/svf/include/AbstractExecution/SymState.h +0 -4
- package/SVF-osx/svf/include/AbstractExecution/WTO.h +0 -5
- package/SVF-osx/svf/include/CFL/CFGrammar.h +0 -4
- package/SVF-osx/svf/include/CFL/CFLAlias.h +0 -1
- package/SVF-osx/svf/include/CFL/CFLGraphBuilder.h +0 -1
- package/SVF-osx/svf/include/CFL/CFLStat.h +0 -1
- package/SVF-osx/svf/include/CFL/CFLVF.h +0 -1
- package/SVF-osx/svf/include/DDA/ContextDDA.h +0 -1
- package/SVF-osx/svf/include/DDA/DDAClient.h +0 -5
- package/SVF-osx/svf/include/DDA/DDAPass.h +0 -1
- package/SVF-osx/svf/include/FastCluster/fastcluster.h +0 -1
- package/SVF-osx/svf/include/Graphs/CDG.h +0 -3
- package/SVF-osx/svf/include/Graphs/CFBasicBlockG.h +0 -3
- package/SVF-osx/svf/include/Graphs/CFLGraph.h +0 -1
- package/SVF-osx/svf/include/Graphs/CHG.h +2 -4
- package/SVF-osx/svf/include/Graphs/ConsGEdge.h +0 -5
- package/SVF-osx/svf/include/Graphs/ConsGNode.h +0 -1
- package/SVF-osx/svf/include/Graphs/DOTGraphTraits.h +0 -1
- package/SVF-osx/svf/include/Graphs/GenericGraph.h +0 -1
- package/SVF-osx/svf/include/Graphs/GraphPrinter.h +0 -3
- package/SVF-osx/svf/include/Graphs/GraphTraits.h +2 -2
- package/SVF-osx/svf/include/Graphs/ICFG.h +0 -1
- package/SVF-osx/svf/include/Graphs/ICFGNode.h +0 -3
- package/SVF-osx/svf/include/Graphs/ICFGStat.h +0 -2
- package/SVF-osx/svf/include/Graphs/IRGraph.h +0 -1
- package/SVF-osx/svf/include/Graphs/PTACallGraph.h +0 -3
- package/SVF-osx/svf/include/Graphs/SVFG.h +0 -2
- package/SVF-osx/svf/include/Graphs/SVFGEdge.h +0 -1
- package/SVF-osx/svf/include/Graphs/SVFGNode.h +0 -7
- package/SVF-osx/svf/include/Graphs/SVFGOPT.h +0 -3
- package/SVF-osx/svf/include/Graphs/SVFGStat.h +0 -2
- package/SVF-osx/svf/include/Graphs/ThreadCallGraph.h +0 -3
- package/SVF-osx/svf/include/Graphs/VFG.h +0 -2
- package/SVF-osx/svf/include/Graphs/VFGEdge.h +0 -3
- package/SVF-osx/svf/include/Graphs/VFGNode.h +0 -8
- package/SVF-osx/svf/include/MSSA/MSSAMuChi.h +0 -4
- package/SVF-osx/svf/include/MSSA/MemPartition.h +0 -1
- package/SVF-osx/svf/include/MSSA/MemRegion.h +0 -1
- package/SVF-osx/svf/include/MSSA/MemSSA.h +0 -1
- package/SVF-osx/svf/include/MTA/FSMPTA.h +0 -6
- package/SVF-osx/svf/include/MTA/LockAnalysis.h +0 -5
- package/SVF-osx/svf/include/MTA/MHP.h +0 -3
- package/SVF-osx/svf/include/MTA/MTA.h +0 -1
- package/SVF-osx/svf/include/MTA/MTAResultValidator.h +0 -2
- package/SVF-osx/svf/include/MTA/TCT.h +0 -1
- package/SVF-osx/svf/include/MemoryModel/AbstractPointsToDS.h +0 -2
- package/SVF-osx/svf/include/MemoryModel/AccessPath.h +0 -5
- package/SVF-osx/svf/include/MemoryModel/ConditionalPT.h +0 -5
- package/SVF-osx/svf/include/MemoryModel/PersistentPointsToDS.h +0 -1
- package/SVF-osx/svf/include/MemoryModel/PointerAnalysis.h +0 -10
- package/SVF-osx/svf/include/MemoryModel/PointerAnalysisImpl.h +0 -1
- package/SVF-osx/svf/include/MemoryModel/PointsTo.h +0 -1
- package/SVF-osx/svf/include/SABER/DoubleFreeChecker.h +0 -1
- package/SVF-osx/svf/include/SABER/ProgSlice.h +0 -1
- package/SVF-osx/svf/include/SABER/SaberCondAllocator.h +0 -4
- package/SVF-osx/svf/include/SABER/SaberSVFGBuilder.h +0 -1
- package/SVF-osx/svf/include/SVFIR/SVFIR.h +0 -2
- package/SVF-osx/svf/include/SVFIR/SVFStatements.h +0 -2
- package/SVF-osx/svf/include/SVFIR/SVFType.h +0 -2
- package/SVF-osx/svf/include/SVFIR/SVFValue.h +0 -3
- package/SVF-osx/svf/include/SVFIR/SVFVariables.h +0 -5
- package/SVF-osx/svf/include/SVFIR/SymbolTableInfo.h +0 -5
- package/SVF-osx/svf/include/Util/CDGBuilder.h +0 -8
- package/SVF-osx/svf/include/Util/CallGraphBuilder.h +0 -2
- package/SVF-osx/svf/include/Util/Casting.h +1 -2
- package/SVF-osx/svf/include/Util/CommandLine.h +0 -1
- package/SVF-osx/svf/include/Util/CxtStmt.h +0 -4
- package/SVF-osx/svf/include/Util/DPItem.h +0 -2
- package/SVF-osx/svf/include/Util/NodeIDAllocator.h +2 -2
- package/SVF-osx/svf/include/Util/PTAStat.h +0 -1
- package/SVF-osx/svf/include/Util/SCC.h +0 -2
- package/SVF-osx/svf/include/Util/SVFBugReport.h +0 -1
- package/SVF-osx/svf/include/Util/SVFStat.h +3 -1
- package/SVF-osx/svf/include/Util/SVFUtil.h +0 -1
- package/SVF-osx/svf/include/Util/ThreadAPI.h +0 -1
- package/SVF-osx/svf/include/Util/WorkList.h +0 -1
- package/SVF-osx/svf/include/Util/Z3Expr.h +0 -4
- package/SVF-osx/svf/include/Util/iterator.h +2 -2
- package/SVF-osx/svf/include/WPA/Andersen.h +0 -6
- package/SVF-osx/svf/include/WPA/AndersenPWC.h +0 -3
- package/SVF-osx/svf/include/WPA/WPAFSSolver.h +0 -5
- package/SVF-osx/svf/include/WPA/WPAPass.h +0 -2
- package/SVF-osx/svf/include/WPA/WPASolver.h +0 -2
- package/SVF-osx/svf/include/WPA/WPAStat.h +0 -1
- package/SVF-osx/svf-llvm/include/SVF-LLVM/BreakConstantExpr.h +0 -1
- package/SVF-osx/svf-llvm/include/SVF-LLVM/DCHG.h +0 -1
- package/SVF-osx/svf-llvm/include/SVF-LLVM/GEPTypeBridgeIterator.h +0 -3
- package/SVF-osx/svf-llvm/include/SVF-LLVM/LLVMModule.h +0 -1
- package/SVF-osx/svf-llvm/include/SVF-LLVM/LLVMUtil.h +0 -1
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVFIRBuilder.h +0 -1
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SymbolTableBuilder.h +0 -1
- package/package.json +1 -1
|
@@ -36,7 +36,6 @@
|
|
|
36
36
|
#include "Graphs/SVFG.h"
|
|
37
37
|
#include "Util/Z3Expr.h"
|
|
38
38
|
|
|
39
|
-
|
|
40
39
|
namespace SVF
|
|
41
40
|
{
|
|
42
41
|
|
|
@@ -58,7 +57,6 @@ public:
|
|
|
58
57
|
typedef FIFOWorkList<const SVFBasicBlock*> CFWorkList; ///< worklist for control-flow guard computation
|
|
59
58
|
typedef Map<const SVFGNode*, Set<const SVFGNode*>> SVFGNodeToSVFGNodeSetMap;
|
|
60
59
|
|
|
61
|
-
|
|
62
60
|
/// Constructor
|
|
63
61
|
SaberCondAllocator();
|
|
64
62
|
|
|
@@ -233,7 +231,6 @@ public:
|
|
|
233
231
|
}
|
|
234
232
|
//@}
|
|
235
233
|
|
|
236
|
-
|
|
237
234
|
/// mark neg Z3 expression
|
|
238
235
|
inline void setNegCondInst(const Condition &condition, const SVFInstruction* inst)
|
|
239
236
|
{
|
|
@@ -298,7 +295,6 @@ private:
|
|
|
298
295
|
/// extract subexpression from a Z3 expression
|
|
299
296
|
void extractSubConds(const Condition &condition, NodeBS &support) const;
|
|
300
297
|
|
|
301
|
-
|
|
302
298
|
FunToExitBBsMap funToExitBBsMap; ///< map a function to all its basic blocks calling program exit
|
|
303
299
|
BBToCondMap bbToCondMap; ///< map a basic block to its path condition starting from root
|
|
304
300
|
const SVFGNode* curEvalSVFGNode{}; ///< current llvm value to evaluate branch condition when computing guards
|
|
@@ -300,7 +300,6 @@ public:
|
|
|
300
300
|
return getPointerToTy;
|
|
301
301
|
}
|
|
302
302
|
|
|
303
|
-
|
|
304
303
|
inline void setTypeInfo(StInfo* ti)
|
|
305
304
|
{
|
|
306
305
|
typeinfo = ti;
|
|
@@ -503,7 +502,6 @@ public:
|
|
|
503
502
|
numOfElement = elemNum;
|
|
504
503
|
}
|
|
505
504
|
|
|
506
|
-
|
|
507
505
|
};
|
|
508
506
|
|
|
509
507
|
class SVFOtherType : public SVFType
|
|
@@ -40,7 +40,6 @@ namespace SVF
|
|
|
40
40
|
/// LLVM Aliases and constants
|
|
41
41
|
typedef SVF::GraphPrinter GraphPrinter;
|
|
42
42
|
|
|
43
|
-
|
|
44
43
|
class SVFInstruction;
|
|
45
44
|
class SVFBasicBlock;
|
|
46
45
|
class SVFArgument;
|
|
@@ -135,7 +134,6 @@ public:
|
|
|
135
134
|
return bb2PIdom;
|
|
136
135
|
}
|
|
137
136
|
|
|
138
|
-
|
|
139
137
|
inline Map<const SVFBasicBlock*,BBSet>& getDomTreeMap()
|
|
140
138
|
{
|
|
141
139
|
return dtBBsMap;
|
|
@@ -1104,7 +1102,6 @@ public:
|
|
|
1104
1102
|
}
|
|
1105
1103
|
};
|
|
1106
1104
|
|
|
1107
|
-
|
|
1108
1105
|
class CallSite
|
|
1109
1106
|
{
|
|
1110
1107
|
friend class SVFIRReader;
|
|
@@ -73,7 +73,6 @@ public:
|
|
|
73
73
|
DummyObjNode,
|
|
74
74
|
};
|
|
75
75
|
|
|
76
|
-
|
|
77
76
|
protected:
|
|
78
77
|
const SVFValue* value; ///< value of this SVFIR node
|
|
79
78
|
SVFStmt::KindToSVFStmtMapTy InEdgeKindToSetMap;
|
|
@@ -254,8 +253,6 @@ public:
|
|
|
254
253
|
//@}
|
|
255
254
|
};
|
|
256
255
|
|
|
257
|
-
|
|
258
|
-
|
|
259
256
|
/*
|
|
260
257
|
* Value (Pointer) variable
|
|
261
258
|
*/
|
|
@@ -371,7 +368,6 @@ public:
|
|
|
371
368
|
virtual const std::string toString() const;
|
|
372
369
|
};
|
|
373
370
|
|
|
374
|
-
|
|
375
371
|
/*
|
|
376
372
|
* Gep Value (Pointer) variable, this variable can be dynamic generated for field sensitive analysis
|
|
377
373
|
* e.g. memcpy, temp gep value variable needs to be created
|
|
@@ -440,7 +436,6 @@ public:
|
|
|
440
436
|
virtual const std::string toString() const;
|
|
441
437
|
};
|
|
442
438
|
|
|
443
|
-
|
|
444
439
|
/*
|
|
445
440
|
* Gep Obj variable, this is dynamic generated for field sensitive analysis
|
|
446
441
|
* Each gep obj variable is one field of a MemObj (base)
|
|
@@ -30,7 +30,6 @@
|
|
|
30
30
|
#ifndef INCLUDE_SVFIR_SYMBOLTABLEINFO_H_
|
|
31
31
|
#define INCLUDE_SVFIR_SYMBOLTABLEINFO_H_
|
|
32
32
|
|
|
33
|
-
|
|
34
33
|
#include "Util/SVFUtil.h"
|
|
35
34
|
#include "MemoryModel/AccessPath.h"
|
|
36
35
|
#include "SVFIR/SVFModule.h"
|
|
@@ -242,7 +241,6 @@ public:
|
|
|
242
241
|
}
|
|
243
242
|
//@}
|
|
244
243
|
|
|
245
|
-
|
|
246
244
|
/// Statistics
|
|
247
245
|
//@{
|
|
248
246
|
inline u32_t getTotalSymNum() const
|
|
@@ -373,7 +371,6 @@ protected:
|
|
|
373
371
|
Set<const StInfo*> stInfos;
|
|
374
372
|
};
|
|
375
373
|
|
|
376
|
-
|
|
377
374
|
/*!
|
|
378
375
|
* Memory object symbols or MemObj (address-taken variables in LLVM-based languages)
|
|
379
376
|
*/
|
|
@@ -444,7 +441,6 @@ public:
|
|
|
444
441
|
/// Check if byte size is a const value
|
|
445
442
|
bool isConstantByteSize() const;
|
|
446
443
|
|
|
447
|
-
|
|
448
444
|
/// object attributes methods
|
|
449
445
|
//@{
|
|
450
446
|
bool isFunction() const;
|
|
@@ -647,7 +643,6 @@ public:
|
|
|
647
643
|
//@}
|
|
648
644
|
};
|
|
649
645
|
|
|
650
|
-
|
|
651
646
|
} // End namespace SVF
|
|
652
647
|
|
|
653
648
|
#endif /* INCLUDE_SVFIR_SYMBOLTABLEINFO_H_ */
|
|
@@ -60,11 +60,8 @@ public:
|
|
|
60
60
|
/// build map at icfg node level
|
|
61
61
|
void buildICFGNodeControlMap();
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
|
|
65
63
|
private:
|
|
66
64
|
|
|
67
|
-
|
|
68
65
|
/// extract basic block edges to be processed
|
|
69
66
|
static void
|
|
70
67
|
extractBBS(const SVFFunction *func,
|
|
@@ -75,17 +72,14 @@ private:
|
|
|
75
72
|
extractNodesBetweenPdomNodes(const SVFBasicBlock *succ, const SVFBasicBlock *LCA,
|
|
76
73
|
std::vector<const SVFBasicBlock *> &tgtNodes);
|
|
77
74
|
|
|
78
|
-
|
|
79
75
|
void dfsNodesBetweenPdomNodes(const SVFBasicBlock *cur,
|
|
80
76
|
const SVFBasicBlock *tgt,
|
|
81
77
|
std::vector<const SVFBasicBlock *> &path,
|
|
82
78
|
std::vector<const SVFBasicBlock *> &tgtNodes,
|
|
83
79
|
SVFLoopAndDomInfo *ld);
|
|
84
80
|
|
|
85
|
-
|
|
86
81
|
s64_t getBBSuccessorBranchID(const SVFBasicBlock *BB, const SVFBasicBlock *Succ);
|
|
87
82
|
|
|
88
|
-
|
|
89
83
|
/// update map
|
|
90
84
|
inline void updateMap(const SVFBasicBlock *pred, const SVFBasicBlock *bb, s32_t pos)
|
|
91
85
|
{
|
|
@@ -93,7 +87,6 @@ private:
|
|
|
93
87
|
_svfdependentOnMap[bb][pred].insert(pos);
|
|
94
88
|
}
|
|
95
89
|
|
|
96
|
-
|
|
97
90
|
private:
|
|
98
91
|
CDG *_controlDG;
|
|
99
92
|
Map<const SVFBasicBlock *, Map<const SVFBasicBlock *, Set<s32_t>>> _svfcontrolMap; ///< map a basicblock to its controlling BBs (position, set of BBs)
|
|
@@ -103,5 +96,4 @@ private:
|
|
|
103
96
|
};
|
|
104
97
|
}
|
|
105
98
|
|
|
106
|
-
|
|
107
99
|
#endif //SVF_CDGBUILDER_H
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
#ifndef INCLUDE_UTIL_CASTING_H_
|
|
9
9
|
#define INCLUDE_UTIL_CASTING_H_
|
|
10
10
|
|
|
11
|
-
|
|
12
11
|
//===- llvm/Support/Casting.h - Allow flexible, checked, casts --*- C++ -*-===//
|
|
13
12
|
//
|
|
14
13
|
// The LLVM Compiler Infrastructure
|
|
@@ -382,7 +381,7 @@ inline typename cast_retty<X, Y *>::ret_type cast(Y *Val)
|
|
|
382
381
|
|
|
383
382
|
template <class X, class Y>
|
|
384
383
|
inline typename cast_retty<X, std::unique_ptr<Y>>::ret_type
|
|
385
|
-
cast(std::unique_ptr<Y> &&Val)
|
|
384
|
+
cast(std::unique_ptr<Y> &&Val)
|
|
386
385
|
{
|
|
387
386
|
assert(SVFUtil::isa<X>(Val.get()) && "cast<Ty>() argument of incompatible type!");
|
|
388
387
|
using ret_type = typename cast_retty<X, std::unique_ptr<Y>>::ret_type;
|
|
@@ -116,7 +116,6 @@ protected:
|
|
|
116
116
|
const SVFInstruction* inst;
|
|
117
117
|
};
|
|
118
118
|
|
|
119
|
-
|
|
120
119
|
/*!
|
|
121
120
|
* Context-sensitive thread statement <t,c,s>
|
|
122
121
|
*/
|
|
@@ -181,7 +180,6 @@ private:
|
|
|
181
180
|
NodeID tid;
|
|
182
181
|
};
|
|
183
182
|
|
|
184
|
-
|
|
185
183
|
/*!
|
|
186
184
|
* Context-sensitive thread <c,t>
|
|
187
185
|
*/
|
|
@@ -299,7 +297,6 @@ protected:
|
|
|
299
297
|
bool incycle;
|
|
300
298
|
};
|
|
301
299
|
|
|
302
|
-
|
|
303
300
|
/*!
|
|
304
301
|
* Context-sensitive procedure <c,m>
|
|
305
302
|
* c represent current context
|
|
@@ -385,7 +382,6 @@ protected:
|
|
|
385
382
|
const SVFFunction* fun;
|
|
386
383
|
};
|
|
387
384
|
|
|
388
|
-
|
|
389
385
|
/*!
|
|
390
386
|
* Context-sensitive procedure <t,c,m>
|
|
391
387
|
* t represent current thread during traversing
|
|
@@ -192,8 +192,8 @@ public:
|
|
|
192
192
|
|
|
193
193
|
// From all the candidates, returns the best mapping for pointsToSets (points-to set -> # occurrences).
|
|
194
194
|
static inline std::pair<hclust_fast_methods, std::vector<NodeID>> determineBestMapping(
|
|
195
|
-
|
|
196
|
-
|
|
195
|
+
const std::vector<std::pair<hclust_fast_methods, std::vector<NodeID>>> &candidates,
|
|
196
|
+
Map<PointsTo, unsigned> pointsToSets, const std::string &evalSubtitle, double &evalTime);
|
|
197
197
|
|
|
198
198
|
};
|
|
199
199
|
};
|
|
@@ -121,7 +121,6 @@ public:
|
|
|
121
121
|
_I(0)
|
|
122
122
|
{}
|
|
123
123
|
|
|
124
|
-
|
|
125
124
|
// Return a handle to the stack of nodes in topological
|
|
126
125
|
// order. This will be used to seed the initial solution
|
|
127
126
|
// and improve efficiency.
|
|
@@ -144,7 +143,6 @@ public:
|
|
|
144
143
|
return rep!= UINT_MAX ? rep : n ;
|
|
145
144
|
}
|
|
146
145
|
|
|
147
|
-
|
|
148
146
|
/// whether the node is in a cycle
|
|
149
147
|
inline bool isInCycle(NodeID n) const
|
|
150
148
|
{
|
|
@@ -33,7 +33,6 @@
|
|
|
33
33
|
namespace SVF
|
|
34
34
|
{
|
|
35
35
|
|
|
36
|
-
|
|
37
36
|
/*!
|
|
38
37
|
* Pointer Analysis Statistics
|
|
39
38
|
*/
|
|
@@ -70,6 +69,9 @@ public:
|
|
|
70
69
|
/// Default call for getClk is unmarked, while MarkedClocksOnly is false by default.
|
|
71
70
|
static double getClk(bool mark = false);
|
|
72
71
|
|
|
72
|
+
/// SVF's general statistics are only printed once even if you run multiple anayses
|
|
73
|
+
static bool printGeneralStats;
|
|
74
|
+
|
|
73
75
|
NUMStatMap generalNumMap;
|
|
74
76
|
NUMStatMap PTNumStatMap;
|
|
75
77
|
TIMEStatMap timeStatMap;
|
|
@@ -93,7 +93,6 @@ public:
|
|
|
93
93
|
/// release z3 solver
|
|
94
94
|
static void releaseSolver();
|
|
95
95
|
|
|
96
|
-
|
|
97
96
|
/// null expression
|
|
98
97
|
static z3::expr nullExpr()
|
|
99
98
|
{
|
|
@@ -273,7 +272,6 @@ public:
|
|
|
273
272
|
/// output Z3 expression as a string
|
|
274
273
|
static std::string dumpStr(const Z3Expr &z3Expr);
|
|
275
274
|
|
|
276
|
-
|
|
277
275
|
/// get the number of subexpression of a Z3 expression
|
|
278
276
|
static u32_t getExprSize(const Z3Expr &z3Expr);
|
|
279
277
|
|
|
@@ -283,7 +281,6 @@ public:
|
|
|
283
281
|
return getContext().bool_val(true);
|
|
284
282
|
}
|
|
285
283
|
|
|
286
|
-
|
|
287
284
|
/// Return the unique false condition
|
|
288
285
|
static inline Z3Expr getFalseCond()
|
|
289
286
|
{
|
|
@@ -315,4 +312,3 @@ struct std::hash<SVF::Z3Expr>
|
|
|
315
312
|
};
|
|
316
313
|
|
|
317
314
|
#endif //Z3_EXAMPLE_Z3EXPR_H
|
|
318
|
-
|
|
@@ -352,7 +352,7 @@ struct pointee_iter
|
|
|
352
352
|
template <typename RangeT, typename WrappedIteratorT =
|
|
353
353
|
decltype(std::begin(std::declval<RangeT>()))>
|
|
354
354
|
iter_range<pointee_iter<WrappedIteratorT>>
|
|
355
|
-
make_pointee_range(RangeT &&Range)
|
|
355
|
+
make_pointee_range(RangeT &&Range)
|
|
356
356
|
{
|
|
357
357
|
using PointeeIteratorT = pointee_iter<WrappedIteratorT>;
|
|
358
358
|
return make_range(PointeeIteratorT(std::begin(std::forward<RangeT>(Range))),
|
|
@@ -388,7 +388,7 @@ public:
|
|
|
388
388
|
template <typename RangeT, typename WrappedIteratorT =
|
|
389
389
|
decltype(std::begin(std::declval<RangeT>()))>
|
|
390
390
|
iter_range<pointer_iterator<WrappedIteratorT>>
|
|
391
|
-
make_pointer_range(RangeT &&Range)
|
|
391
|
+
make_pointer_range(RangeT &&Range)
|
|
392
392
|
{
|
|
393
393
|
using PointerIteratorT = pointer_iterator<WrappedIteratorT>;
|
|
394
394
|
return make_range(PointerIteratorT(std::begin(std::forward<RangeT>(Range))),
|
|
@@ -156,7 +156,6 @@ protected:
|
|
|
156
156
|
class Andersen: public AndersenBase
|
|
157
157
|
{
|
|
158
158
|
|
|
159
|
-
|
|
160
159
|
public:
|
|
161
160
|
typedef SCCDetection<ConstraintGraph*> CGSCC;
|
|
162
161
|
typedef OrderedMap<CallSite, NodeID> CallSite2DummyValPN;
|
|
@@ -232,7 +231,6 @@ public:
|
|
|
232
231
|
return getPTDataTy()->unionPts(id,ptd);
|
|
233
232
|
}
|
|
234
233
|
|
|
235
|
-
|
|
236
234
|
void dumpTopLevelPtsTo();
|
|
237
235
|
|
|
238
236
|
void setDetectPWC(bool flag)
|
|
@@ -341,8 +339,6 @@ protected:
|
|
|
341
339
|
/// SCC detection
|
|
342
340
|
virtual NodeStack& SCCDetect();
|
|
343
341
|
|
|
344
|
-
|
|
345
|
-
|
|
346
342
|
/// Sanitize pts for field insensitive objects
|
|
347
343
|
void sanitizePts()
|
|
348
344
|
{
|
|
@@ -376,8 +372,6 @@ protected:
|
|
|
376
372
|
virtual void cluster(void) const;
|
|
377
373
|
};
|
|
378
374
|
|
|
379
|
-
|
|
380
|
-
|
|
381
375
|
/**
|
|
382
376
|
* Wave propagation with diff points-to set.
|
|
383
377
|
*/
|
|
@@ -30,7 +30,6 @@
|
|
|
30
30
|
#ifndef PROJECT_ANDERSENSFR_H
|
|
31
31
|
#define PROJECT_ANDERSENSFR_H
|
|
32
32
|
|
|
33
|
-
|
|
34
33
|
#include "WPA/Andersen.h"
|
|
35
34
|
#include "WPA/CSC.h"
|
|
36
35
|
#include "MemoryModel/PointsTo.h"
|
|
@@ -94,8 +93,6 @@ protected:
|
|
|
94
93
|
|
|
95
94
|
};
|
|
96
95
|
|
|
97
|
-
|
|
98
|
-
|
|
99
96
|
/*!
|
|
100
97
|
* Selective Cycle Detection with Stride-based Field Representation
|
|
101
98
|
*/
|
|
@@ -32,7 +32,6 @@
|
|
|
32
32
|
*
|
|
33
33
|
*/
|
|
34
34
|
|
|
35
|
-
|
|
36
35
|
#ifndef WPAFSSOLVER_H_
|
|
37
36
|
#define WPAFSSOLVER_H_
|
|
38
37
|
|
|
@@ -98,8 +97,6 @@ protected:
|
|
|
98
97
|
}
|
|
99
98
|
};
|
|
100
99
|
|
|
101
|
-
|
|
102
|
-
|
|
103
100
|
/*!
|
|
104
101
|
* Solver based on SCC cycles.
|
|
105
102
|
*/
|
|
@@ -171,8 +168,6 @@ protected:
|
|
|
171
168
|
NodeID curSCCID; ///< index of current SCC.
|
|
172
169
|
};
|
|
173
170
|
|
|
174
|
-
|
|
175
|
-
|
|
176
171
|
/*!
|
|
177
172
|
* Only solve nodes which need to be analyzed.
|
|
178
173
|
*/
|
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
//
|
|
21
21
|
//===----------------------------------------------------------------------===//
|
|
22
22
|
|
|
23
|
-
|
|
24
23
|
/*
|
|
25
24
|
* WPASolver.h
|
|
26
25
|
*
|
|
@@ -172,7 +171,6 @@ protected:
|
|
|
172
171
|
/// print out statistics for i-th iteration
|
|
173
172
|
u32_t iterationForPrintStat;
|
|
174
173
|
|
|
175
|
-
|
|
176
174
|
/// Get node on the graph
|
|
177
175
|
inline GNODE* Node(NodeID id)
|
|
178
176
|
{
|
|
@@ -447,7 +447,6 @@ private:
|
|
|
447
447
|
return nullptr;
|
|
448
448
|
}
|
|
449
449
|
|
|
450
|
-
|
|
451
450
|
/// Creates an edge between from t1 to t2.
|
|
452
451
|
DCHEdge* addEdge(const DIType* t1, const DIType* t2, DCHEdge::GEdgeKind et);
|
|
453
452
|
/// Returns the edge between t1 and t2 if it exists, returns nullptr otherwise.
|
|
@@ -100,7 +100,6 @@ public:
|
|
|
100
100
|
return const_cast<Value*>(&**OpIt);
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
|
|
104
103
|
generic_bridge_gep_type_iterator& operator++()
|
|
105
104
|
{
|
|
106
105
|
if ( CurTy.getInt() )
|
|
@@ -133,7 +132,6 @@ public:
|
|
|
133
132
|
return *this;
|
|
134
133
|
}
|
|
135
134
|
|
|
136
|
-
|
|
137
135
|
generic_bridge_gep_type_iterator operator++(int)
|
|
138
136
|
{
|
|
139
137
|
generic_bridge_gep_type_iterator tmp = *this;
|
|
@@ -143,7 +141,6 @@ public:
|
|
|
143
141
|
|
|
144
142
|
};
|
|
145
143
|
|
|
146
|
-
|
|
147
144
|
typedef generic_bridge_gep_type_iterator<> bridge_gep_iterator;
|
|
148
145
|
|
|
149
146
|
inline bridge_gep_iterator bridge_gep_begin(const User* GEP)
|