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
@@ -71,12 +71,9 @@ public:
71
71
  BVDataPTAImpl(SVFIR* pag, PointerAnalysis::PTATY type, bool alias_check = true);
72
72
 
73
73
  /// Destructor
74
- virtual ~BVDataPTAImpl()
75
- {
76
- destroy();
77
- }
74
+ ~BVDataPTAImpl() override = default;
78
75
 
79
- inline PersistentPointsToCache<PointsTo> &getPtCache(void)
76
+ inline PersistentPointsToCache<PointsTo> &getPtCache()
80
77
  {
81
78
  return ptCache;
82
79
  }
@@ -86,21 +83,13 @@ public:
86
83
  return pta->getImplTy() == BVDataImpl;
87
84
  }
88
85
 
89
- /// Release memory
90
- inline void destroy()
91
- {
92
- delete ptD;
93
- ptD = nullptr;
94
- ptCache.clear();
95
- }
96
-
97
86
  /// Get points-to and reverse points-to
98
87
  ///@{
99
- virtual inline const PointsTo& getPts(NodeID id)
88
+ inline const PointsTo& getPts(NodeID id) override
100
89
  {
101
90
  return ptD->getPts(id);
102
91
  }
103
- virtual inline const NodeSet& getRevPts(NodeID nodeId)
92
+ inline const NodeSet& getRevPts(NodeID nodeId) override
104
93
  {
105
94
  return ptD->getRevPts(nodeId);
106
95
  }
@@ -161,12 +150,12 @@ protected:
161
150
  /// Get points-to data structure
162
151
  inline PTDataTy* getPTDataTy() const
163
152
  {
164
- return ptD;
153
+ return ptD.get();
165
154
  }
166
155
 
167
156
 
168
157
  /// Finalization of pointer analysis, and normalize points-to information to Bit Vector representation
169
- virtual void finalize();
158
+ void finalize() override;
170
159
 
171
160
  /// Update callgraph. This should be implemented by its subclass.
172
161
  virtual inline bool updateCallGraph(const CallSiteToFunPtrMap&)
@@ -177,28 +166,28 @@ protected:
177
166
 
178
167
  inline DiffPTDataTy* getDiffPTDataTy() const
179
168
  {
180
- DiffPTDataTy* diff = SVFUtil::dyn_cast<DiffPTDataTy>(ptD);
169
+ DiffPTDataTy* diff = SVFUtil::dyn_cast<DiffPTDataTy>(ptD.get());
181
170
  assert(diff && "BVDataPTAImpl::getDiffPTDataTy: not a DiffPTDataTy!");
182
171
  return diff;
183
172
  }
184
173
 
185
174
  inline DFPTDataTy* getDFPTDataTy() const
186
175
  {
187
- DFPTDataTy* df = SVFUtil::dyn_cast<DFPTDataTy>(ptD);
176
+ DFPTDataTy* df = SVFUtil::dyn_cast<DFPTDataTy>(ptD.get());
188
177
  assert(df && "BVDataPTAImpl::getDFPTDataTy: not a DFPTDataTy!");
189
178
  return df;
190
179
  }
191
180
 
192
181
  inline MutDFPTDataTy* getMutDFPTDataTy() const
193
182
  {
194
- MutDFPTDataTy* mdf = SVFUtil::dyn_cast<MutDFPTDataTy>(ptD);
183
+ MutDFPTDataTy* mdf = SVFUtil::dyn_cast<MutDFPTDataTy>(ptD.get());
195
184
  assert(mdf && "BVDataPTAImpl::getMutDFPTDataTy: not a MutDFPTDataTy!");
196
185
  return mdf;
197
186
  }
198
187
 
199
188
  inline VersionedPTDataTy* getVersionedPTDataTy() const
200
189
  {
201
- VersionedPTDataTy* v = SVFUtil::dyn_cast<VersionedPTDataTy>(ptD);
190
+ VersionedPTDataTy* v = SVFUtil::dyn_cast<VersionedPTDataTy>(ptD.get());
202
191
  assert(v && "BVDataPTAImpl::getVersionedPTDataTy: not a VersionedPTDataTy!");
203
192
  return v;
204
193
  }
@@ -212,31 +201,31 @@ protected:
212
201
 
213
202
  private:
214
203
  /// Points-to data
