svf-tools 1.0.613 → 1.0.615

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 (542) hide show
  1. package/CMakeLists.txt +13 -0
  2. package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +1 -1
  3. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
  4. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +7 -6
  5. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +15 -15
  6. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +22 -22
  8. package/SVF-doxygen/html/html/Andersen_8h_source.html +16 -16
  9. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +6 -6
  10. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +7 -7
  11. package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +6 -6
  12. package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +1 -1
  14. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +5 -5
  15. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +11 -11
  16. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +1 -1
  17. package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +2 -2
  18. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +5 -5
  19. package/SVF-doxygen/html/html/CHG_8h_source.html +1 -1
  20. package/SVF-doxygen/html/html/CSC_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +14 -14
  22. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +1 -1
  23. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -3
  24. package/SVF-doxygen/html/html/ConsG_8h_source.html +9 -9
  25. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +18 -18
  26. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +9 -9
  27. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +4 -4
  28. package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
  29. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +8 -8
  30. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  31. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +4 -6
  32. package/SVF-doxygen/html/html/DDAPass_8h_source.html +3 -3
  33. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +9 -9
  34. package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
  35. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +22 -22
  36. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  38. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -1
  39. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +21 -21
  40. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +3 -3
  41. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  42. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +10 -10
  43. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +7 -7
  44. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +13 -13
  45. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +27 -28
  46. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +65 -65
  47. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
  48. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
  49. package/SVF-doxygen/html/html/ICFG_8h_source.html +2 -2
  50. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
  51. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +3 -3
  52. package/SVF-doxygen/html/html/IRGraph_8h_source.html +2 -2
  53. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +6 -6
  54. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8h_source.html +3 -3
  55. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +24 -29
  56. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +8 -8
  57. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  58. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +9 -9
  59. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +2 -2
  60. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +9 -9
  61. package/SVF-doxygen/html/html/LocationSet_8h_source.html +3 -3
  62. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +5 -5
  63. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +3 -3
  64. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +3 -3
  65. package/SVF-doxygen/html/html/MHP_8cpp_source.html +10 -10
  66. package/SVF-doxygen/html/html/MHP_8h_source.html +5 -5
  67. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +17 -17
  68. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +8 -8
  69. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +3 -3
  70. package/SVF-doxygen/html/html/MTA_8cpp_source.html +12 -17
  71. package/SVF-doxygen/html/html/MTA_8h_source.html +3 -4
  72. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +10 -10
  73. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  74. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +34 -34
  75. package/SVF-doxygen/html/html/MemRegion_8h_source.html +7 -7
  76. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +16 -15
  77. package/SVF-doxygen/html/html/MemSSA_8h_source.html +53 -52
  78. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +7 -8
  79. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +7 -7
  80. package/SVF-doxygen/html/html/Options_8cpp_source.html +52 -53
  81. package/SVF-doxygen/html/html/Options_8h_source.html +53 -54
  82. package/SVF-doxygen/html/html/PCG_8cpp_source.html +2 -2
  83. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +3 -3
  84. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
  85. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +3 -3
  86. package/SVF-doxygen/html/html/PTAStat_8h_source.html +1 -1
  87. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +33 -33
  88. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +91 -95
  89. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +31 -39
  90. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +85 -92
  91. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +20 -20
  92. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +16 -16
  93. package/SVF-doxygen/html/html/PointsTo_8cpp.html +1 -0
  94. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +51 -51
  95. package/SVF-doxygen/html/html/PointsTo_8h_source.html +38 -38
  96. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +6 -6
  97. package/SVF-doxygen/html/html/SCC_8h_source.html +4 -4
  98. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +11 -22
  99. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +14 -17
  100. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
  101. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  102. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +7 -7
  103. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +21 -19
  104. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +5 -5
  105. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +18 -18
  106. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +49 -62
  107. package/SVF-doxygen/html/html/SVFG_8h_source.html +45 -45
  108. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +12 -12
  109. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +8 -8
  110. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +3 -3
  111. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +10 -16
  112. package/SVF-doxygen/html/html/SVFIR_8h_source.html +83 -83
  113. package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +19 -19
  114. package/SVF-doxygen/html/html/SVFType_8h.html +22 -22
  115. package/SVF-doxygen/html/html/SVFType_8h_source.html +76 -77
  116. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +5 -5
  117. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +11 -11
  118. package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +5 -5
  119. package/SVF-doxygen/html/html/SVFValue_8h_source.html +6 -6
  120. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
  121. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +3 -3
  122. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +6 -6
  123. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +4 -4
  124. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +15 -15
  125. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +2 -3
  126. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +69 -71
  127. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +13 -13
  128. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +39 -39
  129. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
  130. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +7 -7
  131. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +49 -51
  132. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +13 -13
  133. package/SVF-doxygen/html/html/TCT_8cpp_source.html +4 -4
  134. package/SVF-doxygen/html/html/TCT_8h_source.html +4 -4
  135. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +8 -8
  136. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +3 -3
  137. package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
  138. package/SVF-doxygen/html/html/VFG_8cpp_source.html +17 -17
  139. package/SVF-doxygen/html/html/VFG_8h_source.html +5 -5
  140. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +8 -8
  141. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +33 -33
  142. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +4 -4
  143. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +11 -11
  144. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +12 -12
  145. package/SVF-doxygen/html/html/WPAPass_8h_source.html +2 -2
  146. package/SVF-doxygen/html/html/WPASolver_8h_source.html +25 -25
  147. package/SVF-doxygen/html/html/Z3Expr_8cpp_source.html +1 -1
  148. package/SVF-doxygen/html/html/cfl_8cpp.html +1 -5
  149. package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -5
  150. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +2 -2
  151. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +2 -2
  152. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +2 -2
  153. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
  154. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +187 -188
  155. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +104 -107
  156. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +163 -164
  157. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +47 -50
  158. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +194 -195
  159. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +45 -48
  160. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +204 -205
  161. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +35 -38
  162. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +17 -17
  163. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +191 -192
  164. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +29 -32
  165. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +122 -123
  166. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +158 -219
  167. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -2
  168. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +137 -138
  169. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +57 -49
  170. package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +138 -139
  171. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +34 -34
  172. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +7 -7
  173. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
  174. package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +140 -141
  175. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +30 -30
  176. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +8 -8
  177. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +2 -2
  178. package/SVF-doxygen/html/html/classSVF_1_1CallSite-members.html +1 -1
  179. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +10 -10
  180. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -2
  181. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +114 -114
  182. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +6 -6
  183. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +8 -8
  184. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +28 -28
  185. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +2 -2
  186. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +6 -6
  187. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +4 -4
  188. package/SVF-doxygen/html/html/classSVF_1_1DDAPass-members.html +1 -1
  189. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +17 -31
  190. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +10 -10
  191. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +40 -40
  192. package/SVF-doxygen/html/html/classSVF_1_1DFPTData.html +15 -15
  193. package/SVF-doxygen/html/html/classSVF_1_1DiffPTData.html +4 -4
  194. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +11 -11
  195. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +5 -5
  196. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +16 -16
  197. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +2 -2
  198. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +1 -1
  199. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +228 -229
  200. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +62 -65
  201. package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +5 -5
  202. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +17 -17
  203. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +194 -195
  204. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +55 -55
  205. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +219 -220
  206. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +335 -342
  207. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +57 -57
  208. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +6 -6
  209. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +2 -2
  210. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +2 -2
  211. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +4 -4
  212. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +2 -2
  213. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +2 -2
  214. package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +1 -1
  215. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +6 -6
  216. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +2 -2
  217. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +4 -4
  218. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +4 -4
  219. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +2 -2
  220. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +8 -8
  221. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis-members.html +1 -1
  222. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +20 -14
  223. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +4 -4
  224. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +108 -94
  225. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +5 -5
  226. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +36 -36
  227. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +2 -2
  228. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +12 -12
  229. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +25 -25
  230. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +3 -3
  231. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +26 -26
  232. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +87 -87
  233. package/SVF-doxygen/html/html/classSVF_1_1MTA-members.html +2 -2
  234. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +27 -33
  235. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +21 -21
  236. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +14 -14
  237. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder-members.html +41 -43
  238. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +57 -80
  239. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
  240. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +54 -54
  241. package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +4 -4
  242. package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +4 -3
  243. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +170 -143
  244. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +16 -16
  245. package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +2 -2
  246. package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData-members.html +3 -3
  247. package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData.html +13 -15
  248. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +7 -7
  249. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +2 -2
  250. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +8 -8
  251. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  252. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +17 -18
  253. package/SVF-doxygen/html/html/classSVF_1_1Options.html +53 -79
  254. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  255. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +2 -2
  256. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -2
  257. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +3 -3
  258. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +3 -3
  259. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +4 -4
  260. package/SVF-doxygen/html/html/classSVF_1_1PTData.html +11 -11
  261. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData-members.html +28 -28
  262. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +174 -177
  263. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData-members.html +17 -17
  264. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +99 -102
  265. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData-members.html +30 -30
  266. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +125 -127
  267. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData-members.html +13 -13
  268. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +83 -86
  269. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache-members.html +1 -1
  270. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +122 -122
  271. package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData-members.html +22 -22
  272. package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData.html +137 -140
  273. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +56 -56
  274. package/SVF-doxygen/html/html/classSVF_1_1PointsTo-members.html +16 -16
  275. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +183 -178
  276. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator-members.html +7 -7
  277. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +87 -65
  278. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +6 -6
  279. package/SVF-doxygen/html/html/classSVF_1_1SCCDetection.html +3 -3
  280. package/SVF-doxygen/html/html/classSVF_1_1SCCDetection_1_1GNodeSCCInfo.html +1 -1
  281. package/SVF-doxygen/html/html/classSVF_1_1SVFArgument-members.html +1 -1
  282. package/SVF-doxygen/html/html/classSVF_1_1SVFArgument.html +4 -4
  283. package/SVF-doxygen/html/html/classSVF_1_1SVFArrayType.html +6 -6
  284. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock-members.html +3 -3
  285. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +13 -16
  286. package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue-members.html +1 -1
  287. package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue.html +2 -2
  288. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst-members.html +1 -1
  289. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +2 -2
  290. package/SVF-doxygen/html/html/classSVF_1_1SVFConstant-members.html +1 -1
  291. package/SVF-doxygen/html/html/classSVF_1_1SVFConstant.html +3 -3
  292. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData-members.html +1 -1
  293. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData.html +2 -2
  294. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP-members.html +1 -1
  295. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP.html +2 -2
  296. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt-members.html +1 -1
  297. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt.html +2 -2
  298. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr-members.html +1 -1
  299. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr.html +2 -2
  300. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +1 -1
  301. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +5 -7
  302. package/SVF-doxygen/html/html/classSVF_1_1SVFFunctionType.html +9 -9
  303. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +2 -2
  304. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +211 -236
  305. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder-members.html +7 -9
  306. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +50 -138
  307. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +9 -9
  308. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +82 -82
  309. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +5 -5
  310. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue-members.html +1 -1
  311. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue.html +2 -2
  312. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +1 -1
  313. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +203 -215
  314. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +13 -13
  315. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +79 -79
  316. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction-members.html +1 -1
  317. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +4 -4
  318. package/SVF-doxygen/html/html/classSVF_1_1SVFIntergerType.html +5 -5
  319. package/SVF-doxygen/html/html/classSVF_1_1SVFLoopAndDomInfo-members.html +1 -1
  320. package/SVF-doxygen/html/html/classSVF_1_1SVFLoopAndDomInfo.html +5 -5
  321. package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue-members.html +1 -1
  322. package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue.html +2 -2
  323. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +0 -4
  324. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherType.html +5 -5
  325. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue-members.html +1 -1
  326. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue.html +3 -3
  327. package/SVF-doxygen/html/html/classSVF_1_1SVFPointerType.html +9 -9
  328. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +19 -19
  329. package/SVF-doxygen/html/html/classSVF_1_1SVFStructType.html +5 -5
  330. package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +38 -38
  331. package/SVF-doxygen/html/html/classSVF_1_1SVFValue-members.html +1 -1
  332. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +4 -5
  333. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +1 -1
  334. package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst-members.html +1 -1
  335. package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst.html +2 -2
  336. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +9 -9
  337. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder-members.html +12 -14
  338. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +42 -68
  339. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector-members.html +1 -1
  340. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +108 -109
  341. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator-members.html +1 -1
  342. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html +50 -50
  343. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +6 -6
  344. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +146 -146
  345. package/SVF-doxygen/html/html/classSVF_1_1StInfo-members.html +5 -5
  346. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +48 -61
  347. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +178 -179
  348. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +35 -38
  349. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
  350. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +20 -20
  351. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +42 -46
  352. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +10 -10
  353. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +8 -8
  354. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +169 -170
  355. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +31 -34
  356. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
  357. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +28 -28
  358. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +263 -264
  359. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +112 -115
  360. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +41 -41
  361. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
  362. package/SVF-doxygen/html/html/classSVF_1_1VersionedPTData.html +9 -9
  363. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver-members.html +2 -2
  364. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +9 -9
  365. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver-members.html +2 -2
  366. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +15 -15
  367. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +25 -25
  368. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver-members.html +2 -2
  369. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +17 -17
  370. package/SVF-doxygen/html/html/classSVF_1_1WPASolver-members.html +2 -2
  371. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +76 -81
  372. package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +2 -2
  373. package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
  374. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  375. package/SVF-doxygen/html/html/functions.html +1 -1
  376. package/SVF-doxygen/html/html/functions_0x7e.html +16 -16
  377. package/SVF-doxygen/html/html/functions_a.html +7 -7
  378. package/SVF-doxygen/html/html/functions_b.html +6 -6
  379. package/SVF-doxygen/html/html/functions_c.html +27 -27
  380. package/SVF-doxygen/html/html/functions_d.html +10 -11
  381. package/SVF-doxygen/html/html/functions_e.html +2 -2
  382. package/SVF-doxygen/html/html/functions_f.html +6 -6
  383. package/SVF-doxygen/html/html/functions_func.html +6 -6
  384. package/SVF-doxygen/html/html/functions_func_0x7e.html +16 -16
  385. package/SVF-doxygen/html/html/functions_func_b.html +6 -6
  386. package/SVF-doxygen/html/html/functions_func_c.html +27 -27
  387. package/SVF-doxygen/html/html/functions_func_d.html +10 -11
  388. package/SVF-doxygen/html/html/functions_func_e.html +2 -2
  389. package/SVF-doxygen/html/html/functions_func_f.html +5 -5
  390. package/SVF-doxygen/html/html/functions_func_g.html +22 -22
  391. package/SVF-doxygen/html/html/functions_func_h.html +3 -3
  392. package/SVF-doxygen/html/html/functions_func_i.html +3 -3
  393. package/SVF-doxygen/html/html/functions_func_o.html +3 -3
  394. package/SVF-doxygen/html/html/functions_func_p.html +5 -5
  395. package/SVF-doxygen/html/html/functions_func_r.html +5 -8
  396. package/SVF-doxygen/html/html/functions_func_s.html +6 -6
  397. package/SVF-doxygen/html/html/functions_func_t.html +1 -1
  398. package/SVF-doxygen/html/html/functions_func_u.html +23 -23
  399. package/SVF-doxygen/html/html/functions_g.html +25 -28
  400. package/SVF-doxygen/html/html/functions_h.html +3 -3
  401. package/SVF-doxygen/html/html/functions_i.html +6 -6
  402. package/SVF-doxygen/html/html/functions_m.html +1 -1
  403. package/SVF-doxygen/html/html/functions_o.html +13 -13
  404. package/SVF-doxygen/html/html/functions_p.html +19 -19
  405. package/SVF-doxygen/html/html/functions_r.html +11 -12
  406. package/SVF-doxygen/html/html/functions_s.html +33 -36
  407. package/SVF-doxygen/html/html/functions_t.html +12 -12
  408. package/SVF-doxygen/html/html/functions_type_t.html +1 -1
  409. package/SVF-doxygen/html/html/functions_u.html +26 -23
  410. package/SVF-doxygen/html/html/functions_v.html +6 -6
  411. package/SVF-doxygen/html/html/functions_vars.html +1 -1
  412. package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
  413. package/SVF-doxygen/html/html/functions_vars_g.html +0 -3
  414. package/SVF-doxygen/html/html/functions_vars_i.html +1 -1
  415. package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
  416. package/SVF-doxygen/html/html/functions_vars_p.html +2 -2
  417. package/SVF-doxygen/html/html/functions_vars_s.html +5 -8
  418. package/SVF-doxygen/html/html/functions_vars_t.html +1 -1
  419. package/SVF-doxygen/html/html/functions_vars_u.html +3 -0
  420. package/SVF-doxygen/html/html/functions_w.html +3 -7
  421. package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +1 -1
  422. package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
  423. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  424. package/SVF-doxygen/html/html/namespaceSVF.html +35 -35
  425. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +2 -2
  426. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +4 -4
  427. package/SVF-doxygen/html/html/saber_8cpp.html +1 -5
  428. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -5
  429. package/SVF-doxygen/html/html/search/all_0.js +1 -1
  430. package/SVF-doxygen/html/html/search/all_1.js +4 -4
  431. package/SVF-doxygen/html/html/search/all_10.js +15 -15
  432. package/SVF-doxygen/html/html/search/all_11.js +1 -2
  433. package/SVF-doxygen/html/html/search/all_12.js +20 -21
  434. package/SVF-doxygen/html/html/search/all_13.js +8 -8
  435. package/SVF-doxygen/html/html/search/all_14.js +13 -12
  436. package/SVF-doxygen/html/html/search/all_15.js +4 -4
  437. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  438. package/SVF-doxygen/html/html/search/all_19.js +16 -16
  439. package/SVF-doxygen/html/html/search/all_2.js +6 -6
  440. package/SVF-doxygen/html/html/search/all_3.js +14 -14
  441. package/SVF-doxygen/html/html/search/all_4.js +5 -5
  442. package/SVF-doxygen/html/html/search/all_5.js +2 -2
  443. package/SVF-doxygen/html/html/search/all_6.js +5 -5
  444. package/SVF-doxygen/html/html/search/all_7.js +11 -12
  445. package/SVF-doxygen/html/html/search/all_8.js +3 -3
  446. package/SVF-doxygen/html/html/search/all_9.js +4 -4
  447. package/SVF-doxygen/html/html/search/all_b.js +1 -1
  448. package/SVF-doxygen/html/html/search/all_c.js +3 -3
  449. package/SVF-doxygen/html/html/search/all_d.js +3 -3
  450. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  451. package/SVF-doxygen/html/html/search/all_f.js +5 -5
  452. package/SVF-doxygen/html/html/search/functions_0.js +4 -4
  453. package/SVF-doxygen/html/html/search/functions_1.js +6 -6
  454. package/SVF-doxygen/html/html/search/functions_10.js +1 -2
  455. package/SVF-doxygen/html/html/search/functions_11.js +11 -11
  456. package/SVF-doxygen/html/html/search/functions_12.js +1 -1
  457. package/SVF-doxygen/html/html/search/functions_13.js +12 -12
  458. package/SVF-doxygen/html/html/search/functions_17.js +16 -16
  459. package/SVF-doxygen/html/html/search/functions_2.js +14 -14
  460. package/SVF-doxygen/html/html/search/functions_3.js +5 -5
  461. package/SVF-doxygen/html/html/search/functions_4.js +2 -2
  462. package/SVF-doxygen/html/html/search/functions_5.js +4 -4
  463. package/SVF-doxygen/html/html/search/functions_6.js +11 -11
  464. package/SVF-doxygen/html/html/search/functions_7.js +3 -3
  465. package/SVF-doxygen/html/html/search/functions_8.js +3 -3
  466. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  467. package/SVF-doxygen/html/html/search/functions_e.js +3 -3
  468. package/SVF-doxygen/html/html/search/functions_f.js +5 -5
  469. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
  470. package/SVF-doxygen/html/html/search/variables_0.js +1 -1
  471. package/SVF-doxygen/html/html/search/variables_10.js +2 -2
  472. package/SVF-doxygen/html/html/search/variables_12.js +5 -6
  473. package/SVF-doxygen/html/html/search/variables_13.js +3 -3
  474. package/SVF-doxygen/html/html/search/variables_14.js +1 -0
  475. package/SVF-doxygen/html/html/search/variables_6.js +1 -1
  476. package/SVF-doxygen/html/html/search/variables_7.js +0 -1
  477. package/SVF-doxygen/html/html/search/variables_9.js +1 -1
  478. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  479. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  480. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +14 -14
  481. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +2 -2
  482. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
  483. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +1 -1
  484. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +2 -2
  485. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
  486. package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement-members.html +1 -1
  487. package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement.html +47 -57
  488. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
  489. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1PointsTo_01_4.html +1 -1
  490. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SparseBitVector_3_01N_01_4_01_4.html +5 -5
  491. package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
  492. package/SVF-doxygen/html/html/svf-ex_8cpp.html +6 -7
  493. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +7 -7
  494. package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
  495. package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
  496. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  497. package/build.sh +2 -2
  498. package/include/DDA/DDAPass.h +1 -1
  499. package/include/DDA/FlowDDA.h +1 -1
  500. package/include/Graphs/ICFG.h +1 -1
  501. package/include/Graphs/SVFG.h +3 -4
  502. package/include/Graphs/SVFGOPT.h +7 -7
  503. package/include/MSSA/MemSSA.h +2 -0
  504. package/include/MSSA/SVFGBuilder.h +5 -14
  505. package/include/MTA/MTA.h +2 -2
  506. package/include/MemoryModel/MutablePointsToDS.h +3 -3
  507. package/include/MemoryModel/PersistentPointsToCache.h +7 -8
  508. package/include/MemoryModel/PersistentPointsToDS.h +93 -93
  509. package/include/MemoryModel/PointerAnalysisImpl.h +17 -28
  510. package/include/MemoryModel/PointsTo.h +24 -24
  511. package/include/SABER/SrcSnkDDA.h +10 -13
  512. package/include/SVF-LLVM/LLVMLoopAnalysis.h +2 -1
  513. package/include/SVF-LLVM/LLVMModule.h +6 -6
  514. package/include/SVFIR/SVFIR.h +3 -5
  515. package/include/SVFIR/SVFType.h +6 -8
  516. package/include/SVFIR/SVFValue.h +5 -5
  517. package/include/Util/Options.h +0 -1
  518. package/include/Util/SparseBitVector.h +6 -14
  519. package/include/WPA/FlowSensitive.h +13 -20
  520. package/include/WPA/WPASolver.h +5 -9
  521. package/lib/DDA/DDAPass.cpp +4 -4
  522. package/lib/Graphs/CFLGraph.cpp +3 -0
  523. package/lib/Graphs/SVFG.cpp +1 -1
  524. package/lib/MSSA/MemSSA.cpp +5 -3
  525. package/lib/MSSA/SVFGBuilder.cpp +9 -27
  526. package/lib/MTA/MTA.cpp +4 -4
  527. package/lib/MemoryModel/PointerAnalysisImpl.cpp +10 -10
  528. package/lib/MemoryModel/PointsTo.cpp +23 -19
  529. package/lib/SVF-LLVM/LLVMLoopAnalysis.cpp +3 -4
  530. package/lib/SVF-LLVM/LLVMModule.cpp +32 -21
  531. package/lib/SVFIR/SVFIR.cpp +1 -1
  532. package/lib/SVFIR/SymbolTableInfo.cpp +4 -15
  533. package/lib/Util/Options.cpp +0 -6
  534. package/lib/WPA/AndersenSFR.cpp +1 -1
  535. package/lib/WPA/FlowSensitive.cpp +1 -1
  536. package/package.json +1 -1
  537. package/tools/CFL/cfl.cpp +5 -4
  538. package/tools/DDA/dda.cpp +3 -2
  539. package/tools/Example/svf-ex.cpp +3 -2
  540. package/tools/MTA/mta.cpp +6 -4
  541. package/tools/SABER/saber.cpp +7 -5
  542. package/tools/WPA/wpa.cpp +3 -2
