svf-tools 1.0.474 → 1.0.475

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.
Files changed (198) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +8 -7
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +2 -2
  4. package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -1
  5. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +2 -2
  6. package/SVF-doxygen/html/html/CHGBuilder_8cpp.html +2 -2
  7. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +20 -19
  8. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +15 -15
  9. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +2 -2
  10. package/SVF-doxygen/html/html/Casting_8h_source.html +1 -1
  11. package/SVF-doxygen/html/html/ConsG_8h_source.html +1 -1
  12. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
  13. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
  14. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
  15. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +4 -4
  18. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +3 -3
  19. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +2 -2
  22. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +11 -10
  23. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
  26. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +11 -10
  27. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +7 -7
  28. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
  29. package/SVF-doxygen/html/html/IRGraph_8h_source.html +3 -3
  30. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +24 -24
  31. package/SVF-doxygen/html/html/LLVMUtil_8h.html +111 -111
  32. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +41 -40
  33. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +11 -10
  34. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +8 -8
  35. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +14 -13
  36. package/SVF-doxygen/html/html/LocationSet_8h_source.html +9 -9
  37. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +31 -30
  38. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +23 -23
  39. package/SVF-doxygen/html/html/MHP_8h_source.html +2 -2
  40. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
  41. package/SVF-doxygen/html/html/MTA_8cpp_source.html +2 -2
  42. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  43. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +35 -34
  44. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +28 -27
  45. package/SVF-doxygen/html/html/MemSSA_8h_source.html +19 -19
  46. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +14 -14
  47. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +26 -25
  48. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +22 -22
  49. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +5 -5
  50. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
  51. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +27 -26
  52. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +24 -24
  53. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +3 -3
  54. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +1 -1
  55. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +3 -3
  56. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +7 -7
  57. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +17 -16
  58. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +37 -37
  59. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +6 -6
  60. package/SVF-doxygen/html/html/SVFIR_8h_source.html +3 -3
  61. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
  62. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  63. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +3 -3
  64. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
  65. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +1 -1
  66. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +40 -39
  67. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +16 -16
  68. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +58 -57
  69. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +24 -24
  70. package/SVF-doxygen/html/html/TCT_8h_source.html +2 -2
  71. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  72. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +1 -1
  73. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
  74. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +2 -2
  75. package/SVF-doxygen/html/html/WPAStat_8h_source.html +5 -5
  76. package/SVF-doxygen/html/html/cfl_8cpp.html +3 -3
  77. package/SVF-doxygen/html/html/cfl_8cpp_source.html +3 -3
  78. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +3 -3
  79. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
  80. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +14 -14
  81. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +6 -6
  82. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
  83. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +3 -3
  84. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +48 -48
  85. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +4 -4
  86. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +3 -3
  87. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +4 -4
  88. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  89. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
  90. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +2 -2
  91. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +3 -3
  92. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +1 -1
  93. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
  94. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +4 -4
  95. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +23 -23
  96. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +1 -1
  97. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +2 -2
  98. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +4 -4
  99. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  100. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -3
  101. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +2 -2
  102. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +23 -23
  103. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +1 -1
  104. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +3 -3
  105. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +2 -2
  106. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +22 -22
  107. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +28 -28
  108. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +78 -78
  109. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +100 -100
  110. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +2 -2
  111. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
  112. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +4 -4
  113. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +54 -54
  114. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +56 -56
  115. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +7 -7
  116. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +8 -8
  117. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  118. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +15 -15
  119. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +71 -71
  120. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +59 -59
  121. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +3 -3
  122. package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +7 -7
  123. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
  124. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +9 -9
  125. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +148 -148
  126. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
  127. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
  128. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +2 -2
  129. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +4 -4
  130. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +88 -88
  131. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +65 -65
  132. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
  133. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
  134. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +1 -1
  135. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
  136. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +4 -4
  137. package/SVF-doxygen/html/html/dda_8cpp.html +2 -2
  138. package/SVF-doxygen/html/html/dda_8cpp_source.html +2 -2
  139. package/SVF-doxygen/html/html/mta_8cpp.html +2 -2
  140. package/SVF-doxygen/html/html/mta_8cpp_source.html +2 -2
  141. package/SVF-doxygen/html/html/namespaceSVF.html +4 -2
  142. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +1452 -0
  143. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +41 -1409
  144. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +4 -4
  145. package/SVF-doxygen/html/html/namespacemembers.html +3 -3
  146. package/SVF-doxygen/html/html/namespacemembers_f.html +1 -1
  147. package/SVF-doxygen/html/html/namespacemembers_func.html +39 -39
  148. package/SVF-doxygen/html/html/namespacemembers_g.html +14 -14
  149. package/SVF-doxygen/html/html/namespacemembers_i.html +18 -18
  150. package/SVF-doxygen/html/html/namespacemembers_p.html +1 -1
  151. package/SVF-doxygen/html/html/namespacemembers_s.html +2 -2
  152. package/SVF-doxygen/html/html/namespaces.html +2 -1
  153. package/SVF-doxygen/html/html/saber_8cpp.html +2 -2
  154. package/SVF-doxygen/html/html/saber_8cpp_source.html +2 -2
  155. package/SVF-doxygen/html/html/search/all_1.js +3 -3
  156. package/SVF-doxygen/html/html/search/all_10.js +1 -1
  157. package/SVF-doxygen/html/html/search/all_13.js +3 -2
  158. package/SVF-doxygen/html/html/search/all_6.js +1 -1
  159. package/SVF-doxygen/html/html/search/all_7.js +14 -14
  160. package/SVF-doxygen/html/html/search/all_9.js +18 -18
  161. package/SVF-doxygen/html/html/search/functions_0.js +3 -3
  162. package/SVF-doxygen/html/html/search/functions_11.js +2 -2
  163. package/SVF-doxygen/html/html/search/functions_5.js +1 -1
  164. package/SVF-doxygen/html/html/search/functions_6.js +14 -14
  165. package/SVF-doxygen/html/html/search/functions_8.js +18 -18
  166. package/SVF-doxygen/html/html/search/functions_f.js +1 -1
  167. package/SVF-doxygen/html/html/search/namespaces_1.js +1 -0
  168. package/SVF-doxygen/html/html/svf-ex_8cpp.html +3 -3
  169. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +3 -3
  170. package/SVF-doxygen/html/html/wpa_8cpp.html +2 -2
  171. package/SVF-doxygen/html/html/wpa_8cpp_source.html +2 -2
  172. package/include/MTA/MHP.h +1 -1
  173. package/include/SVF-FE/LLVMUtil.h +7 -7
  174. package/lib/Graphs/ICFG.cpp +2 -2
  175. package/lib/MSSA/MemRegion.cpp +1 -0
  176. package/lib/MSSA/MemSSA.cpp +1 -0
  177. package/lib/MTA/LockAnalysis.cpp +1 -0
  178. package/lib/MemoryModel/LocationSet.cpp +1 -0
  179. package/lib/MemoryModel/PointerAnalysis.cpp +1 -0
  180. package/lib/MemoryModel/SVFIR.cpp +1 -1
  181. package/lib/MemoryModel/SymbolTableInfo.cpp +1 -0
  182. package/lib/SABER/LeakChecker.cpp +1 -0
  183. package/lib/SABER/PathCondAllocator.cpp +1 -0
  184. package/lib/SVF-FE/CHGBuilder.cpp +1 -0
  185. package/lib/SVF-FE/CPPUtil.cpp +2 -2
  186. package/lib/SVF-FE/ICFGBuilder.cpp +1 -0
  187. package/lib/SVF-FE/LLVMUtil.cpp +32 -32
  188. package/lib/SVF-FE/SVFIRBuilder.cpp +2 -1
  189. package/lib/SVF-FE/SymbolTableBuilder.cpp +8 -7
  190. package/lib/WPA/AndersenStat.cpp +1 -0
  191. package/lib/WPA/FlowSensitiveStat.cpp +1 -0
  192. package/package.json +1 -1
  193. package/tools/CFL/cfl.cpp +1 -1
  194. package/tools/DDA/dda.cpp +1 -1
  195. package/tools/Example/svf-ex.cpp +1 -1
  196. package/tools/MTA/mta.cpp +1 -1
  197. package/tools/SABER/saber.cpp +1 -1
  198. package/tools/WPA/wpa.cpp +1 -1