215
- PTDataTy* ptD;
204
+ std::unique_ptr<PTDataTy> ptD;
216
205
 
217
206
  PersistentPointsToCache<PointsTo> ptCache;
218
207
 
219
208
  public:
220
209
  /// Interface expose to users of our pointer analysis, given Value infos
221
- virtual AliasResult alias(const SVFValue* V1,
222
- const SVFValue* V2);
210
+ AliasResult alias(const SVFValue* V1,
211
+ const SVFValue* V2) override;
223
212
 
224
213
  /// Interface expose to users of our pointer analysis, given PAGNodeID
225
- virtual AliasResult alias(NodeID node1, NodeID node2);
214
+ AliasResult alias(NodeID node1, NodeID node2) override;
226
215
 
227
216
  /// Interface expose to users of our pointer analysis, given two pts
228
217
  virtual AliasResult alias(const PointsTo& pts1, const PointsTo& pts2);
229
218
 
230
219
  /// dump and debug, print out conditional pts
231
220
  //@{
232
- virtual void dumpCPts()
221
+ void dumpCPts() override
233
222
  {
234
223
  ptD->dumpPTData();
235
224
  }
236
225
 
237
- virtual void dumpTopLevelPtsTo();
226
+ void dumpTopLevelPtsTo() override;
238
227
 
239
- virtual void dumpAllPts();
228
+ void dumpAllPts() override;
240
229
  //@}
241
230
  };
242
231
 
@@ -43,28 +43,28 @@ public:
43
43
 
44
44
  public:
45
45
  /// Construct empty points-to set.
46
- PointsTo(void);
47
- /// Copy costructor.
46
+ PointsTo();
47
+ /// Copy constructor.
48
48
  PointsTo(const PointsTo &pt);
49
49
  /// Move constructor.
50
- PointsTo(PointsTo &&pt);
50
+ PointsTo(PointsTo &&pt) noexcept ;
51
51
 
52
- ~PointsTo(void);
52
+ ~PointsTo();
53
53
 
54
54
  /// Copy assignment.
55
55
  PointsTo &operator=(const PointsTo &rhs);
56
56
 
57
57
  /// Move assignment.
58
- PointsTo &operator=(PointsTo &&rhs);
58
+ PointsTo &operator=(PointsTo &&rhs) noexcept ;
59
59
 
60
60
  /// Returns true if set is empty.
61
- bool empty(void) const;
61
+ bool empty() const;
62
62
 
63
63
  /// Returns number of elements.
64
- u32_t count(void) const;
64
+ u32_t count() const;
65
65
 
66
66
  /// Empty the set.
67
- void clear(void);
67
+ void clear();
68
68
 
69
69
  /// Returns true if n is in this set.
70
70
  bool test(u32_t n) const;
@@ -87,7 +87,7 @@ public:
87
87
 
88
88
  /// Returns the first element the set. Returns -1 when the set is empty.
89
89
  /// TODO: should we diverge from LLVM about the int return?
90
- int find_first(void);
90
+ int find_first();
91
91
 
92
92
  /// Returns true if this set and rhs contain exactly the same elements.
93
93
  bool operator==(const PointsTo &rhs) const;
@@ -116,28 +116,28 @@ public:
116
116
  void intersectWithComplement(const PointsTo &lhs, const PointsTo &rhs);
117
117
 
118
118
  /// Returns this points-to set as a NodeBS.
119
- NodeBS toNodeBS(void) const;
119
+ NodeBS toNodeBS() const;
120
120
 
121
121
  /// Return a hash of this set.
122
- size_t hash(void) const;
122
+ size_t hash() const;
123
123
 
124
124
  /// Checks if this points-to set is using the current best mapping.
125
125
  /// If not, remaps.
126
- void checkAndRemap(void);
126
+ void checkAndRemap();
127
127
 
128
- const_iterator begin(void) const
128
+ const_iterator begin() const
129
129
  {
130
130
  return PointsToIterator(this);
131
131
  }
132
- const_iterator end(void) const
132
+ const_iterator end() const
133
133
  {
134
134
  return PointsToIterator(this, true);
135
135
  }
136
136
 
137
- MappingPtr getNodeMapping(void) const;
137
+ MappingPtr getNodeMapping() const;
138
138
 