@@ -115,12 +115,12 @@ void DDAPass::runPointerAnalysis(SVFIR* pag, u32_t kind)
115
115
  {
116
116
  case PointerAnalysis::Cxt_DDA:
117
117
  {
118
- _pta = new ContextDDA(pag, _client);
118
+ _pta = std::make_unique<ContextDDA>(pag, _client);
119
119
  break;
120
120
  }
121
121
  case PointerAnalysis::FlowS_DDA:
122
122
  {
123
- _pta = new FlowDDA(pag, _client);
123
+ _pta = std::make_unique<FlowDDA>(pag, _client);
124
124
  break;
125
125
  }
126
126
  default:
@@ -137,14 +137,14 @@ void DDAPass::runPointerAnalysis(SVFIR* pag, u32_t kind)
137
137
  ///initialize
138
138
  _pta->initialize();
139
139
  ///compute points-to
140
- _client->answerQueries(_pta);
140
+ _client->answerQueries(_pta.get());
141
141
  ///finalize
142
142
  _pta->finalize();
143
143
  if(Options::PrintCPts)
144
144
  _pta->dumpCPts();
145
145
 
146
146
  if (_pta->printStat())
147
- _client->performStat(_pta);
147
+ _client->performStat(_pta.get());
148
148
 
149
149
  if (Options::PrintQueryPts)
150
150
  printQueryPTS();
@@ -54,7 +54,10 @@ const CFLEdge* CFLGraph::addCFLEdge(CFLNode* src, CFLNode* dst, CFLEdge::GEdgeFl
54
54
  return edge;
55
55
  }
56
56
  else
57
+ {
58
+ delete edge;
57
59
  return nullptr;
60
+ }
58
61
  }