@@ -54,7 +54,7 @@ FunExitICFGNode::FunExitICFGNode(NodeID id, const SVFFunction* f) : InterICFGNod
54
54
  // if function is implemented
55
55
  if (f->getLLVMFun()->begin() != f->getLLVMFun()->end())
56
56
  {
57
- bb = SVFUtil::getFunExitBB(f->getLLVMFun());
57
+ bb = LLVMUtil::getFunExitBB(f->getLLVMFun());
58
58
  }
59
59
 
60
60
  }
@@ -119,7 +119,7 @@ const std::string FunExitICFGNode::toString() const
119
119
  rawstr << "FunExitICFGNode" << getId();
120
120
  rawstr << " {fun: " << getFun()->getName();
121
121
  if (isExtCall(getFun())==false)
122
- rawstr << getSourceLoc(getFunExitBB(getFun()->getLLVMFun())->getFirstNonPHI());
122
+ rawstr << getSourceLoc(LLVMUtil::getFunExitBB(getFun()->getLLVMFun())->getFirstNonPHI());
123
123
  rawstr << "}";
124
124
  for (const SVFStmt *stmt : getSVFStmts())
125
125
  rawstr << "\n" << stmt->toString();
@@ -35,6 +35,7 @@
35
35
 
36
36
  using namespace SVF;
37
37
  using namespace SVFUtil;
38
+ using namespace LLVMUtil;
38
39
 
39
40
  u32_t MemRegion::totalMRNum = 0;
40
41
  u32_t MRVer::totalVERNum = 0;