139
- static MappingPtr getCurrentBestNodeMapping(void);
140
- static MappingPtr getCurrentBestReverseNodeMapping(void);
139
+ static MappingPtr getCurrentBestNodeMapping();
140
+ static MappingPtr getCurrentBestReverseNodeMapping();
141
141
  static void setCurrentBestNodeMapping(MappingPtr newCurrentBestNodeMapping,
142
142
  MappingPtr newCurrentBestReverseNodeMapping);
143
143
 
@@ -188,25 +188,25 @@ public:
188
188
  using reference = u32_t &;
189
189
 
190
190
  /// Deleted because we don't want iterators with null pt.
191
- PointsToIterator(void) = delete;
191
+ PointsToIterator() = delete;
192
192
  PointsToIterator(const PointsToIterator &pt);
193
- PointsToIterator(PointsToIterator &&pt);
193
+ PointsToIterator(PointsToIterator &&pt) noexcept ;
194
194
 
195
195
  /// Returns an iterator to the beginning of pt if end is false, and to
196
196
  /// the end of pt if end is true.
197
- PointsToIterator(const PointsTo *pt, bool end=false);
197
+ explicit PointsToIterator(const PointsTo *pt, bool end=false);
198
198
 
199
199
  PointsToIterator &operator=(const PointsToIterator &rhs);
200
- PointsToIterator &operator=(PointsToIterator &&rhs);
200
+ PointsToIterator &operator=(PointsToIterator &&rhs) noexcept ;
201
201
 
202
202
  /// Pre-increment: ++it.
203
- const PointsToIterator &operator++(void);
203
+ const PointsToIterator &operator++();
204
204
 
205
205
  /// Post-increment: it++.
206
206
  const PointsToIterator operator++(int);
207
207
 
208
208
  /// Dereference: *it.
209
- u32_t operator*(void) const;
209
+ u32_t operator*() const;
210
210
 
211
211
  /// Equality: *this == rhs.
212
212
  bool operator==(const PointsToIterator &rhs) const;
@@ -215,7 +215,7 @@ public:
215
215
  bool operator!=(const PointsToIterator &rhs) const;
216
216
 
217
217
  private:
218
- bool atEnd(void) const;
218
+ bool atEnd() const;
219
219
 
220
220
  private:
221
221
  /// PointsTo we are iterating over.
@@ -69,7 +69,7 @@ private:
69
69
  ProgSlice* _curSlice; /// current program slice
70
70
  SVFGNodeSet sources; /// source nodes
71
71
  SVFGNodeSet sinks; /// source nodes
72
- SaberCondAllocator* saberCondAllocator;
72
+ std::unique_ptr<SaberCondAllocator> saberCondAllocator;
73
73
  SVFGNodeToDPItemsMap nodeToDPItemsMap; ///< record forward visited dpitems
74
74
  SVFGNodeSet visitedSet; ///< record backward visited nodes
75
75
 
@@ -83,17 +83,14 @@ public:
83
83
  /// Constructor
84
84
  SrcSnkDDA() : _curSlice(nullptr), svfg(nullptr), ptaCallGraph(nullptr)
85
85
  {
86
- saberCondAllocator = new SaberCondAllocator();
86
+ saberCondAllocator = std::make_unique<SaberCondAllocator>();
87
87
  }
88
88
  /// Destructor
89
- virtual ~SrcSnkDDA()
89
+ ~SrcSnkDDA() override
90
90
  {
91
- if (svfg != nullptr)
92
- delete svfg;
93
91
  svfg = nullptr;
94
92
 
95
- if (_curSlice != nullptr)
96
- delete _curSlice;
93
+ delete _curSlice;
97
94
  _curSlice = nullptr;
98
95
 
99
96
  /// the following shared by multiple checkers, thus can not be released.
@@ -242,12 +239,12 @@ public:
242
239
  /// Get saber condition allocator
243
240
  SaberCondAllocator* getSaberCondAllocator() const
244
241
  {
245
- return saberCondAllocator;
242
+ return saberCondAllocator.get();
246
243
  }
247
244
 
248
245
  protected:
249
246
  /// Forward traverse
250
- virtual inline void FWProcessCurNode(const DPIm& item)
247
+ inline void FWProcessCurNode(const DPIm& item) override
251
248
  {
252
249
  const SVFGNode* node = getNode(item.getCurNodeID());
253
250
  if(isSink(node))
@@ -259,7 +256,7 @@ protected:
259
256
  addToCurForwardSlice(node);
260
257
  }
261
258
  /// Backward traverse
262
- virtual inline void BWProcessCurNode(const DPIm& item)
259
+ inline void BWProcessCurNode(const DPIm& item) override
263
260
  {
264
261
  const SVFGNode* node = getNode(item.getCurNodeID());
265
262
  if(isInCurForwardSlice(node))
@@ -268,9 +265,9 @@ protected:
268
265
  }
269
266
  }