59
62
 
60
63
  const CFLEdge* CFLGraph::hasEdge(CFLNode* src, CFLNode* dst, CFLEdge::GEdgeFlag label)
@@ -197,7 +197,7 @@ FormalOUTSVFGNode::FormalOUTSVFGNode(NodeID id, const MRVer* mrVer, const FunExi
197
197
  /*!
198
198
  * Constructor
199
199
  */
200
- SVFG::SVFG(MemSSA* _mssa, VFGK k): VFG(_mssa->getPTA()->getPTACallGraph(),k),mssa(_mssa), pta(mssa->getPTA())
200
+ SVFG::SVFG(std::unique_ptr<MemSSA> mssa, VFGK k): VFG(mssa->getPTA()->getPTACallGraph(),k),mssa(std::move(mssa)), pta(this->mssa->getPTA())
201
201
  {
202
202
  stat = new SVFGStat(this);
203
203
  }
@@ -357,9 +357,11 @@ MRVer* MemSSA::newSSAName(const MemRegion* mr, MSSADEF* def)
357
357
 
358
358
  MRVERSION version = mr2CounterMap[mr];
359
359
  mr2CounterMap[mr] = version + 1;
360
- MRVer* mrVer = new MRVer(mr, version, def);
361
- mr2VerStackMap[mr].push_back(mrVer);
362
- return mrVer;
360
+ auto mrVer = std::make_unique<MRVer>(mr, version, def);
361
+ auto mrVerPtr = mrVer.get();
362
+ mr2VerStackMap[mr].push_back(mrVerPtr);
363
+ usedMRVers.push_back(std::move(mrVer));
364
+ return mrVerPtr;
363
365
  }