@@ -35,6 +35,7 @@
35
35
 
36
36
  using namespace SVF;
37
37
  using namespace SVFUtil;
38
+ using namespace LLVMUtil;
38
39
 
39
40
 
40
41
  double MemSSA::timeOfGeneratingMemRegions = 0; ///< Time for allocating regions
@@ -16,6 +16,7 @@
16
16
 
17
17
  using namespace SVF;
18
18
  using namespace SVFUtil;
19
+ using namespace LLVMUtil;
19
20
 
20
21
 
21
22
  namespace SVF
@@ -36,6 +36,7 @@
36
36
 
37
37
  using namespace SVF;
38
38
  using namespace SVFUtil;
39
+ using namespace LLVMUtil;
39
40
 
40
41
  /*!
41
42
  * Add offset value to vector offsetValues
@@ -52,6 +52,7 @@
52
52
  using namespace SVF;
53
53
  using namespace SVFUtil;
54
54
  using namespace cppUtil;
55
+ using namespace LLVMUtil;
55
56
 
56
57
 
57
58
  SVFIR* PointerAnalysis::pag = nullptr;
@@ -709,7 +709,7 @@ bool SVFIR::isValidTopLevelPtr(const SVFVar* node)
709
709
  {
710
710
  if (isValidPointer(node->getId()) && node->hasValue())
711
711
  {
712
- if (SVFUtil::ArgInNoCallerFunction(node->getValue()))
712
+ if (LLVMUtil::ArgInNoCallerFunction(node->getValue()))
713
713
  return false;
714
714
  return true;
715
715
  }
@@ -38,6 +38,7 @@
38
38
  using namespace std;
39
39
  using namespace SVF;
40
40
  using namespace SVFUtil;
41
+ using namespace LLVMUtil;
41
42
 
42
43
  SymbolTableInfo* SymbolTableInfo::symInfo = nullptr;
43
44
 
@@ -33,6 +33,7 @@
33
33
 
34
34
  using namespace SVF;
35
35
  using namespace SVFUtil;
36
+ using namespace LLVMUtil;
36
37
 
37
38
 
38
39
  /*!
@@ -37,6 +37,7 @@
37
37
 
38
38
  using namespace SVF;
39
39
  using namespace SVFUtil;
40
+ using namespace LLVMUtil;
40
41
 
41
42
  u64_t DPItem::maximumBudget = ULONG_MAX - 1;
42
43
  u32_t ContextCond::maximumCxtLen = 0;
@@ -48,6 +48,7 @@
48
48
  using namespace SVF;
49
49
  using namespace SVFUtil;
50
50
  using namespace cppUtil;
51
+ using namespace LLVMUtil;
51
52
 
52
53
  const string pureVirtualFunName = "__cxa_pure_virtual";
53
54
 
@@ -234,7 +234,7 @@ bool cppUtil::isLoadVtblInst(const LoadInst *loadInst)
234
234
  for (u32_t i = 0; i < 3; ++i)
235
235
  {
236
236
  if (const PointerType *ptrTy = SVFUtil::dyn_cast<PointerType>(elemTy))
237
- elemTy = SVFUtil::getPtrElementType(ptrTy);
237
+ elemTy = LLVMUtil::getPtrElementType(ptrTy);
238
238
  else
239
239
  return false;
240
240
  }
@@ -420,7 +420,7 @@ string cppUtil::getClassNameFromType(const Type *ty)
420
420
  string className = "";
421
421
  if (const PointerType *ptrType = SVFUtil::dyn_cast<PointerType>(ty))
422
422
  {
423
- const Type *elemType = SVFUtil::getPtrElementType(ptrType);
423
+ const Type *elemType = LLVMUtil::getPtrElementType(ptrType);
424
424
  if (SVFUtil::isa<StructType>(elemType) &&
425
425
  !((SVFUtil::cast<StructType>(elemType))->isLiteral()))
426
426
  {
@@ -34,6 +34,7 @@
34
34
 
35
35
  using namespace SVF;
36
36
  using namespace SVFUtil;
37
+ using namespace LLVMUtil;
37
38
 
38
39
  /*!
39
40
  * Create ICFG nodes and edges
@@ -21,7 +21,7 @@
21
21
  //===----------------------------------------------------------------------===//
22
22
 
23
23
  /*
24
- * SVFUtil.cpp
24
+ * LLVMUtil.cpp
25
25
  *
26
26
  * Created on: Apr 11, 2013
27
27
  * Author: Yulei Sui
@@ -39,7 +39,7 @@ using namespace SVF;
39
39
  * 3) stack
40
40
  * 4) heap
41
41
  */