270
267
  /// Propagate information forward by matching context
271
- virtual void FWProcessOutgoingEdge(const DPIm& item, SVFGEdge* edge);
268
+ void FWProcessOutgoingEdge(const DPIm& item, SVFGEdge* edge) override;
272
269
  /// Propagate information backward without matching context, as forward analysis already did it
273
- virtual void BWProcessIncomingEdge(const DPIm& item, SVFGEdge* edge);
270
+ void BWProcessIncomingEdge(const DPIm& item, SVFGEdge* edge) override;
274
271
  /// Whether has been visited or not, in order to avoid recursion on SVFG
275
272
  //@{
276
273
  inline bool forwardVisited(const SVFGNode* node, const DPIm& item)
@@ -321,4 +318,4 @@ protected:
321
318
 
322
319
  } // End namespace SVF
323
320
 
324
- #endif /* SRCSNKDDA_H_ */
321
+ #endif /* SRCSNKANALYSIS_H_ */
@@ -46,7 +46,8 @@ public:
46
46
  virtual ~LLVMLoopAnalysis() = default;
47
47
 
48
48
  /// Build llvm loops based on LoopInfo analysis
49
- virtual void buildLLVMLoops(SVFModule *mod, std::vector<const Loop *> &llvmLoops);
49
+ virtual void buildLLVMLoops(SVFModule *mod, std::vector<const Loop *> &llvmLoops,
50
+ llvm::LoopInfoBase<llvm::BasicBlock, llvm::Loop> * loopInfo);
50
51
 
51
52
  /// Start from here
52
53
  virtual void build(ICFG *icfg);
@@ -58,12 +58,12 @@ public:
58
58
  typedef Map<const Value*, SVFOtherValue*> LLVMValue2SVFOtherValueMap;
59
59
  typedef Map<const SVFValue*, const Value*> SVFValue2LLVMValueMap;
60
60
  typedef Map<const Type*, SVFType*> LLVMType2SVFTypeMap;
61
- typedef Map<const Type*, StInfo*> Type2TypeInfoMap;
61
+ typedef Map<const Type*, std::unique_ptr<StInfo>> Type2TypeInfoMap;
62
62
 
63
63
  private:
64
64
  static LLVMModuleSet* llvmModuleSet;
65
65
  SymbolTableInfo *symInfo;
66
- SVFModule* svfModule;
66
+ std::unique_ptr<SVFModule> svfModule;
67
67
  std::unique_ptr<LLVMContext> cxts;
68
68
  std::vector<std::unique_ptr<Module>> owned_modules;
69
69
  std::vector<std::reference_wrapper<Module>> modules;
@@ -112,7 +112,7 @@ public:
112
112
  inline SVFModule* getSVFModule()
113
113
  {
114
114
  assert(svfModule && "svfModule has not been built yet!");
115
- return svfModule;
115
+ return svfModule.get();
116
116
  }
117
117
 
118
118
  void preProcessBCs(std::vector<std::string>& moduleNameVec);
@@ -329,12 +329,12 @@ private:
329
329
  SVFType* addSVFTypeInfo(const Type* t);
330
330
  /// Collect a type info
331
331
  StInfo* collectTypeInfo(const Type* ty);
332
- /// Collect the struct info
333
- StInfo* collectStructInfo(const StructType *T);
332
+ /// Collect the struct info; nf contains the number of fields after flattening
333
+ StInfo* collectStructInfo(const StructType *T, u32_t& nf);
334
334
  /// Collect the array info
335
335
  StInfo* collectArrayInfo(const ArrayType* T);
336
336
  /// Collect simple type (non-aggregate) info
337
- StInfo* collectSimpleTypeInfo(const Type* T);
337
+ StInfo* collectSimpleTypeInfo(StInfo * info, const Type* T);
338
338
 