364
366
 
365
367
  /*!
@@ -38,9 +38,6 @@ using namespace SVF;
38
38
  using namespace SVFUtil;
39
39
 
40
40
 
41
- SVFG* SVFGBuilder::globalSvfg = nullptr;
42
-
43
-
44
41
  SVFG* SVFGBuilder::buildPTROnlySVFG(BVDataPTAImpl* pta)
45
42
  {
46
43
  if(Options::OPTSVFG)
@@ -67,41 +64,26 @@ void SVFGBuilder::buildSVFG()
67
64
  SVFG* SVFGBuilder::build(BVDataPTAImpl* pta, VFG::VFGK kind)
68
65
  {
69
66
 
70
- MemSSA* mssa = buildMSSA(pta, (VFG::PTRONLYSVFG==kind || VFG::PTRONLYSVFG_OPT==kind));
67
+ auto mssa = buildMSSA(pta, (VFG::PTRONLYSVFG==kind || VFG::PTRONLYSVFG_OPT==kind));
71
68
 
72
69
  DBOUT(DGENERAL, outs() << pasMsg("Build Sparse Value-Flow Graph \n"));
73
- if(Options::SingleVFG)
74
- {
75
- if(globalSvfg==nullptr)
76
- {
77
- /// Note that we use callgraph from andersen analysis here
78
- if(kind == VFG::FULLSVFG_OPT || kind == VFG::PTRONLYSVFG_OPT)
79
- svfg = globalSvfg = new SVFGOPT(mssa, kind);
80
- else
81
- svfg = globalSvfg = new SVFG(mssa, kind);
82
- buildSVFG();
83
- }
84
- }
70
+ if(kind == VFG::FULLSVFG_OPT || kind == VFG::PTRONLYSVFG_OPT)
71
+ svfg = std::make_unique<SVFGOPT>(std::move(mssa), kind);
85
72
  else
86
- {
87
- if(kind == VFG::FULLSVFG_OPT || kind == VFG::PTRONLYSVFG_OPT)
88
- svfg = new SVFGOPT(mssa, kind);
89
- else
90
- svfg = new SVFG(mssa,kind);
91
- buildSVFG();
92
- }
73
+ svfg = std::unique_ptr<SVFG>(new SVFG(std::move(mssa),kind));
74
+ buildSVFG();
93
75
 
94
76
  /// Update call graph using pre-analysis results
95
77
  if(Options::SVFGWithIndirectCall || SVFGWithIndCall)
96
78
  svfg->updateCallGraph(pta);
97
79
 
98
- if(mssa->getPTA()->printStat())
80
+ if(svfg->getMSSA()->getPTA()->printStat())
99
81
  svfg->performStat();
100
82
 
101
83
  if(Options::DumpVFG)
102
84
  svfg->dump("svfg_final");
103
85
 
104
- return svfg;
86
+ return svfg.get();
105
87
  }
106
88
 
107
89
  /*!
@@ -112,12 +94,12 @@ void SVFGBuilder::releaseMemory()
112
94
  svfg->clearMSSA();
113
95
  }
114
96
 
115
- MemSSA* SVFGBuilder::buildMSSA(BVDataPTAImpl* pta, bool ptrOnlyMSSA)
97
+ std::unique_ptr<MemSSA> SVFGBuilder::buildMSSA(BVDataPTAImpl* pta, bool ptrOnlyMSSA)
116
98
  {
117
99
 
118
100
  DBOUT(DGENERAL, outs() << pasMsg("Build Memory SSA \n"));
119
101
 
120
- MemSSA* mssa = new MemSSA(pta, ptrOnlyMSSA);
102
+ auto mssa = std::make_unique<MemSSA>(pta, ptrOnlyMSSA);
121
103
 
122
104
  SVFModule* svfModule = mssa->getPTA()->getModule();
123
105
  for (SVFModule::const_iterator iter = svfModule->begin(), eiter = svfModule->end();
package/lib/MTA/MTA.cpp CHANGED
@@ -43,7 +43,7 @@ using namespace SVFUtil;
43
43
 
44
44
  MTA::MTA() : tcg(nullptr), tct(nullptr), mhp(nullptr), lsa(nullptr)
45
45
  {
46
- stat = new MTAStat();
46
+ stat = std::make_unique<MTAStat>();
47
47
  }
48
48
 
49
49
  MTA::~MTA()
@@ -129,7 +129,7 @@ MHP* MTA::computeMHP(SVFModule* module)
129
129
  DBOUT(DGENERAL, outs() << pasMsg("Build TCT\n"));
130
130
  DBOUT(DMTA, outs() << pasMsg("Build TCT\n"));
131
131
  DOTIMESTAT(double tctStart = stat->getClk());
132
- tct = new TCT(pta);
132
+ tct = std::make_unique<TCT>(pta);
133
133
  tcg = tct->getThreadCallGraph();
134
134
  DOTIMESTAT(double tctEnd = stat->getClk());
135
135
  DOTIMESTAT(stat->TCTTime += (tctEnd - tctStart) / TIMEINTERVAL);
@@ -137,7 +137,7 @@ MHP* MTA::computeMHP(SVFModule* module)
137
137
  if (pta->printStat())
138
138
  {
139
139
  stat->performThreadCallGraphStat(tcg);
140
- stat->performTCTStat(tct);
140
+ stat->performTCTStat(tct.get());
141
141
  }
142
142
 
143
143
  tcg->dump("tcg");
@@ -146,7 +146,7 @@ MHP* MTA::computeMHP(SVFModule* module)
146
146
  DBOUT(DMTA, outs() << pasMsg("MHP analysis\n"));
147
147
 
148
148
  DOTIMESTAT(double mhpStart = stat->getClk());
149
- MHP* mhp = new MHP(tct);
149
+ MHP* mhp = new MHP(tct.get());
150
150
  mhp->analyze();
151
151
  DOTIMESTAT(double mhpEnd = stat->getClk());
152
152
  DOTIMESTAT(stat->MHPTime += (mhpEnd - mhpStart) / TIMEINTERVAL);
@@ -53,36 +53,36 @@ BVDataPTAImpl::BVDataPTAImpl(SVFIR* p, PointerAnalysis::PTATY type, bool alias_c
53
53
  // Only maintain reverse points-to when the analysis is field-sensitive, as objects turning
54
54
  // field-insensitive is all it is used for.
55
55
  bool maintainRevPts = Options::MaxFieldLimit != 0;
56
- if (Options::ptDataBacking == PTBackingType::Mutable) ptD = new MutDiffPTDataTy(maintainRevPts);
57
- else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = new PersDiffPTDataTy(getPtCache(), maintainRevPts);
56
+ if (Options::ptDataBacking == PTBackingType::Mutable) ptD = std::make_unique<MutDiffPTDataTy>(maintainRevPts);
57
+ else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = std::make_unique<PersDiffPTDataTy>(getPtCache(), maintainRevPts);
58
58
  else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
59
59
  }
60
60
  else if (type == Steensgaard_WPA)
61
61
  {
62
62
  // Steensgaard is only field-insensitive (for now?), so no reverse points-to.
63
- if (Options::ptDataBacking == PTBackingType::Mutable) ptD = new MutDiffPTDataTy(false);
64
- else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = new PersDiffPTDataTy(getPtCache(), false);
63
+ if (Options::ptDataBacking == PTBackingType::Mutable) ptD = std::make_unique<MutDiffPTDataTy>(false);
64
+ else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = std::make_unique<PersDiffPTDataTy>(getPtCache(), false);
65
65
  else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
66
66
  }
67
67
  else if (type == FSSPARSE_WPA)
68
68
  {
69
69
  if (Options::INCDFPTData)
70
70
  {
71
- if (Options::ptDataBacking == PTBackingType::Mutable) ptD = new MutIncDFPTDataTy(false);
72
- else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = new PersIncDFPTDataTy(getPtCache(), false);
71
+ if (Options::ptDataBacking == PTBackingType::Mutable) ptD = std::make_unique<MutIncDFPTDataTy>(false);
72
+ else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = std::make_unique<PersIncDFPTDataTy>(getPtCache(), false);
73
73
  else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
74
74
  }
75
75
  else
76
76
  {
77
- if (Options::ptDataBacking == PTBackingType::Mutable) ptD = new MutDFPTDataTy(false);
78
- else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = new PersDFPTDataTy(getPtCache(), false);
77
+ if (Options::ptDataBacking == PTBackingType::Mutable) ptD = std::make_unique<MutDFPTDataTy>(false);
78
+ else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = std::make_unique<PersDFPTDataTy>(getPtCache(), false);
79
79
  else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
80
80
  }
81
81
  }
82
82
  else if (type == VFS_WPA)
83
83
  {
84
- if (Options::ptDataBacking == PTBackingType::Mutable) ptD = new MutVersionedPTDataTy(false);
85
- else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = new PersVersionedPTDataTy(getPtCache(), false);
84
+ if (Options::ptDataBacking == PTBackingType::Mutable) ptD = std::make_unique<MutVersionedPTDataTy>(false);
85
+ else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = std::make_unique<PersVersionedPTDataTy>(getPtCache(), false);
86
86
  else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
87
87
  }
88
88
  else assert(false && "no points-to data available");
@@ -10,6 +10,7 @@
10
10
  */