42
- bool SVFUtil::isObject(const Value * ref)
42
+ bool LLVMUtil::isObject(const Value * ref)
43
43
  {
44
44
  bool createobj = false;
45
45
  if (SVFUtil::isa<Instruction>(ref) && SVFUtil::isStaticExtCall(SVFUtil::cast<Instruction>(ref)) )
@@ -57,7 +57,7 @@ bool SVFUtil::isObject(const Value * ref)
57
57
  /*!
58
58
  * Check whether this value points-to a constant object
59
59
  */
60
- bool SVFUtil::isConstantObjSym(const Value *val)
60
+ bool LLVMUtil::isConstantObjSym(const Value *val)
61
61
  {
62
62
  if (const GlobalVariable* v = SVFUtil::dyn_cast<GlobalVariable>(val))
63
63
  {
@@ -91,7 +91,7 @@ bool SVFUtil::isConstantObjSym(const Value *val)
91
91
  /*!
92
92
  * Return reachable bbs from function entry
93
93
  */
94
- void SVFUtil::getFunReachableBBs (const Function * fun, DominatorTree* dt, std::vector<const BasicBlock*> &reachableBBs)
94
+ void LLVMUtil::getFunReachableBBs (const Function * fun, DominatorTree* dt, std::vector<const BasicBlock*> &reachableBBs)
95
95
  {
96
96
  Set<const BasicBlock*> visited;
97
97
  std::vector<const BasicBlock*> bbVec;
@@ -120,7 +120,7 @@ void SVFUtil::getFunReachableBBs (const Function * fun, DominatorTree* dt, std::
120
120
  /*!
121
121
  * Return true if the function has a return instruction reachable from function entry
122
122
  */
123
- bool SVFUtil::functionDoesNotRet (const Function * fun)
123
+ bool LLVMUtil::functionDoesNotRet (const Function * fun)
124
124
  {
125
125
 
126
126
  std::vector<const BasicBlock*> bbVec;
@@ -157,11 +157,11 @@ bool SVFUtil::functionDoesNotRet (const Function * fun)
157
157
  /*!
158
158
  * Return true if this is a function without any possible caller
159
159
  */
160
- bool SVFUtil::isDeadFunction (const Function * fun)
160
+ bool LLVMUtil::isDeadFunction (const Function * fun)
161
161
  {
162
162
  if(fun->hasAddressTaken())
163
163
  return false;
164
- if(isProgEntryFunction(fun))
164
+ if(SVFUtil::isProgEntryFunction(fun))
165
165
  return false;
166
166
  for (Value::const_user_iterator i = fun->user_begin(), e = fun->user_end(); i != e; ++i)
167
167
  {
@@ -190,7 +190,7 @@ bool SVFUtil::isDeadFunction (const Function * fun)
190
190
  /*!
191
191
  * Return true if this is a value in a dead function (function without any caller)
192
192
  */
193
- bool SVFUtil::isPtrInDeadFunction (const Value * value)
193
+ bool LLVMUtil::isPtrInDeadFunction (const Value * value)
194
194
  {
195
195
  if(const Instruction* inst = SVFUtil::dyn_cast<Instruction>(value))
196
196
  {
@@ -208,7 +208,7 @@ bool SVFUtil::isPtrInDeadFunction (const Value * value)
208
208
  /*!
209
209
  * Strip constant casts
210
210
  */
211
- const Value * SVFUtil::stripConstantCasts(const Value *val)
211
+ const Value * LLVMUtil::stripConstantCasts(const Value *val)
212
212
  {
213
213
  if (SVFUtil::isa<GlobalValue>(val) || isInt2PtrConstantExpr(val))
214
214
  return val;
@@ -223,7 +223,7 @@ const Value * SVFUtil::stripConstantCasts(const Value *val)
223
223
  /*!
224
224
  * Strip all casts
225
225
  */
226
- const Value * SVFUtil::stripAllCasts(const Value *val)
226
+ const Value * LLVMUtil::stripAllCasts(const Value *val)
227
227
  {
228
228
  while (true)
229
229
  {
@@ -247,12 +247,12 @@ const Value * SVFUtil::stripAllCasts(const Value *val)
247
247
  }
248
248
 
249
249
  /// Get the next instructions following control flow
250
- void SVFUtil::getNextInsts(const Instruction* curInst, std::vector<const Instruction*>& instList)
250
+ void LLVMUtil::getNextInsts(const Instruction* curInst, std::vector<const Instruction*>& instList)
251
251
  {
252
252
  if (!curInst->isTerminator())
253
253
  {
254
254
  const Instruction* nextInst = curInst->getNextNode();
255
- if (isIntrinsicInst(nextInst))
255
+ if (SVFUtil::isIntrinsicInst(nextInst))
256
256
  getNextInsts(nextInst, instList);
257
257
  else
258
258
  instList.push_back(nextInst);
@@ -264,7 +264,7 @@ void SVFUtil::getNextInsts(const Instruction* curInst, std::vector<const Instruc
264
264
  for (succ_const_iterator it = succ_begin(BB), ie = succ_end(BB); it != ie; ++it)
265
265
  {
266
266
  const Instruction* nextInst = &((*it)->front());
267
- if (isIntrinsicInst(nextInst))
267
+ if (SVFUtil::isIntrinsicInst(nextInst))
268
268
  getNextInsts(nextInst, instList);
269
269
  else
270
270
  instList.push_back(nextInst);
@@ -274,12 +274,12 @@ void SVFUtil::getNextInsts(const Instruction* curInst, std::vector<const Instruc
274
274
 
275
275
 
276
276
  /// Get the previous instructions following control flow
277
- void SVFUtil::getPrevInsts(const Instruction* curInst, std::vector<const Instruction*>& instList)
277
+ void LLVMUtil::getPrevInsts(const Instruction* curInst, std::vector<const Instruction*>& instList)
278
278
  {
279
279
  if (curInst != &(curInst->getParent()->front()))
280
280
  {
281
281
  const Instruction* prevInst = curInst->getPrevNode();
282
- if (isIntrinsicInst(prevInst))
282
+ if (SVFUtil::isIntrinsicInst(prevInst))
283
283
  getPrevInsts(prevInst, instList);
284
284
  else
285
285
  instList.push_back(prevInst);
@@ -291,7 +291,7 @@ void SVFUtil::getPrevInsts(const Instruction* curInst, std::vector<const Instruc
291
291
  for (const_pred_iterator it = pred_begin(BB), ie = pred_end(BB); it != ie; ++it)
292
292
  {
293
293
  const Instruction* prevInst = &((*it)->back());
294
- if (isIntrinsicInst(prevInst))
294
+ if (SVFUtil::isIntrinsicInst(prevInst))
295
295
  getPrevInsts(prevInst, instList);
296
296
  else
297
297
  instList.push_back(prevInst);
@@ -304,7 +304,7 @@ void SVFUtil::getPrevInsts(const Instruction* curInst, std::vector<const Instruc
304
304
  * for example, %4 = call align 16 i8* @malloc(i64 10); %5 = bitcast i8* %4 to i32*
305
305
  * return %5 whose type is i32* but not %4 whose type is i8*
306
306
  */
307
- const Value* SVFUtil::getUniqueUseViaCastInst(const Value* val)
307
+ const Value* LLVMUtil::getUniqueUseViaCastInst(const Value* val)
308
308
  {
309
309
  const PointerType * type = SVFUtil::dyn_cast<PointerType>(val->getType());
310
310
  assert(type && "this value should be a pointer type!");
@@ -323,11 +323,11 @@ const Value* SVFUtil::getUniqueUseViaCastInst(const Value* val)
323
323
  /*!
324
324
  * Return the type of the object from a heap allocation
325
325
  */
326
- const Type* SVFUtil::getTypeOfHeapAlloc(const Instruction *inst)
326
+ const Type* LLVMUtil::getTypeOfHeapAlloc(const Instruction *inst)
327
327
  {
328
328
  const PointerType* type = SVFUtil::dyn_cast<PointerType>(inst->getType());
329
329
 
330
- if(isHeapAllocExtCallViaRet(inst))
330
+ if(SVFUtil::isHeapAllocExtCallViaRet(inst))
331
331
  {
332
332
  if(const Value* v = getUniqueUseViaCastInst(inst))
333
333
  {
@@ -335,10 +335,10 @@ const Type* SVFUtil::getTypeOfHeapAlloc(const Instruction *inst)
335
335
  type = newTy;
336
336
  }
337
337
  }
338
- else if(isHeapAllocExtCallViaArg(inst))
338
+ else if(SVFUtil::isHeapAllocExtCallViaArg(inst))
339
339
  {
340
- CallSite cs = getLLVMCallSite(inst);
341
- int arg_pos = getHeapAllocHoldingArgPosition(getCallee(cs));
340
+ CallSite cs = SVFUtil::getLLVMCallSite(inst);
341
+ int arg_pos = SVFUtil::getHeapAllocHoldingArgPosition(SVFUtil::getCallee(cs));
342
342
  const Value *arg = cs.getArgument(arg_pos);
343
343
  type = SVFUtil::dyn_cast<PointerType>(arg->getType());
344
344
  }
@@ -354,7 +354,7 @@ const Type* SVFUtil::getTypeOfHeapAlloc(const Instruction *inst)
354
354
  /*!
355
355
  * Get position of a successor basic block
356
356
  */
357
- u32_t SVFUtil::getBBSuccessorPos(const BasicBlock *BB, const BasicBlock *Succ)
357
+ u32_t LLVMUtil::getBBSuccessorPos(const BasicBlock *BB, const BasicBlock *Succ)
358
358
  {
359
359
  u32_t i = 0;
360
360
  for (const BasicBlock *SuccBB: successors(BB))
@@ -371,7 +371,7 @@ u32_t SVFUtil::getBBSuccessorPos(const BasicBlock *BB, const BasicBlock *Succ)
371
371
  /*!
372
372
  * Return a position index from current bb to it successor bb
373
373
  */
374
- u32_t SVFUtil::getBBPredecessorPos(const BasicBlock *bb, const BasicBlock *succbb)
374
+ u32_t LLVMUtil::getBBPredecessorPos(const BasicBlock *bb, const BasicBlock *succbb)
375
375
  {
376
376
  u32_t pos = 0;
377
377
  for (const_pred_iterator it = pred_begin(succbb), et = pred_end(succbb); it != et; ++it, ++pos)
@@ -386,7 +386,7 @@ u32_t SVFUtil::getBBPredecessorPos(const BasicBlock *bb, const BasicBlock *succb
386
386
  /*!
387
387
  * Get the num of BB's successors
388
388
  */
389
- u32_t SVFUtil::getBBSuccessorNum(const BasicBlock *BB)
389
+ u32_t LLVMUtil::getBBSuccessorNum(const BasicBlock *BB)
390
390
  {
391
391
  return BB->getTerminator()->getNumSuccessors();
392
392
  }
@@ -394,7 +394,7 @@ u32_t SVFUtil::getBBSuccessorNum(const BasicBlock *BB)
394
394
  /*!
395
395
  * Get the num of BB's predecessors
396
396
  */
397
- u32_t SVFUtil::getBBPredecessorNum(const BasicBlock *BB)
397
+ u32_t LLVMUtil::getBBPredecessorNum(const BasicBlock *BB)
398
398
  {
399
399
  u32_t num = 0;
400
400
  for (const_pred_iterator it = pred_begin(BB), et = pred_end(BB); it != et; ++it)
@@ -407,7 +407,7 @@ u32_t SVFUtil::getBBPredecessorNum(const BasicBlock *BB)
407
407
  * llvm::parseIRFile (lib/IRReader/IRReader.cpp)
408
408
  * llvm::parseIR (lib/IRReader/IRReader.cpp)
409
409
  */
410
- bool SVFUtil::isIRFile(const std::string &filename)
410
+ bool LLVMUtil::isIRFile(const std::string &filename)
411
411
  {
412
412
  llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> FileOrErr = llvm::MemoryBuffer::getFileOrSTDIN(filename);
413
413
  if (FileOrErr.getError())
@@ -424,14 +424,14 @@ bool SVFUtil::isIRFile(const std::string &filename)
424
424
 
425
425
  /// Get the names of all modules into a vector
426
426
  /// And process arguments
427
- void SVFUtil::processArguments(int argc, char **argv, int &arg_num, char **arg_value,
428
- std::vector<std::string> &moduleNameVec)
427
+ void LLVMUtil::processArguments(int argc, char **argv, int &arg_num, char **arg_value,
428
+ std::vector<std::string> &moduleNameVec)
429
429
  {
430
430
  bool first_ir_file = true;
431
431
  for (int i = 0; i < argc; ++i)
432
432
  {
433
433
  std::string argument(argv[i]);
434
- if (SVFUtil::isIRFile(argument))
434
+ if (LLVMUtil::isIRFile(argument))
435
435
  {
436
436
  if (find(moduleNameVec.begin(), moduleNameVec.end(), argument)
437
437
  == moduleNameVec.end())
@@ -452,7 +452,7 @@ void SVFUtil::processArguments(int argc, char **argv, int &arg_num, char **arg_v
452
452
  }
453
453
 
454
454
 
455
- u32_t SVFUtil::getTypeSizeInBytes(const Type* type)
455
+ u32_t LLVMUtil::getTypeSizeInBytes(const Type* type)
456
456
  {
457
457
 
458
458
  // if the type has size then simply return it, otherwise just return 0
@@ -462,7 +462,7 @@ u32_t SVFUtil::getTypeSizeInBytes(const Type* type)
462
462
  return 0;
463
463
  }
464
464
 
465
- u32_t SVFUtil::getTypeSizeInBytes(const StructType *sty, u32_t field_idx)
465
+ u32_t LLVMUtil::getTypeSizeInBytes(const StructType *sty, u32_t field_idx)
466
466
  {
467
467
 
468
468
  const StructLayout *stTySL = getDataLayout(LLVMModuleSet::getLLVMModuleSet()->getMainLLVMModule())->getStructLayout( const_cast<StructType *>(sty) );
@@ -41,6 +41,7 @@
41
41
  using namespace std;
42
42
  using namespace SVF;
43
43
  using namespace SVFUtil;
44
+ using namespace LLVMUtil;
44
45
 
45
46
 
46
47
  /*!
@@ -201,7 +202,7 @@ void SVFIRBuilder::initialiseNodes()
201
202
  {
202
203
  DBOUT(DPAGBuild, outs() << "add address edges for constant node " << iter->second << "\n");
203
204
  const Value* val = iter->first;
204
- if (SVFUtil::isConstantObjSym(val))
205
+ if (LLVMUtil::isConstantObjSym(val))
205
206
  {
206
207
  NodeID ptr = pag->getValueNode(val);
207
208
  if(ptr!= pag->getBlkPtr() && ptr!= pag->getNullPtr())
@@ -41,6 +41,7 @@
41
41
 
42
42
  using namespace SVF;
43
43
  using namespace SVFUtil;
44
+ using namespace LLVMUtil;
44
45
 
45
46
  /*!
46
47
  * This method identify which is value sym and which is object sym
@@ -199,9 +200,9 @@ void SymbolTableBuilder::buildMemModel(SVFModule* svfModule)
199
200
  */
200
201
  void SymbolTableBuilder::collectNullPtrBlackholeSyms(const Value *val)
201
202
  {
202
- if (SVFUtil::isNullPtrSym(val))
203
+ if (LLVMUtil::isNullPtrSym(val))
203
204
  symInfo->nullPtrSyms.insert(val);
204
- if (SVFUtil::isBlackholeSym(val))
205
+ if (LLVMUtil::isBlackholeSym(val))
205
206
  symInfo->blackholeSyms.insert(val);
206
207
  }
207
208
 
@@ -234,7 +235,7 @@ void SymbolTableBuilder::collectSym(const Value *val)
234
235
  void SymbolTableBuilder::collectVal(const Value *val)
235
236
  {
236
237
  // collect and record special sym here
237
- if (SVFUtil::isNullPtrSym(val) || SVFUtil::isBlackholeSym(val))
238
+ if (LLVMUtil::isNullPtrSym(val) || LLVMUtil::isBlackholeSym(val))
238
239
  {
239
240
  collectNullPtrBlackholeSyms(val);
240
241
  return;
@@ -252,7 +253,7 @@ void SymbolTableBuilder::collectVal(const Value *val)
252
253
  handleGlobalCE(globalVar);
253
254
  }
254
255
 
255
- if (SVFUtil::isConstantObjSym(val))
256
+ if (LLVMUtil::isConstantObjSym(val))
256
257
  collectObj(val);
257
258
  }
258
259
 
@@ -267,7 +268,7 @@ void SymbolTableBuilder::collectObj(const Value *val)
267
268
  {
268
269
  // if the object pointed by the pointer is a constant data (e.g., i32 0) or a global constant object (e.g. string)
269
270
  // then we treat them as one ConstantObj
270
- if((SVFUtil::isConstantObjSym(val) && !symInfo->getModelConstants()))
271
+ if((LLVMUtil::isConstantObjSym(val) && !symInfo->getModelConstants()))
271
272
  {
272
273
  symInfo->objSymMap.insert(std::make_pair(val, symInfo->constantSymID()));
273
274
  }
@@ -526,7 +527,7 @@ ObjTypeInfo* SymbolTableBuilder::createObjTypeInfo(const Value *val)
526
527
  writeWrnMsg("try to create an object with a non-pointer type.");
527
528
  writeWrnMsg(val->getName().str());
528
529
  writeWrnMsg("(" + getSourceLoc(val) + ")");
529
- if(SVFUtil::isConstantObjSym(val))
530
+ if(LLVMUtil::isConstantObjSym(val))
530
531
  {
531
532
  ObjTypeInfo* typeInfo = new ObjTypeInfo(val->getType(), 0);
532
533
  initTypeInfo(typeInfo,val);
@@ -650,7 +651,7 @@ void SymbolTableBuilder::initTypeInfo(ObjTypeInfo* typeinfo, const Value* val)
650
651
  else if(SVFUtil::isa<GlobalVariable>(val))
651
652
  {
652
653
  typeinfo->setFlag(ObjTypeInfo::GLOBVAR_OBJ);
653
- if(SVFUtil::isConstantObjSym(val))
654
+ if(LLVMUtil::isConstantObjSym(val))
654
655
  typeinfo->setFlag(ObjTypeInfo::CONST_GLOBAL_OBJ);
655
656
  analyzeObjType(typeinfo,val);
656
657
  objSize = getObjSize(typeinfo->getType());
@@ -34,6 +34,7 @@
34
34
 
35
35
  using namespace SVF;
36
36
  using namespace SVFUtil;
37
+ using namespace LLVMUtil;
37
38
 
38
39
  u32_t AndersenStat::_MaxPtsSize = 0;
39
40
  u32_t AndersenStat::_NumOfCycles = 0;
@@ -35,6 +35,7 @@
35
35
 
36
36
  using namespace SVF;
37
37
  using namespace SVFUtil;
38
+ using namespace LLVMUtil;
38
39
 
39
40
  /*!
40
41
  * Clear statistics
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-tools",
3
- "version": "1.0.474",
3
+ "version": "1.0.475",
4
4
  "description": "* <b>[TypeClone](https://github.com/SVF-tools/SVF/wiki/TypeClone) published in our [ECOOP paper](https://yuleisui.github.io/publications/ecoop20.pdf) is now available in SVF </b> * <b>SVF now uses a single script for its build. Just type [`source ./build.sh`](https://github.com/SVF-tools/SVF/blob/master/build.sh) in your terminal, that's it!</b> * <b>SVF now supports LLVM-10.0.0! </b> * <b>We thank [bsauce](https://github.com/bsauce) for writing a user manual of SVF ([link1](https://www.jianshu.com/p/068a08ec749c) and [link2](https://www.jianshu.com/p/777c30d4240e)) in Chinese </b> * <b>SVF now supports LLVM-9.0.0 (Thank [Byoungyoung Lee](https://github.com/SVF-tools/SVF/issues/142) for his help!). </b> * <b>SVF now supports a set of [field-sensitive pointer analyses](https://yuleisui.github.io/publications/sas2019a.pdf). </b> * <b>[Use SVF as an external lib](https://github.com/SVF-tools/SVF/wiki/Using-SVF-as-a-lib-in-your-own-tool) for your own project (Contributed by [Hongxu Chen](https://github.com/HongxuChen)). </b> * <b>SVF now supports LLVM-7.0.0. </b> * <b>SVF now supports Docker. [Try SVF in Docker](https://github.com/SVF-tools/SVF/wiki/Try-SVF-in-Docker)! </b> * <b>SVF now supports [LLVM-6.0.0](https://github.com/svf-tools/SVF/pull/38) (Contributed by [Jack Anthony](https://github.com/jackanth)). </b> * <b>SVF now supports [LLVM-4.0.0](https://github.com/svf-tools/SVF/pull/23) (Contributed by Jared Carlson. Thank [Jared](https://github.com/jcarlson23) and [Will](https://github.com/dtzWill) for their in-depth [discussions](https://github.com/svf-tools/SVF/pull/18) about updating SVF!) </b> * <b>SVF now supports analysis for C++ programs.</b> <br />",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/tools/CFL/cfl.cpp CHANGED
@@ -45,7 +45,7 @@ int main(int argc, char ** argv)
45
45
  int arg_num = 0;
46
46
  char **arg_value = new char*[argc];
47
47
  std::vector<std::string> moduleNameVec;
48
- SVFUtil::processArguments(argc, argv, arg_num, arg_value, moduleNameVec);
48
+ LLVMUtil::processArguments(argc, argv, arg_num, arg_value, moduleNameVec);
49
49
  cl::ParseCommandLineOptions(arg_num, arg_value,
50
50
  "CFL Reachability Analysis\n");
51
51
 
package/tools/DDA/dda.cpp CHANGED
@@ -44,7 +44,7 @@ int main(int argc, char ** argv)
44
44
  int arg_num = 0;
45
45
  char **arg_value = new char*[argc];
46
46
  std::vector<std::string> moduleNameVec;
47
- SVFUtil::processArguments(argc, argv, arg_num, arg_value, moduleNameVec);
47
+ LLVMUtil::processArguments(argc, argv, arg_num, arg_value, moduleNameVec);
48
48
  cl::ParseCommandLineOptions(arg_num, arg_value,
49
49
  "Demand-Driven Points-to Analysis\n");
50
50
 
@@ -145,7 +145,7 @@ int main(int argc, char ** argv)
145
145
  int arg_num = 0;
146
146
  char **arg_value = new char*[argc];
147
147
  std::vector<std::string> moduleNameVec;
148
- SVFUtil::processArguments(argc, argv, arg_num, arg_value, moduleNameVec);
148
+ LLVMUtil::processArguments(argc, argv, arg_num, arg_value, moduleNameVec);
149
149
  cl::ParseCommandLineOptions(arg_num, arg_value,
150
150
  "Whole Program Points-to Analysis\n");
151
151
 
package/tools/MTA/mta.cpp CHANGED
@@ -12,7 +12,7 @@ int main(int argc, char ** argv)
12
12
  int arg_num = 0;
13
13
  char **arg_value = new char*[argc];
14
14
  std::vector<std::string> moduleNameVec;
15
- SVFUtil::processArguments(argc, argv, arg_num, arg_value, moduleNameVec);
15
+ LLVMUtil::processArguments(argc, argv, arg_num, arg_value, moduleNameVec);
16
16
  cl::ParseCommandLineOptions(arg_num, arg_value,
17
17
  "MTA Analysis\n");
18
18
 
@@ -50,7 +50,7 @@ int main(int argc, char ** argv)
50
50
  int arg_num = 0;
51
51
  char **arg_value = new char*[argc];
52
52
  std::vector<std::string> moduleNameVec;
53
- SVFUtil::processArguments(argc, argv, arg_num, arg_value, moduleNameVec);
53
+ LLVMUtil::processArguments(argc, argv, arg_num, arg_value, moduleNameVec);
54
54
  cl::ParseCommandLineOptions(arg_num, arg_value,
55
55
  "Source-Sink Bug Detector\n");
56
56
 
package/tools/WPA/wpa.cpp CHANGED
@@ -40,7 +40,7 @@ int main(int argc, char ** argv)
40
40
  int arg_num = 0;
41
41
  char **arg_value = new char*[argc];
42
42
  std::vector<std::string> moduleNameVec;
43
- SVFUtil::processArguments(argc, argv, arg_num, arg_value, moduleNameVec);
43
+ LLVMUtil::processArguments(argc, argv, arg_num, arg_value, moduleNameVec);
44
44
  cl::ParseCommandLineOptions(arg_num, arg_value,
45
45
  "Whole Program Points-to Analysis\n");
46
46