339
339
  std::vector<const Function*> getLLVMGlobalFunctions(const GlobalVariable* global);
340
340
 
@@ -84,7 +84,7 @@ private:
84
84
  CSToArgsListMap callSiteArgsListMap; ///< Map a callsite to a list of all its actual parameters
85
85
  CSToRetMap callSiteRetMap; ///< Map a callsite to its callsite returns PAGNodes
86
86
  FunToRetMap funRetMap; ///< Map a function to its unique function return PAGNodes
87
- static SVFIR* pag; ///< Singleton pattern here to enable instance of SVFIR can only be created once.
87
+ static std::unique_ptr<SVFIR> pag; ///< Singleton pattern here to enable instance of SVFIR can only be created once.
88
88
  CallSiteToFunPtrMap indCallSiteToFunPtrMap; ///< Map an indirect callsite to its function pointer
89
89
  FunPtrToCallSitesMap funPtrToCallSitesMap; ///< Map a function pointer to the callsites where it is used
90
90
  /// Valid pointers for pointer analysis resolution connected by SVFIR edges (constraints)
@@ -108,14 +108,12 @@ public:
108
108
  {
109
109
  if (pag == nullptr)
110
110
  {
111
- pag = new SVFIR(buildFromFile);
111
+ pag = std::unique_ptr<SVFIR>(new SVFIR(buildFromFile));
112
112
  }
113
- return pag;
113
+ return pag.get();
114
114
  }
115
115
  static void releaseSVFIR()
116
116
  {
117
- if (pag)
118
- delete pag;
119
117
  pag = nullptr;
120
118
  }
121
119
  //@}
@@ -150,19 +150,17 @@ private:
150
150
  std::vector<const SVFType*> flattenElementTypes;
151
151
  /// Max field limit
152
152
 
153
- StInfo(); ///< place holder
154
- StInfo(const StInfo& st); ///< place holder
155
- void operator=(const StInfo&); ///< place holder
156
-
157
153
  public:
154
+ StInfo() = delete;
155
+ StInfo(const StInfo& st) = delete;
156
+ void operator=(const StInfo&) = delete;
157
+
158
158
  /// Constructor
159
- StInfo(u32_t s) : stride(s), numOfFlattenElements(s), numOfFlattenFields(s)
159
+ explicit StInfo(u32_t s) : stride(s), numOfFlattenElements(s), numOfFlattenFields(s)
160
160
  {
161
161
  }
162
162
  /// Destructor
163
- ~StInfo()
164
- {
165
- }
163
+ ~StInfo() = default;
166
164
 
167
165
  /// struct A { int id; int salary; }; struct B { char name[20]; struct A a;} B b;
168
166
  /// OriginalFieldType of b with field_idx 1 : Struct A
@@ -130,7 +130,7 @@ public:
130
130
  return reachableBBs;
131
131
  }
132
132
 
133
- inline const void setReachableBBs(BBList& bbs)
133
+ inline void setReachableBBs(BBList& bbs)
134
134
  {
135
135
  reachableBBs = bbs;
136
136
  }
@@ -198,7 +198,7 @@ protected:
198
198
  }
199
199
  ///@}
200
200
  public:
201
- SVFValue(void) = delete;
201
+ SVFValue() = delete;
202
202
  virtual ~SVFValue() = default;
203
203
 
204
204
  /// Get the type of this SVFValue
@@ -501,8 +501,8 @@ protected:
501
501
 
502
502
  public:
503
503
  SVFBasicBlock(const std::string& b, const SVFType* ty, const SVFFunction* f);
504
- SVFBasicBlock(void) = delete;
505
- virtual ~SVFBasicBlock();
504
+ SVFBasicBlock() = delete;
505
+ ~SVFBasicBlock() override;
506
506
 
507
507
  static inline bool classof(const SVFValue *node)