11
11
 
12
12
  #include <new>
13
+ #include <utility>
13
14
 
14
15
  #include "Util/Options.h"
15
16
  #include "MemoryModel/PointsTo.h"
@@ -21,7 +22,7 @@ namespace SVF
21
22
  PointsTo::MappingPtr PointsTo::currentBestNodeMapping = nullptr;
22
23
  PointsTo::MappingPtr PointsTo::currentBestReverseNodeMapping = nullptr;
23
24
 
24
- PointsTo::PointsTo(void)
25
+ PointsTo::PointsTo()
25
26
  : type(Options::PtType), nodeMapping(currentBestNodeMapping),
26
27
  reverseNodeMapping(currentBestReverseNodeMapping)
27
28
  {
@@ -42,8 +43,8 @@ PointsTo::PointsTo(const PointsTo &pt)
42
43
  }
43
44
 
44
45
  PointsTo::PointsTo(PointsTo &&pt)
45
- : type(pt.type), nodeMapping(pt.nodeMapping),
46
- reverseNodeMapping(pt.reverseNodeMapping)
46
+ noexcept : type(pt.type), nodeMapping(std::move(pt.nodeMapping)),
47
+ reverseNodeMapping(std::move(pt.reverseNodeMapping))
47
48
  {
48
49
  if (type == SBV) new (&sbv) SparseBitVector<>(std::move(pt.sbv));
49
50
  else if (type == CBV) new (&cbv) CoreBitVector(std::move(pt.cbv));
@@ -51,7 +52,7 @@ PointsTo::PointsTo(PointsTo &&pt)
51
52
  else assert(false && "PointsTo::PointsTo&&: unknown type");
52
53
  }
53
54
 
54
- PointsTo::~PointsTo(void)
55
+ PointsTo::~PointsTo()
55
56
  {
56
57
  if (type == SBV) sbv.~SparseBitVector<>();
57
58
  else if (type == CBV) cbv.~CoreBitVector();
@@ -64,6 +65,8 @@ PointsTo::~PointsTo(void)
64
65
 
65
66
  PointsTo &PointsTo::operator=(const PointsTo &rhs)
66
67
  {
68
+ if (this == &rhs)
69
+ return *this;
67
70
  this->type = rhs.type;
68
71
  this->nodeMapping = rhs.nodeMapping;
69
72
  this->reverseNodeMapping = rhs.reverseNodeMapping;
@@ -78,6 +81,7 @@ PointsTo &PointsTo::operator=(const PointsTo &rhs)
78
81
  }
79
82
 
80
83
  PointsTo &PointsTo::operator=(PointsTo &&rhs)
84
+ noexcept
81
85
  {
82
86
  this->type = rhs.type;
83
87
  this->nodeMapping = rhs.nodeMapping;
@@ -91,7 +95,7 @@ PointsTo &PointsTo::operator=(PointsTo &&rhs)
91
95
  return *this;
92
96
  }
93
97
 
94
- bool PointsTo::empty(void) const
98
+ bool PointsTo::empty() const
95
99
  {
96
100
  if (type == CBV) return cbv.empty();
97
101
  else if (type == SBV) return sbv.empty();
@@ -116,7 +120,7 @@ u32_t PointsTo::count(void) const
116
120
  }
117
121
  }
118
122
 
119
- void PointsTo::clear(void)
123
+ void PointsTo::clear()
120
124
  {
121
125
  if (type == CBV) cbv.clear();
122
126
  else if (type == SBV) sbv.clear();
@@ -196,7 +200,7 @@ bool PointsTo::intersects(const PointsTo &rhs) const
196
200
  }
197
201
  }
198
202
 
199
- int PointsTo::find_first(void)
203
+ int PointsTo::find_first()
200
204
  {
201
205
  if (count() == 0) return -1;
202
206
  return *begin();
@@ -306,14 +310,14 @@ void PointsTo::intersectWithComplement(const PointsTo &lhs, const PointsTo &rhs)
306
310
  }
307
311
  }
308
312
 
309
- NodeBS PointsTo::toNodeBS(void) const
313
+ NodeBS PointsTo::toNodeBS() const
310
314
  {
311
315
  NodeBS nbs;
312
316
  for (const NodeID o : *this) nbs.set(o);
313
317
  return nbs;
314
318
  }
315
319
 
316
- size_t PointsTo::hash(void) const
320
+ size_t PointsTo::hash() const
317
321
  {
318
322
  if (type == CBV) return cbv.hash();
319
323
  else if (type == SBV)
@@ -330,7 +334,7 @@ size_t PointsTo::hash(void) const
330
334
  }
331
335
  }
332
336
 
333
- PointsTo::MappingPtr PointsTo::getNodeMapping(void) const
337
+ PointsTo::MappingPtr PointsTo::getNodeMapping() const
334
338
  {
335
339
  return nodeMapping;
336
340
  }
@@ -354,12 +358,12 @@ bool PointsTo::metaSame(const PointsTo &pt) const
354
358
  return nodeMapping == pt.nodeMapping && reverseNodeMapping == pt.reverseNodeMapping;
355
359
  }
356
360
 
357
- PointsTo::MappingPtr PointsTo::getCurrentBestNodeMapping(void)
361
+ PointsTo::MappingPtr PointsTo::getCurrentBestNodeMapping()
358
362
  {
359
363
  return currentBestNodeMapping;
360
364
  }
361
365
 
362
- PointsTo::MappingPtr PointsTo::getCurrentBestReverseNodeMapping(void)
366
+ PointsTo::MappingPtr PointsTo::getCurrentBestReverseNodeMapping()
363
367
  {
364
368
  return currentBestReverseNodeMapping;
365
369
  }
@@ -367,11 +371,11 @@ PointsTo::MappingPtr PointsTo::getCurrentBestReverseNodeMapping(void)
367
371
  void PointsTo::setCurrentBestNodeMapping(MappingPtr newCurrentBestNodeMapping,
368
372
  MappingPtr newCurrentBestReverseNodeMapping)
369
373
  {
370
- currentBestNodeMapping = newCurrentBestNodeMapping;
371
- currentBestReverseNodeMapping = newCurrentBestReverseNodeMapping;
374
+ currentBestNodeMapping = std::move(newCurrentBestNodeMapping);
375
+ currentBestReverseNodeMapping = std::move(newCurrentBestReverseNodeMapping);
372
376
  }
373
377
 