508
508
  {
@@ -1064,7 +1064,7 @@ public:
1064
1064
  {
1065
1065
  return CB->isVarArg();
1066
1066
  }
1067
- const bool isVirtualCall() const
1067
+ bool isVirtualCall() const
1068
1068
  {
1069
1069
  return SVFUtil::isa<SVFVirtualCallInst>(CB);
1070
1070
  }
@@ -156,7 +156,6 @@ public:
156
156
 
157
157
  // SVFG builder (SVFGBuilder.cpp)
158
158
  static const llvm::cl::opt<bool> SVFGWithIndirectCall;
159
- static const llvm::cl::opt<bool> SingleVFG;
160
159
  static llvm::cl::opt<bool> OPTSVFG;
161
160
 
162
161
  static const llvm::cl::opt<std :: string> WriteSVFG;
@@ -228,21 +228,13 @@ public:
228
228
 
229
229
  private:
230
230
  // Index of Element in terms of where first bit starts.
231
- unsigned ElementIndex;
232
- BitWord Bits[BITWORDS_PER_ELEMENT];
231
+ unsigned ElementIndex = 0;
232
+ BitWord Bits[BITWORDS_PER_ELEMENT] = {0};
233
233
 
234
- SparseBitVectorElement()
235
- {
236
- ElementIndex = ~0U;
237
- memset(&Bits[0], 0, sizeof (BitWord) * BITWORDS_PER_ELEMENT);
238
- }
234
+ SparseBitVectorElement() = default;
239
235
 
240
236
  public:
241
- explicit SparseBitVectorElement(unsigned Idx)
242
- {
243
- ElementIndex = Idx;
244
- memset(&Bits[0], 0, sizeof (BitWord) * BITWORDS_PER_ELEMENT);
245
- }
237
+ explicit SparseBitVectorElement(unsigned Idx) : ElementIndex(Idx) {}
246
238
 
247
239
  // Comparison.
248
240
  bool operator==(const SparseBitVectorElement &RHS) const
@@ -619,7 +611,7 @@ class SparseBitVector
619
611
  }
620
612
 
621
613
  public:
622
- SparseBitVectorIterator() = default;
614
+ SparseBitVectorIterator() = delete;
623
615
 
624
616
  SparseBitVectorIterator(const SparseBitVector<ElementSize> *RHS,
625
617
  bool end = false):BitVector(RHS)
@@ -679,7 +671,7 @@ public:
679
671
  SparseBitVector(const SparseBitVector &RHS)
680
672
  : Elements(RHS.Elements), CurrElementIter(Elements.begin()) {}
681
673
  SparseBitVector(SparseBitVector &&RHS)
682
- : Elements(std::move(RHS.Elements)), CurrElementIter(Elements.begin()) {}
674
+ noexcept : Elements(std::move(RHS.Elements)), CurrElementIter(Elements.begin()) {}
683
675
 
684
676
  // Clear.
685
677
  void clear()
@@ -58,7 +58,7 @@ public:
58
58
  typedef BVDataPTAImpl::MutDFPTDataTy::PtsMap PtsMap;
59
59
 
60
60
  /// Constructor
61
- FlowSensitive(SVFIR* _pag, PTATY type = FSSPARSE_WPA) : WPASVFGFSSolver(), BVDataPTAImpl(_pag, type)
61
+ explicit FlowSensitive(SVFIR* _pag, PTATY type = FSSPARSE_WPA) : WPASVFGFSSolver(), BVDataPTAImpl(_pag, type)
62
62
  {
63
63
  svfg = nullptr;
64
64
  solveTime = sccTime = processTime = propagationTime = updateTime = 0;
@@ -73,29 +73,22 @@ public:
73
73
  }
74
74
 
75
75
  /// Destructor
76
- virtual ~FlowSensitive()
77
- {
78
- if (svfg != nullptr)
79
- delete svfg;
80
- svfg = nullptr;
81
- }
76
+ ~FlowSensitive() override = default;
82
77
 
83
78
  /// Create signle instance of flow-sensitive pointer analysis
84
79
  static FlowSensitive* createFSWPA(SVFIR* _pag)
85
80
  {
86
81
  if (fspta == nullptr)
87
82
  {
88
- fspta = new FlowSensitive(_pag);
83
+ fspta = std::unique_ptr<FlowSensitive>(new FlowSensitive(_pag));
89
84
  fspta->analyze();
90
85
  }
91
- return fspta;
86
+ return fspta.get();
92
87
  }
93
88
 
94
89
  /// Release flow-sensitive pointer analysis
95
90
  static void releaseFSWPA()
96
91
  {
97
- if (fspta)
98
- delete fspta;
99
92
  fspta = nullptr;
100
93
  }