374
- void PointsTo::checkAndRemap(void)
378
+ void PointsTo::checkAndRemap()
375
379
  {
376
380
  if (nodeMapping != currentBestNodeMapping)
377
381
  {
@@ -427,7 +431,7 @@ PointsTo::PointsToIterator::PointsToIterator(const PointsToIterator &pt)
427
431
  }
428
432
 
429
433
  PointsTo::PointsToIterator::PointsToIterator(PointsToIterator &&pt)
430
- : pt(pt.pt)
434
+ noexcept : pt(pt.pt)
431
435
  {
432
436
  if (this->pt->type == PointsTo::Type::SBV)
433
437
  {
@@ -490,7 +494,7 @@ PointsTo::PointsToIterator &PointsTo::PointsToIterator::operator=(PointsToIterat
490
494
  return *this;
491
495
  }
492
496
 
493
- const PointsTo::PointsToIterator &PointsTo::PointsToIterator::operator++(void)
497
+ const PointsTo::PointsToIterator &PointsTo::PointsToIterator::operator++()
494
498
  {
495
499
  assert(!atEnd() && "PointsToIterator::++(pre): incrementing past end!");
496
500
  if (pt->type == Type::CBV) ++cbvIt;
@@ -509,7 +513,7 @@ const PointsTo::PointsToIterator PointsTo::PointsToIterator::operator++(int)
509
513
  return old;
510
514
  }
511
515
 
512
- NodeID PointsTo::PointsToIterator::operator*(void) const
516
+ NodeID PointsTo::PointsToIterator::operator*() const
513
517
  {
514
518
  assert(!atEnd() && "PointsToIterator: dereferencing end!");
515
519
  if (pt->type == Type::CBV) return pt->getExternalNode(*cbvIt);
@@ -545,7 +549,7 @@ bool PointsTo::PointsToIterator::operator!=(const PointsToIterator &rhs) const
545
549
  return !(*this == rhs);
546
550
  }
547
551
 
548
- bool PointsTo::PointsToIterator::atEnd(void) const
552
+ bool PointsTo::PointsToIterator::atEnd() const
549
553
  {
550
554
  assert(pt != nullptr && "PointsToIterator::atEnd: iterator iterating over nothing!");
551
555
  if (pt->type == Type::CBV) return cbvIt == pt->cbv.end();
@@ -44,7 +44,7 @@ using namespace SVFUtil;
44
44
  * @param mod SVF module
45
45
  * @param llvmLoops output llvm loops
46
46
  */
47
- void LLVMLoopAnalysis::buildLLVMLoops(SVFModule *mod, std::vector<const Loop *> &llvmLoops)
47
+ void LLVMLoopAnalysis::buildLLVMLoops(SVFModule *mod, std::vector<const Loop *> &llvmLoops, llvm::LoopInfoBase<llvm::BasicBlock, llvm::Loop> * loopInfo)
48
48
  {
49
49
  llvm::DominatorTree DT = llvm::DominatorTree();
50
50
  std::vector<const Loop *> loop_stack;
@@ -57,8 +57,6 @@ void LLVMLoopAnalysis::buildLLVMLoops(SVFModule *mod, std::vector<const Loop *>
57
57
  // do not analyze external call
58
58
  if (SVFUtil::isExtCall(svffun)) continue;
59
59
  DT.recalculate(const_cast<Function&>(*func));
60
- auto loopInfo = new llvm::LoopInfoBase<llvm::BasicBlock, llvm::Loop>();
61
- loopInfo->releaseMemory();
62
60
  loopInfo->analyze(DT);
63
61
  for (const auto &loop: *loopInfo)
64
62
  {
@@ -86,7 +84,8 @@ void LLVMLoopAnalysis::buildLLVMLoops(SVFModule *mod, std::vector<const Loop *>
86
84
  void LLVMLoopAnalysis::build(ICFG *icfg)
87
85
  {
88
86
  std::vector<const Loop *> llvmLoops;
89
- buildLLVMLoops(PAG::getPAG()->getModule(), llvmLoops);
87
+ llvm::LoopInfoBase<llvm::BasicBlock, llvm::Loop> loopInfo;
88
+ buildLLVMLoops(PAG::getPAG()->getModule(), llvmLoops, &loopInfo);
90
89
  buildSVFLoops(icfg, llvmLoops);
91
90
  }
92
91
 
@@ -83,12 +83,12 @@ LLVMModuleSet::~LLVMModuleSet()
83
83
 
84
84
  SVFModule* LLVMModuleSet::buildSVFModule(Module &mod)
85
85
  {
86
- svfModule = new SVFModule(mod.getModuleIdentifier());
86
+ svfModule = std::make_unique<SVFModule>(mod.getModuleIdentifier());
87
87
  modules.emplace_back(mod);
88
88
 
89
89
  build();
90
90
 
91
- return svfModule;
91
+ return svfModule.get();
92
92
  }
93
93
 
94
94
  SVFModule* LLVMModuleSet::buildSVFModule(const std::vector<std::string> &moduleNameVec)
@@ -100,9 +100,9 @@ SVFModule* LLVMModuleSet::buildSVFModule(const std::vector<std::string> &moduleN
100
100
  loadModules(moduleNameVec);
101
101
 
102
102
  if(!moduleNameVec.empty())
103
- svfModule = new SVFModule(*moduleNameVec.begin());
103
+ svfModule = std::make_unique<SVFModule>(*moduleNameVec.begin());
104
104
  else
105
- svfModule = new SVFModule();
105
+ svfModule = std::make_unique<SVFModule>();
106
106
 
107
107
  build();
108
108
 
@@ -115,12 +115,12 @@ SVFModule* LLVMModuleSet::buildSVFModule(const std::vector<std::string> &moduleN
115
115
  /// building symbol table
116
116
  DBOUT(DGENERAL, SVFUtil::outs() << SVFUtil::pasMsg("Building Symbol table ...\n"));
117
117
  SymbolTableBuilder builder(symInfo);
118
- builder.buildMemModel(svfModule);
118
+ builder.buildMemModel(svfModule.get());
119
119
  }
120
120
  double endSymInfoTime = SVFStat::getClk(true);
121
121
  SVFStat::timeOfBuildingSymbolTable = (endSymInfoTime - startSymInfoTime)/TIMEINTERVAL;
122
122
 
123
- return svfModule;
123
+ return svfModule.get();
124
124
  }
125
125
 
126
126
  void LLVMModuleSet::build()
@@ -983,18 +983,37 @@ StInfo* LLVMModuleSet::collectTypeInfo(const Type* T)
983
983
  Type2TypeInfoMap::iterator tit = Type2TypeInfo.find(T);
984
984
  if(tit!=Type2TypeInfo.end())
985
985
  {
986
- stinfo = tit->second;
986
+ stinfo = tit->second.get();
987
987
  }
988
988
  else
989
989
  {
990
990
  if (const ArrayType* aty = SVFUtil::dyn_cast<ArrayType>(T))
991
+ {
991
992
  stinfo = collectArrayInfo(aty);
993
+ Type2TypeInfo[T] = std::unique_ptr<StInfo>(stinfo);
994
+ }
992
995
  else if (const StructType* sty = SVFUtil::dyn_cast<StructType>(T))
993
- stinfo = collectStructInfo(sty);
996
+ {
997
+ u32_t nf;
998
+ stinfo = collectStructInfo(sty, nf);
999
+ Type2TypeInfo[T] = std::unique_ptr<StInfo>(stinfo);
1000
+ //Record the size of the complete struct and update max_struct.
1001
+ if (nf > symInfo->maxStSize)
1002
+ {
1003
+ symInfo->maxStruct = getSVFType(sty);
1004
+ symInfo->maxStSize = nf;
1005
+ }
1006
+ }
994
1007
  else
995
- stinfo = collectSimpleTypeInfo(T);
1008
+ {
1009
+ /// The simple type info should not be processed before
1010
+ auto stinfo_own = std::make_unique<StInfo>(1);
1011
+ stinfo = stinfo_own.get();
1012
+ Type2TypeInfo[T] = std::move(stinfo_own);
1013
+ collectSimpleTypeInfo(stinfo, T);
1014
+ }
1015
+
996
1016
 
997
- Type2TypeInfo[T] = stinfo;
998
1017
  }
999
1018
  return stinfo;
1000
1019
  }
@@ -1081,13 +1100,13 @@ StInfo* LLVMModuleSet::collectArrayInfo(const ArrayType* ty)
1081
1100
  * Fill in struct_info for T.
1082
1101
  * Given a Struct type, we recursively extend and record its fields and types.
1083
1102
  */
1084
- StInfo* LLVMModuleSet::collectStructInfo(const StructType *sty)
1103
+ StInfo* LLVMModuleSet::collectStructInfo(const StructType *sty, u32_t &nf)
1085
1104
  {
1086
1105
  /// The struct info should not be processed before
1087
1106
  StInfo* stinfo = new StInfo(1);
1088
1107
 
1089
1108
  // Number of fields after flattening the struct
1090
- u32_t nf = 0;
1109
+ nf = 0;
1091
1110
  // The offset when considering array stride info
1092
1111
  u32_t strideOffset = 0;
1093
1112
  for (StructType::element_iterator it = sty->element_begin(), ie =
@@ -1129,13 +1148,6 @@ StInfo* LLVMModuleSet::collectStructInfo(const StructType *sty)
1129
1148
  assert(stinfo->getFlattenElementTypes().size() == strideOffset && "typeForStruct size incorrect!");
1130
1149
  stinfo->setNumOfFieldsAndElems(nf,strideOffset);
1131
1150
 
1132
- //Record the size of the complete struct and update max_struct.
1133
- if (nf > symInfo->maxStSize)
1134
- {
1135
- symInfo->maxStruct = getSVFType(sty);
1136
- symInfo->maxStSize = nf;
1137
- }
1138
-
1139
1151
  return stinfo;
1140
1152
  }
1141
1153
 
@@ -1143,9 +1155,8 @@ StInfo* LLVMModuleSet::collectStructInfo(const StructType *sty)
1143
1155
  /*!
1144
1156
  * Collect simple type (non-aggregate) info
1145
1157
  */
1146
- StInfo* LLVMModuleSet::collectSimpleTypeInfo(const Type* ty)
1158
+ StInfo* LLVMModuleSet::collectSimpleTypeInfo(StInfo * stinfo, const Type* ty)
1147
1159
  {
1148
- StInfo* stinfo = new StInfo(1);
1149
1160
  /// Only one field
1150
1161
  stinfo->addFldWithType(0, getSVFType(ty), 0);
1151
1162
 
@@ -34,7 +34,7 @@ using namespace SVF;
34
34
  using namespace SVFUtil;
35
35
 
36
36
 
37
- SVFIR* SVFIR::pag = nullptr;
37
+ std::unique_ptr<SVFIR> SVFIR::pag;
38
38
 
39
39
  SVFIR::SVFIR(bool buildFromFile) : IRGraph(buildFromFile), svfModule(nullptr), icfg(nullptr), chgraph(nullptr)
40
40
  {
@@ -127,23 +127,12 @@ void SymbolTableInfo::destroy()
127
127
  if (iter->second)
128
128
  delete iter->second;
129
129
  }
130
- Set<const StInfo*> stinfos;
131
- for (SVFTypeSet::const_iterator iter = svfTypes.begin();
132
- iter != svfTypes.end(); ++iter)
133
- {
134
- const SVFType* type = *iter;
135
- stinfos.insert(type->getTypeInfo());
136
- delete type;
137
- }
138
130
 
139
- for (const StInfo* si : stinfos)
140
- delete si;
131
+ for (auto * type: svfTypes)
132
+ delete type;
133
+ svfTypes.clear();
141
134
 
142
- if(mod)
143
- {
144
- delete mod;
145
- mod = nullptr;
146
- }
135
+ mod = nullptr;
147
136
  }
148
137
 
149
138
  const MemObj* SymbolTableInfo::createDummyObj(SymID symId, const SVFType* type)
@@ -458,12 +458,6 @@ const llvm::cl::opt<bool> Options::SVFGWithIndirectCall(
458
458
  llvm::cl::desc("Update Indirect Calls for SVFG using pre-analysis")
459
459
  );
460
460
 
461
- const llvm::cl::opt<bool> Options::SingleVFG(
462
- "single-vfg",
463
- llvm::cl::init(false),
464
- llvm::cl::desc("Create a single VFG shared by multiple analysis")
465
- );
466
-
467
461
  llvm::cl::opt<bool> Options::OPTSVFG(
468
462
  "opt-svfg",
469
463
  llvm::cl::init(false),
@@ -45,7 +45,7 @@ void AndersenSFR::initialize()
45
45
  setDetectPWC(false); // SCC will detect only copy edges
46
46
 
47
47
  if (!csc)
48
- csc = new CSC(_graph, scc);
48
+ csc = new CSC(_graph, scc.get());
49
49
 
50
50
  /// Detect and collapse cycles consisting of only copy edges
51
51
  getSCCDetector()->find();
@@ -37,7 +37,7 @@
37
37
  using namespace SVF;
38
38
  using namespace SVFUtil;
39
39
 
40
- FlowSensitive* FlowSensitive::fspta = nullptr;
40
+ std::unique_ptr<FlowSensitive> FlowSensitive::fspta;
41
41
 
42
42
  /*!
43
43
  * Initialize analysis
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-tools",
3
- "version": "1.0.613",
3
+ "version": "1.0.615",
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
@@ -64,17 +64,18 @@ int main(int argc, char ** argv)
64
64
  svfir = builder.build();
65
65
  } // if no dot form CFLGraph is specified, we use svfir from .bc.
66
66
 
67
- CFLBase* cfl;
67
+ std::unique_ptr<CFLBase> cfl;
68
68
  if (Options::CFLSVFG)
69
- cfl = new CFLVF(svfir);
69
+ cfl = std::make_unique<CFLVF>(svfir);
70
70
  else
71
- cfl = new CFLAlias(svfir); // if no svfg is specified, we use CFLAlias as the default one.
71
+ cfl = std::make_unique<CFLAlias>(svfir); // if no svfg is specified, we use CFLAlias as the default one.
72
72
  cfl->analyze();
73
73
 
74
- delete cfl;
75
74
  SVFIR::releaseSVFIR();
76
75
  SVF::LLVMModuleSet::releaseLLVMModuleSet();
77
76
 
77
+ delete[] arg_value;
78
+
78
79
  return 0;
79
80
 
80
81
  }
package/tools/DDA/dda.cpp CHANGED
@@ -61,9 +61,10 @@ int main(int argc, char ** argv)
61
61
  SVFIRBuilder builder(svfModule);
62
62
  SVFIR* pag = builder.build();
63
63
 
64
- DDAPass *dda = new DDAPass();
65
- dda->runOnModule(pag);
64
+ DDAPass dda;
65
+ dda.runOnModule(pag);
66
66
 
67
+ delete[] arg_value;
67
68
  return 0;
68
69
 
69
70
  }