101
94
 
@@ -106,16 +99,16 @@ public:
106
99
  }
107
100
 
108
101
  /// Flow sensitive analysis
109
- virtual void analyze();
102
+ void analyze() override;
110
103
 
111
104
  /// Initialize analysis
112
- virtual void initialize();
105
+ void initialize() override;
113
106
 
114
107
  /// Finalize analysis
115
- virtual void finalize();
108
+ void finalize() override;
116
109
 
117
110
  /// Get PTA name
118
- virtual const std::string PTAName() const
111
+ const std::string PTAName() const override
119
112
  {
120
113
  return "FlowSensitive";
121
114
  }
@@ -140,12 +133,12 @@ public:
140
133
 
141
134
  protected:
142
135
  /// SCC detection
143
- virtual NodeStack& SCCDetect();
136
+ NodeStack& SCCDetect() override;
144
137
 
145
138
  /// Propagation
146
139
  //@{
147
140
  /// Propagate points-to information from an edge's src node to its dst node.
148
- virtual bool propFromSrcToDst(SVFGEdge* edge);
141
+ bool propFromSrcToDst(SVFGEdge* edge) override;
149
142
  /// Propagate points-to information along a DIRECT SVFG edge.
150
143
  virtual bool propAlongDirectEdge(const DirectSVFGEdge* edge);
151
144
  /// Propagate points-to information along an INDIRECT SVFG edge.
@@ -217,7 +210,7 @@ protected:
217
210
 
218
211
  /// Handle various constraints
219
212
  //@{
220
- virtual void processNode(NodeID nodeId);
213
+ void processNode(NodeID nodeId) override;
221
214
  bool processSVFGNode(SVFGNode* node);
222
215
  virtual bool processAddr(const AddrSVFGNode* addr);
223
216
  virtual bool processCopy(const CopySVFGNode* copy);
@@ -230,7 +223,7 @@ protected:
230
223
  /// Update call graph
231
224
  //@{
232
225
  /// Update call graph.
233
- bool updateCallGraph(const CallSiteToFunPtrMap& callsites);
226
+ bool updateCallGraph(const CallSiteToFunPtrMap& callsites) override;
234
227
  /// Connect nodes in SVFG.
235
228
  void connectCallerAndCallee(const CallEdgeMap& newEdges, SVFGEdgeSetTy& edges);
236
229
  /// Update nodes connected during updating call graph.
@@ -275,7 +268,7 @@ protected:
275
268
  /// Sets the global best mapping as a plain mapping, i.e. n -> n.
276
269
  virtual void plainMap(void) const;
277
270
 
278
- static FlowSensitive* fspta;
271
+ static std::unique_ptr<FlowSensitive> fspta;
279
272
  SVFGBuilder memSSA;
280
273
  AndersenWaveDiff *ander;
281
274
 
@@ -57,20 +57,16 @@ public:
57
57
  protected:
58
58
 
59
59
  /// Constructor
60
- WPASolver(): reanalyze(false), iterationForPrintStat(1000), _graph(nullptr), scc(nullptr), numOfIteration(0)
60
+ WPASolver(): reanalyze(false), iterationForPrintStat(1000), _graph(nullptr), numOfIteration(0)
61
61
  {
62
62
  }
63
63
  /// Destructor
64
- virtual ~WPASolver()
65
- {
66
- delete scc;
67
- scc = nullptr;
68
- }
64
+ virtual ~WPASolver() = default;
69
65
 
70
66
  /// Get SCC detector
71
67
  inline SCC* getSCCDetector() const
72
68
  {
73
- return scc;
69
+ return scc.get();
74
70
  }
75
71
 
76
72
  /// Get/Set graph methods
@@ -82,7 +78,7 @@ protected:
82
78
  inline void setGraph(GraphType g)
83
79
  {
84
80
  _graph = g;
85
- scc = new SCC(_graph);
81
+ scc = std::make_unique<SCC>(_graph);
86
82
  }
87
83
  //@}
88
84
 
@@ -194,7 +190,7 @@ protected:
194
190
  GraphType _graph;
195
191
 
196
192
  /// SCC
197
- SCC* scc;
193
+ std::unique_ptr<SCC> scc;
198
194
 
199
195
  /// Worklist for resolution
200
196
  WorkList worklist;