svf-tools 1.0.322 → 1.0.326

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 (399) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +7 -7
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +3 -3
  4. package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
  5. package/SVF-doxygen/html/html/Conditions_8cpp_source.html +22 -20
  6. package/SVF-doxygen/html/html/Conditions_8h_source.html +12 -9
  7. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +13 -12
  8. package/SVF-doxygen/html/html/ConsG_8h_source.html +15 -15
  9. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
  10. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
  11. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
  12. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  13. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +3 -3
  15. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +8 -8
  16. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
  20. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +3 -3
  21. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +8 -8
  22. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +5 -5
  23. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +2 -2
  24. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -2
  25. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +4 -4
  26. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +4 -4
  27. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
  28. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +2 -2
  29. package/SVF-doxygen/html/html/IRGraph_8cpp.html +1 -0
  30. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +20 -18
  31. package/SVF-doxygen/html/html/IRGraph_8h_source.html +13 -13
  32. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +7 -7
  33. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
  34. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +6 -6
  35. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +21 -21
  36. package/SVF-doxygen/html/html/MemRegion_8h_source.html +5 -5
  37. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +7 -7
  38. package/SVF-doxygen/html/html/MemSSA_8h_source.html +5 -5
  39. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
  40. package/SVF-doxygen/html/html/Options_8cpp_source.html +2 -1
  41. package/SVF-doxygen/html/html/Options_8h_source.html +2 -1
  42. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +3 -3
  43. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +7 -7
  44. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +24 -22
  45. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +8 -8
  46. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +3 -3
  47. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +6 -6
  48. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +17 -17
  49. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +3 -3
  50. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +5 -5
  51. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
  52. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  53. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +1 -1
  54. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
  55. package/SVF-doxygen/html/html/SVFG_8cpp.html +1 -0
  56. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +61 -59
  57. package/SVF-doxygen/html/html/SVFG_8h_source.html +20 -20
  58. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +5 -5
  59. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +33 -33
  60. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +56 -56
  61. package/SVF-doxygen/html/html/SVFIR_8h_source.html +147 -148
  62. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +8 -8
  63. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +133 -132
  64. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +14 -14
  65. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +6 -6
  66. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  67. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  68. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  69. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +6 -6
  70. package/SVF-doxygen/html/html/VFGNode_8h_source.html +11 -11
  71. package/SVF-doxygen/html/html/VFG_8cpp_source.html +39 -39
  72. package/SVF-doxygen/html/html/VFG_8h_source.html +26 -26
  73. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
  74. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +7 -7
  75. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
  76. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
  77. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
  78. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +1 -1
  79. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +20 -19
  80. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +18 -16
  81. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
  82. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +4 -4
  83. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +34 -34
  84. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +4 -4
  85. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +12 -12
  86. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +4 -4
  87. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +8 -8
  88. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +4 -4
  89. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +8 -8
  90. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +4 -4
  91. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +8 -8
  92. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +4 -4
  93. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +8 -8
  94. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +4 -4
  95. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +11 -11
  96. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +8 -8
  97. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +4 -4
  98. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +8 -8
  99. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +4 -4
  100. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +25 -25
  101. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +26 -25
  102. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +24 -22
  103. package/SVF-doxygen/html/html/classSVF_1_1BranchCondManager.html +22 -22
  104. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +20 -19
  105. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +33 -31
  106. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
  107. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode-members.html +8 -8
  108. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +6 -6
  109. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +2 -2
  110. package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +20 -19
  111. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +24 -22
  112. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +8 -8
  113. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +24 -24
  114. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +8 -8
  115. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +24 -24
  116. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +8 -8
  117. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +24 -24
  118. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +28 -27
  119. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +41 -39
  120. package/SVF-doxygen/html/html/classSVF_1_1CondManager-members.html +10 -7
  121. package/SVF-doxygen/html/html/classSVF_1_1CondManager.html +144 -43
  122. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +4 -4
  123. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +10 -10
  124. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph-members.html +5 -5
  125. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +46 -46
  126. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +4 -4
  127. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +17 -17
  128. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +20 -19
  129. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +18 -16
  130. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +1 -1
  131. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +3 -3
  132. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +10 -10
  133. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +13 -13
  134. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +9 -9
  135. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +1 -1
  136. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +8 -8
  137. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +24 -24
  138. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +8 -8
  139. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +24 -24
  140. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +8 -8
  141. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +24 -24
  142. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +4 -4
  143. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +8 -8
  144. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +4 -4
  146. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +16 -16
  147. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +4 -4
  148. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +27 -27
  149. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +7 -7
  150. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +8 -8
  151. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +24 -24
  152. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
  153. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +4 -4
  154. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode-members.html +6 -6
  155. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +6 -6
  156. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode-members.html +6 -6
  157. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +6 -6
  158. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  159. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN-members.html +8 -8
  160. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +24 -24
  161. package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +20 -19
  162. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +18 -16
  163. package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +8 -8
  164. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +28 -28
  165. package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode-members.html +6 -6
  166. package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +6 -6
  167. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode-members.html +6 -6
  168. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +22 -22
  169. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +6 -6
  170. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
  171. package/SVF-doxygen/html/html/classSVF_1_1IRGraph-members.html +8 -8
  172. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +54 -54
  173. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +2 -2
  174. package/SVF-doxygen/html/html/classSVF_1_1InterBlockNode-members.html +6 -6
  175. package/SVF-doxygen/html/html/classSVF_1_1InterBlockNode.html +6 -6
  176. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +14 -14
  177. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +9 -9
  178. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +3 -3
  179. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode-members.html +6 -6
  180. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +6 -6
  181. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +14 -14
  182. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +9 -9
  183. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +2 -2
  184. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +3 -3
  185. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +7 -7
  186. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +23 -22
  187. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +18 -16
  188. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +17 -17
  189. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +92 -92
  190. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +2 -2
  191. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
  192. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +6 -6
  193. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +2 -2
  194. package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +18 -18
  195. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +41 -41
  196. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +24 -23
  197. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +33 -31
  198. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt-members.html +24 -23
  199. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +25 -23
  200. package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +8 -8
  201. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +24 -24
  202. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG-members.html +5 -5
  203. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +13 -13
  204. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +21 -20
  205. package/SVF-doxygen/html/html/classSVF_1_1Options.html +26 -0
  206. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +16 -16
  207. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +7 -7
  208. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator-members.html +13 -12
  209. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +102 -70
  210. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +25 -24
  211. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +23 -21
  212. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +4 -4
  213. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +47 -47
  214. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +11 -10
  215. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode-members.html +7 -7
  216. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +6 -6
  217. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +2 -2
  218. package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +20 -19
  219. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +24 -22
  220. package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +8 -8
  221. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +24 -24
  222. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +47 -47
  223. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +74 -74
  224. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
  225. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +59 -59
  226. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +19 -19
  227. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +131 -132
  228. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +732 -750
  229. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +3 -3
  230. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +86 -86
  231. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt-members.html +23 -22
  232. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +50 -32
  233. package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +8 -8
  234. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +69 -69
  235. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +10 -10
  236. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
  237. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +4 -4
  238. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +8 -8
  239. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +20 -19
  240. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +18 -16
  241. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +23 -22
  242. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +18 -16
  243. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +23 -22
  244. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +18 -16
  245. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
  246. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +2 -2
  247. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +4 -4
  248. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +10 -10
  249. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +9 -9
  250. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +24 -23
  251. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +28 -26
  252. package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +33 -33
  253. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +83 -83
  254. package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +8 -8
  255. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +24 -24
  256. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +8 -8
  257. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +24 -24
  258. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt-members.html +23 -22
  259. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +20 -18
  260. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +4 -4
  261. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +17 -17
  262. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
  263. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +3 -3
  264. package/SVF-doxygen/html/html/functions_a.html +29 -29
  265. package/SVF-doxygen/html/html/functions_c.html +25 -30
  266. package/SVF-doxygen/html/html/functions_f.html +2 -2
  267. package/SVF-doxygen/html/html/functions_func.html +29 -29
  268. package/SVF-doxygen/html/html/functions_func_g.html +59 -57
  269. package/SVF-doxygen/html/html/functions_func_h.html +6 -6
  270. package/SVF-doxygen/html/html/functions_func_i.html +8 -4
  271. package/SVF-doxygen/html/html/functions_func_s.html +8 -5
  272. package/SVF-doxygen/html/html/functions_g.html +74 -72
  273. package/SVF-doxygen/html/html/functions_h.html +6 -6
  274. package/SVF-doxygen/html/html/functions_i.html +20 -16
  275. package/SVF-doxygen/html/html/functions_k.html +9 -0
  276. package/SVF-doxygen/html/html/functions_l.html +8 -8
  277. package/SVF-doxygen/html/html/functions_n.html +3 -0
  278. package/SVF-doxygen/html/html/functions_o.html +12 -15
  279. package/SVF-doxygen/html/html/functions_p.html +20 -35
  280. package/SVF-doxygen/html/html/functions_s.html +35 -13
  281. package/SVF-doxygen/html/html/functions_t.html +5 -7
  282. package/SVF-doxygen/html/html/functions_type_c.html +1 -4
  283. package/SVF-doxygen/html/html/functions_type_f.html +2 -2
  284. package/SVF-doxygen/html/html/functions_type_g.html +2 -2
  285. package/SVF-doxygen/html/html/functions_type_i.html +3 -3
  286. package/SVF-doxygen/html/html/functions_type_k.html +3 -0
  287. package/SVF-doxygen/html/html/functions_type_p.html +2 -18
  288. package/SVF-doxygen/html/html/functions_type_s.html +16 -0
  289. package/SVF-doxygen/html/html/functions_type_v.html +1 -1
  290. package/SVF-doxygen/html/html/functions_v.html +4 -4
  291. package/SVF-doxygen/html/html/functions_vars_g.html +7 -7
  292. package/SVF-doxygen/html/html/functions_vars_i.html +7 -7
  293. package/SVF-doxygen/html/html/functions_vars_k.html +6 -0
  294. package/SVF-doxygen/html/html/functions_vars_n.html +3 -0
  295. package/SVF-doxygen/html/html/functions_vars_o.html +1 -2
  296. package/SVF-doxygen/html/html/functions_vars_p.html +4 -7
  297. package/SVF-doxygen/html/html/functions_vars_s.html +3 -0
  298. package/SVF-doxygen/html/html/functions_w.html +9 -5
  299. package/SVF-doxygen/html/html/namespaceSVF.html +1 -1
  300. package/SVF-doxygen/html/html/search/all_1.js +14 -14
  301. package/SVF-doxygen/html/html/search/all_10.js +13 -18
  302. package/SVF-doxygen/html/html/search/all_13.js +10 -4
  303. package/SVF-doxygen/html/html/search/all_14.js +6 -6
  304. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  305. package/SVF-doxygen/html/html/search/all_16.js +3 -3
  306. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  307. package/SVF-doxygen/html/html/search/all_3.js +2 -3
  308. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  309. package/SVF-doxygen/html/html/search/all_7.js +29 -28
  310. package/SVF-doxygen/html/html/search/all_8.js +2 -2
  311. package/SVF-doxygen/html/html/search/all_9.js +4 -3
  312. package/SVF-doxygen/html/html/search/all_b.js +3 -0
  313. package/SVF-doxygen/html/html/search/all_c.js +4 -4
  314. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  315. package/SVF-doxygen/html/html/search/all_e.js +4 -3
  316. package/SVF-doxygen/html/html/search/all_f.js +2 -2
  317. package/SVF-doxygen/html/html/search/functions_0.js +14 -14
  318. package/SVF-doxygen/html/html/search/functions_10.js +1 -0
  319. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  320. package/SVF-doxygen/html/html/search/functions_6.js +25 -24
  321. package/SVF-doxygen/html/html/search/functions_7.js +2 -2
  322. package/SVF-doxygen/html/html/search/functions_8.js +1 -0
  323. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  324. package/SVF-doxygen/html/html/search/typedefs_11.js +4 -0
  325. package/SVF-doxygen/html/html/search/typedefs_14.js +1 -1
  326. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -2
  327. package/SVF-doxygen/html/html/search/typedefs_5.js +2 -2
  328. package/SVF-doxygen/html/html/search/typedefs_6.js +1 -1
  329. package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
  330. package/SVF-doxygen/html/html/search/typedefs_a.js +2 -1
  331. package/SVF-doxygen/html/html/search/typedefs_f.js +2 -6
  332. package/SVF-doxygen/html/html/search/variables_10.js +2 -3
  333. package/SVF-doxygen/html/html/search/variables_13.js +1 -0
  334. package/SVF-doxygen/html/html/search/variables_14.js +4 -4
  335. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  336. package/SVF-doxygen/html/html/search/variables_7.js +3 -3
  337. package/SVF-doxygen/html/html/search/variables_9.js +3 -3
  338. package/SVF-doxygen/html/html/search/variables_b.js +3 -1
  339. package/SVF-doxygen/html/html/search/variables_e.js +3 -2
  340. package/SVF-doxygen/html/html/search/variables_f.js +2 -2
  341. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +9 -9
  342. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +2 -2
  343. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +18 -18
  344. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +20 -20
  345. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  346. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  347. package/include/DDA/ContextDDA.h +1 -1
  348. package/include/DDA/FlowDDA.h +1 -1
  349. package/include/Graphs/ConsG.h +10 -10
  350. package/include/Graphs/ICFGNode.h +3 -3
  351. package/include/Graphs/IRGraph.h +7 -7
  352. package/include/Graphs/VFG.h +4 -4
  353. package/include/MSSA/MemRegion.h +3 -3
  354. package/include/MSSA/MemSSA.h +1 -1
  355. package/include/MemoryModel/PointerAnalysis.h +8 -8
  356. package/include/MemoryModel/PointerAnalysisImpl.h +2 -2
  357. package/include/MemoryModel/SVFIR.h +66 -67
  358. package/include/MemoryModel/SVFStatements.h +30 -25
  359. package/include/MemoryModel/SVFVariables.h +32 -32
  360. package/include/SABER/PathCondAllocator.h +4 -0
  361. package/include/SVF-FE/SVFIRBuilder.h +15 -15
  362. package/include/Util/Conditions.h +10 -0
  363. package/include/Util/IRAnnotator.h +1 -1
  364. package/include/Util/Options.h +3 -1
  365. package/include/Util/TypeBasedHeapCloning.h +2 -2
  366. package/include/WPA/Andersen.h +1 -1
  367. package/include/WPA/FlowSensitiveTBHC.h +1 -1
  368. package/lib/DDA/ContextDDA.cpp +2 -2
  369. package/lib/DDA/DDAClient.cpp +6 -6
  370. package/lib/DDA/DDAStat.cpp +1 -1
  371. package/lib/DDA/FlowDDA.cpp +2 -2
  372. package/lib/Graphs/ConsG.cpp +25 -24
  373. package/lib/Graphs/ICFG.cpp +4 -4
  374. package/lib/Graphs/IRGraph.cpp +12 -9
  375. package/lib/Graphs/SVFG.cpp +10 -8
  376. package/lib/Graphs/VFG.cpp +37 -37
  377. package/lib/MSSA/MemRegion.cpp +17 -17
  378. package/lib/MSSA/MemSSA.cpp +9 -9
  379. package/lib/MTA/MTAAnnotator.cpp +5 -5
  380. package/lib/MemoryModel/PAGBuilderFromFile.cpp +10 -10
  381. package/lib/MemoryModel/PointerAnalysisImpl.cpp +12 -12
  382. package/lib/MemoryModel/SVFIR.cpp +63 -63
  383. package/lib/SABER/LeakChecker.cpp +2 -2
  384. package/lib/SABER/ProgSlice.cpp +4 -1
  385. package/lib/SABER/SaberSVFGBuilder.cpp +3 -3
  386. package/lib/SVF-FE/Graph2Json.cpp +2 -2
  387. package/lib/SVF-FE/SVFIRBuilder.cpp +18 -18
  388. package/lib/Util/Conditions.cpp +5 -1
  389. package/lib/Util/Options.cpp +6 -0
  390. package/lib/Util/PTAStat.cpp +7 -7
  391. package/lib/Util/TypeBasedHeapCloning.cpp +3 -3
  392. package/lib/WPA/Andersen.cpp +13 -13
  393. package/lib/WPA/AndersenSFR.cpp +1 -1
  394. package/lib/WPA/AndersenStat.cpp +3 -3
  395. package/lib/WPA/FlowSensitive.cpp +6 -6
  396. package/lib/WPA/FlowSensitiveStat.cpp +2 -2
  397. package/lib/WPA/FlowSensitiveTBHC.cpp +5 -5
  398. package/lib/WPA/VersionedFlowSensitive.cpp +1 -1
  399. package/package.json +1 -1
@@ -160,30 +160,30 @@ void PAGBuilderFromFile::addEdge(NodeID srcID, NodeID dstID,
160
160
 
161
161
  if (edge == "addr")
162
162
  {
163
- pag->addAddrPE(srcID, dstID);
163
+ pag->addAddrStmt(srcID, dstID);
164
164
  }
165
165
  else if (edge == "copy")
166
- pag->addCopyPE(srcID, dstID);
166
+ pag->addCopyStmt(srcID, dstID);
167
167
  else if (edge == "load")
168
- pag->addLoadPE(srcID, dstID);
168
+ pag->addLoadStmt(srcID, dstID);
169
169
  else if (edge == "store")
170
- pag->addStorePE(srcID, dstID, nullptr);
170
+ pag->addStoreStmt(srcID, dstID, nullptr);
171
171
  else if (edge == "gep")
172
- pag->addNormalGepPE(srcID, dstID, LocationSet(offsetOrCSId));
172
+ pag->addNormalGepStmt(srcID, dstID, LocationSet(offsetOrCSId));
173
173
  else if (edge == "variant-gep")
174
- pag->addVariantGepPE(srcID, dstID);
174
+ pag->addVariantGepStmt(srcID, dstID);
175
175
  else if (edge == "call")
176
176
  pag->addEdge(srcNode, dstNode, new CallPE(srcNode, dstNode, nullptr));
177
177
  else if (edge == "ret")
178
178
  pag->addEdge(srcNode, dstNode, new RetPE(srcNode, dstNode, nullptr));
179
179
  else if (edge == "cmp")
180
- pag->addCmpPE(srcID, dstID, dstID, dstID);
180
+ pag->addCmpStmt(srcID, dstID, dstID, dstID);
181
181
  else if (edge == "binary-op")
182
- pag->addBinaryOPPE(srcID, dstID, dstID, dstID);
182
+ pag->addBinaryOPStmt(srcID, dstID, dstID, dstID);
183
183
  else if (edge == "unary-op")
184
- pag->addUnaryOPPE(srcID, dstID, dstID);
184
+ pag->addUnaryOPStmt(srcID, dstID, dstID);
185
185
  else if (edge == "phi")
186
- pag->addPhiNode(srcID, dstID);
186
+ pag->addPhiStmt(srcID, dstID);
187
187
  else if (edge == "branch"){
188
188
  assert(false && "fix successors here!");
189
189
  //pag->addBranchStmt(srcID, dstID, nullptr);
@@ -84,9 +84,9 @@ void BVDataPTAImpl::expandFIObjs(const PointsTo& pts, PointsTo& expandedPts)
84
84
  expandedPts = pts;;
85
85
  for(PointsTo::iterator pit = pts.begin(), epit = pts.end(); pit!=epit; ++pit)
86
86
  {
87
- if (pag->getBaseObjNode(*pit) == *pit || isFieldInsensitive(*pit))
87
+ if (pag->getBaseObjVar(*pit) == *pit || isFieldInsensitive(*pit))
88
88
  {
89
- expandedPts |= pag->getAllFieldsObjNode(*pit);
89
+ expandedPts |= pag->getAllFieldsObjVars(*pit);
90
90
  }
91
91
  }
92
92
  }
@@ -96,9 +96,9 @@ void BVDataPTAImpl::expandFIObjs(const NodeBS& pts, NodeBS& expandedPts)
96
96
  expandedPts = pts;
97
97
  for (const NodeID o : pts)
98
98
  {
99
- if (pag->getBaseObjNode(o) == o || isFieldInsensitive(o))
99
+ if (pag->getBaseObjVar(o) == o || isFieldInsensitive(o))
100
100
  {
101
- expandedPts |= pag->getAllFieldsObjNode(o);
101
+ expandedPts |= pag->getAllFieldsObjVars(o);
102
102
  }
103
103
  }
104
104
  }
@@ -153,7 +153,7 @@ void BVDataPTAImpl::writeToFile(const string& filename)
153
153
  if (GepObjPN *gepObjPN = SVFUtil::dyn_cast<GepObjPN>(pagNode))
154
154
  {
155
155
  F.os() << it->first << " ";
156
- F.os() << pag->getBaseObjNode(it->first) << " ";
156
+ F.os() << pag->getBaseObjVar(it->first) << " ";
157
157
  F.os() << gepObjPN->getLocationSet().getOffset() << "\n";
158
158
  }
159
159
  }
@@ -165,7 +165,7 @@ void BVDataPTAImpl::writeToFile(const string& filename)
165
165
  {
166
166
  PAGNode* pagNode = it->second;
167
167
  if (!isa<ObjVar>(pagNode)) continue;
168
- NodeID n = pag->getBaseObjNode(it->first);
168
+ NodeID n = pag->getBaseObjVar(it->first);
169
169
  if (NodeIDs.test(n)) continue;
170
170
  F.os() << n << " ";
171
171
  F.os() << isFieldInsensitive(n) << "\n";
@@ -265,7 +265,7 @@ bool BVDataPTAImpl::readFromFile(const string& filename)
265
265
  size_t offset;
266
266
  ss >> id >> base >> offset;
267
267
 
268
- NodeID n = pag->getGepObjNode(pag->getObject(base), LocationSet(offset));
268
+ NodeID n = pag->getGepObjVar(pag->getObject(base), LocationSet(offset));
269
269
  assert(id == n && "Error adding GepObjNode into SVFIR!");
270
270
 
271
271
  getline(F, line);
@@ -401,7 +401,7 @@ void BVDataPTAImpl::onTheFlyCallGraphSolve(const CallSiteToFunPtrMap& callsites,
401
401
  */
402
402
  void BVDataPTAImpl::normalizePointsTo() {
403
403
  SVFIR::MemObjToFieldsMap &memToFieldsMap = pag->getMemToFieldsMap();
404
- SVFIR::NodeLocationSetMap &GepObjNodeMap = pag->getGepObjNodeMap();
404
+ SVFIR::NodeLocationSetMap &GepObjVarMap = pag->getGepObjNodeMap();
405
405
 
406
406
  // collect each gep node whose base node has been set as field-insensitive
407
407
  NodeBS dropNodes;
@@ -427,19 +427,19 @@ void BVDataPTAImpl::normalizePointsTo() {
427
427
  for (NodeID obj : tmpPts) {
428
428
  if (!dropNodes.test(obj))
429
429
  continue;
430
- NodeID baseObj = pag->getBaseObjNode(obj);
430
+ NodeID baseObj = pag->getBaseObjVar(obj);
431
431
  clearPts(n, obj);
432
432
  addPts(n, baseObj);
433
433
  }
434
434
  }
435
435
 
436
- // clear GepObjNodeMap and memToFieldsMap for redundant gepnodes
436
+ // clear GepObjVarMap and memToFieldsMap for redundant gepnodes
437
437
  // and remove those nodes from pag
438
438
  for (NodeID n: dropNodes) {
439
- NodeID base = pag->getBaseObjNode(n);
439
+ NodeID base = pag->getBaseObjVar(n);
440
440
  GepObjPN *gepNode = SVFUtil::dyn_cast<GepObjPN>(pag->getGNode(n));
441
441
  const LocationSet ls = gepNode->getLocationSet();
442
- GepObjNodeMap.erase(std::make_pair(base, ls));
442
+ GepObjVarMap.erase(std::make_pair(base, ls));
443
443
  memToFieldsMap[base].reset(n);
444
444
 
445
445
  pag->removeGNode(gepNode);
@@ -48,7 +48,7 @@ SVFIR::SVFIR(bool buildFromFile) : IRGraph(buildFromFile)
48
48
  /*!
49
49
  * Add Address edge
50
50
  */
51
- AddrStmt* SVFIR::addAddrPE(NodeID src, NodeID dst)
51
+ AddrStmt* SVFIR::addAddrStmt(NodeID src, NodeID dst)
52
52
  {
53
53
  SVFVar* srcNode = getGNode(src);
54
54
  SVFVar* dstNode = getGNode(dst);
@@ -66,7 +66,7 @@ AddrStmt* SVFIR::addAddrPE(NodeID src, NodeID dst)
66
66
  /*!
67
67
  * Add Copy edge
68
68
  */
69
- CopyStmt* SVFIR::addCopyPE(NodeID src, NodeID dst)
69
+ CopyStmt* SVFIR::addCopyStmt(NodeID src, NodeID dst)
70
70
  {
71
71
  SVFVar* srcNode = getGNode(src);
72
72
  SVFVar* dstNode = getGNode(dst);
@@ -84,7 +84,7 @@ CopyStmt* SVFIR::addCopyPE(NodeID src, NodeID dst)
84
84
  /*!
85
85
  * Add Phi statement
86
86
  */
87
- PhiStmt* SVFIR::addPhiNode(NodeID res, NodeID opnd)
87
+ PhiStmt* SVFIR::addPhiStmt(NodeID res, NodeID opnd)
88
88
  {
89
89
  SVFVar* opNode = getGNode(opnd);
90
90
  SVFVar* resNode = getGNode(res);
@@ -105,7 +105,7 @@ PhiStmt* SVFIR::addPhiNode(NodeID res, NodeID opnd)
105
105
  /*!
106
106
  * Add Compare edge
107
107
  */
108
- CmpStmt* SVFIR::addCmpPE(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)
108
+ CmpStmt* SVFIR::addCmpStmt(NodeID op1, NodeID op2, NodeID dst, u32_t predicate)
109
109
  {
110
110
  SVFVar* op1Node = getGNode(op1);
111
111
  SVFVar* op2Node = getGNode(op2);
@@ -115,7 +115,7 @@ CmpStmt* SVFIR::addCmpPE(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)
115
115
  else
116
116
  {
117
117
  std::vector<SVFVar*> opnds = {op1Node, op2Node};
118
- CmpStmt* cmp = new CmpStmt(dstNode, opnds, opcode);
118
+ CmpStmt* cmp = new CmpStmt(dstNode, opnds, predicate);
119
119
  addToStmt2TypeMap(cmp);
120
120
  addEdge(op1Node, dstNode, cmp);
121
121
  return cmp;
@@ -126,7 +126,7 @@ CmpStmt* SVFIR::addCmpPE(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)
126
126
  /*!
127
127
  * Add Compare edge
128
128
  */
129
- BinaryOPStmt* SVFIR::addBinaryOPPE(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)
129
+ BinaryOPStmt* SVFIR::addBinaryOPStmt(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)
130
130
  {
131
131
  SVFVar* op1Node = getGNode(op1);
132
132
  SVFVar* op2Node = getGNode(op2);
@@ -146,7 +146,7 @@ BinaryOPStmt* SVFIR::addBinaryOPPE(NodeID op1, NodeID op2, NodeID dst, u32_t opc
146
146
  /*!
147
147
  * Add Unary edge
148
148
  */
149
- UnaryOPStmt* SVFIR::addUnaryOPPE(NodeID src, NodeID dst, u32_t opcode)
149
+ UnaryOPStmt* SVFIR::addUnaryOPStmt(NodeID src, NodeID dst, u32_t opcode)
150
150
  {
151
151
  SVFVar* srcNode = getGNode(src);
152
152
  SVFVar* dstNode = getGNode(dst);
@@ -182,7 +182,7 @@ BranchStmt* SVFIR::addBranchStmt(NodeID br, NodeID cond, std::vector<const ICFGN
182
182
  /*!
183
183
  * Add Load edge
184
184
  */
185
- LoadStmt* SVFIR::addLoadPE(NodeID src, NodeID dst)
185
+ LoadStmt* SVFIR::addLoadStmt(NodeID src, NodeID dst)
186
186
  {
187
187
  SVFVar* srcNode = getGNode(src);
188
188
  SVFVar* dstNode = getGNode(dst);
@@ -201,7 +201,7 @@ LoadStmt* SVFIR::addLoadPE(NodeID src, NodeID dst)
201
201
  * Add Store edge
202
202
  * Note that two store instructions may share the same Store SVFStmt
203
203
  */
204
- StoreStmt* SVFIR::addStorePE(NodeID src, NodeID dst, const IntraBlockNode* curVal)
204
+ StoreStmt* SVFIR::addStoreStmt(NodeID src, NodeID dst, const IntraBlockNode* curVal)
205
205
  {
206
206
  SVFVar* srcNode = getGNode(src);
207
207
  SVFVar* dstNode = getGNode(dst);
@@ -255,12 +255,12 @@ RetPE* SVFIR::addRetPE(NodeID src, NodeID dst, const CallBlockNode* cs)
255
255
  /*!
256
256
  * Add blackhole/constant edge
257
257
  */
258
- SVFStmt* SVFIR::addBlackHoleAddrPE(NodeID node)
258
+ SVFStmt* SVFIR::addBlackHoleAddrStmt(NodeID node)
259
259
  {
260
260
  if(Options::HandBlackHole)
261
- return pag->addAddrPE(pag->getBlackHoleNode(), node);
261
+ return pag->addAddrStmt(pag->getBlackHoleNode(), node);
262
262
  else
263
- return pag->addCopyPE(pag->getNullPtr(), node);
263
+ return pag->addCopyStmt(pag->getNullPtr(), node);
264
264
  }
265
265
 
266
266
  /*!
@@ -305,7 +305,7 @@ TDJoinPE* SVFIR::addThreadJoinPE(NodeID src, NodeID dst, const CallBlockNode* cs
305
305
  * Find the base node id of src and connect base node to dst node
306
306
  * Create gep offset: (offset + baseOff <nested struct gep size>)
307
307
  */
308
- GepStmt* SVFIR::addGepPE(NodeID src, NodeID dst, const LocationSet& ls, bool constGep)
308
+ GepStmt* SVFIR::addGepStmt(NodeID src, NodeID dst, const LocationSet& ls, bool constGep)
309
309
  {
310
310
 
311
311
  SVFVar* node = getGNode(src);
@@ -313,21 +313,21 @@ GepStmt* SVFIR::addGepPE(NodeID src, NodeID dst, const LocationSet& ls, bool con
313
313
  {
314
314
  /// Since the offset from base to src is variant,
315
315
  /// the new gep edge being created is also a VariantGepStmt edge.
316
- return addVariantGepPE(src, dst);
316
+ return addVariantGepStmt(src, dst);
317
317
  }
318
318
  else
319
319
  {
320
- return addNormalGepPE(src, dst, ls);
320
+ return addNormalGepStmt(src, dst, ls);
321
321
  }
322
322
  }
323
323
 
324
324
  /*!
325
325
  * Add normal (Gep) edge
326
326
  */
327
- NormalGepStmt* SVFIR::addNormalGepPE(NodeID src, NodeID dst, const LocationSet& ls)
327
+ NormalGepStmt* SVFIR::addNormalGepStmt(NodeID src, NodeID dst, const LocationSet& ls)
328
328
  {
329
329
  const LocationSet& baseLS = getLocationSetFromBaseNode(src);
330
- SVFVar* baseNode = getGNode(getBaseValNode(src));
330
+ SVFVar* baseNode = getGNode(getBaseValVar(src));
331
331
  SVFVar* dstNode = getGNode(dst);
332
332
  if(SVFStmt* edge = hasNonlabeledEdge(baseNode, dstNode, SVFStmt::NormalGep))
333
333
  return SVFUtil::cast<NormalGepStmt>(edge);
@@ -344,10 +344,10 @@ NormalGepStmt* SVFIR::addNormalGepPE(NodeID src, NodeID dst, const LocationSet&
344
344
  * Add variant(Gep) edge
345
345
  * Find the base node id of src and connect base node to dst node
346
346
  */
347
- VariantGepStmt* SVFIR::addVariantGepPE(NodeID src, NodeID dst)
347
+ VariantGepStmt* SVFIR::addVariantGepStmt(NodeID src, NodeID dst)
348
348
  {
349
349
 
350
- SVFVar* baseNode = getGNode(getBaseValNode(src));
350
+ SVFVar* baseNode = getGNode(getBaseValVar(src));
351
351
  SVFVar* dstNode = getGNode(dst);
352
352
  if(SVFStmt* edge = hasNonlabeledEdge(baseNode, dstNode, SVFStmt::VariantGep))
353
353
  return SVFUtil::cast<VariantGepStmt>(edge);
@@ -363,16 +363,16 @@ VariantGepStmt* SVFIR::addVariantGepPE(NodeID src, NodeID dst)
363
363
 
364
364
 
365
365
  /*!
366
- * Add a temp field value node, this method can only invoked by getGepValNode
366
+ * Add a temp field value node, this method can only invoked by getGepValVar
367
367
  * due to constaint expression, curInst is used to distinguish different instructions (e.g., memorycpy) when creating GepValVar.
368
368
  */
369
369
  NodeID SVFIR::addGepValNode(const Value* curInst,const Value* gepVal, const LocationSet& ls, NodeID i, const Type *type, u32_t fieldidx)
370
370
  {
371
- NodeID base = getBaseValNode(getValueNode(gepVal));
371
+ NodeID base = getBaseValVar(getValueNode(gepVal));
372
372
  //assert(findPAGNode(i) == false && "this node should not be created before");
373
- assert(0==GepValNodeMap[curInst].count(std::make_pair(base, ls))
373
+ assert(0==GepValObjMap[curInst].count(std::make_pair(base, ls))
374
374
  && "this node should not be created before");
375
- GepValNodeMap[curInst][std::make_pair(base, ls)] = i;
375
+ GepValObjMap[curInst][std::make_pair(base, ls)] = i;
376
376
  GepValVar *node = new GepValVar(gepVal, i, ls, type, fieldidx);
377
377
  return addValNode(gepVal, node, i);
378
378
  }
@@ -380,15 +380,15 @@ NodeID SVFIR::addGepValNode(const Value* curInst,const Value* gepVal, const Loca
380
380
  /*!
381
381
  * Given an object node, find its field object node
382
382
  */
383
- NodeID SVFIR::getGepObjNode(NodeID id, const LocationSet& ls)
383
+ NodeID SVFIR::getGepObjVar(NodeID id, const LocationSet& ls)
384
384
  {
385
385
  SVFVar* node = pag->getGNode(id);
386
386
  if (GepObjPN* gepNode = SVFUtil::dyn_cast<GepObjPN>(node))
387
- return getGepObjNode(gepNode->getMemObj(), gepNode->getLocationSet() + ls);
387
+ return getGepObjVar(gepNode->getMemObj(), gepNode->getLocationSet() + ls);
388
388
  else if (FIObjVar* baseNode = SVFUtil::dyn_cast<FIObjVar>(node))
389
- return getGepObjNode(baseNode->getMemObj(), ls);
389
+ return getGepObjVar(baseNode->getMemObj(), ls);
390
390
  else if (DummyObjVar* baseNode = SVFUtil::dyn_cast<DummyObjVar>(node))
391
- return getGepObjNode(baseNode->getMemObj(), ls);
391
+ return getGepObjVar(baseNode->getMemObj(), ls);
392
392
  else
393
393
  {
394
394
  assert(false && "new gep obj node kind?");
@@ -402,21 +402,21 @@ NodeID SVFIR::getGepObjNode(NodeID id, const LocationSet& ls)
402
402
  * offset = offset % obj->getMaxFieldOffsetLimit() to create limited number of mem objects
403
403
  * maximum number of field object creation is obj->getMaxFieldOffsetLimit()
404
404
  */
405
- NodeID SVFIR::getGepObjNode(const MemObj* obj, const LocationSet& ls)
405
+ NodeID SVFIR::getGepObjVar(const MemObj* obj, const LocationSet& ls)
406
406
  {
407
407
  NodeID base = obj->getId();
408
408
 
409
409
  /// if this obj is field-insensitive, just return the field-insensitive node.
410
410
  if (obj->isFieldInsensitive())
411
- return getFIObjNode(obj);
411
+ return getFIObjVar(obj);
412
412
 
413
413
  LocationSet newLS = SymbolTableInfo::SymbolInfo()->getModulusOffset(obj,ls);
414
414
 
415
415
  // Base and first field are the same memory location.
416
416
  if (Options::FirstFieldEqBase && newLS.getOffset() == 0) return base;
417
417
 
418
- NodeLocationSetMap::iterator iter = GepObjNodeMap.find(std::make_pair(base, newLS));
419
- if (iter == GepObjNodeMap.end())
418
+ NodeLocationSetMap::iterator iter = GepObjVarMap.find(std::make_pair(base, newLS));
419
+ if (iter == GepObjVarMap.end())
420
420
  return addGepObjNode(obj, newLS);
421
421
  else
422
422
  return iter->second;
@@ -424,17 +424,17 @@ NodeID SVFIR::getGepObjNode(const MemObj* obj, const LocationSet& ls)
424
424
  }
425
425
 
426
426
  /*!
427
- * Add a field obj node, this method can only invoked by getGepObjNode
427
+ * Add a field obj node, this method can only invoked by getGepObjVar
428
428
  */
429
429
  NodeID SVFIR::addGepObjNode(const MemObj* obj, const LocationSet& ls)
430
430
  {
431
431
  //assert(findPAGNode(i) == false && "this node should not be created before");
432
432
  NodeID base = obj->getId();
433
- assert(0==GepObjNodeMap.count(std::make_pair(base, ls))
433
+ assert(0==GepObjVarMap.count(std::make_pair(base, ls))
434
434
  && "this node should not be created before");
435
435
 
436
436
  NodeID gepId = NodeIDAllocator::get()->allocateGepObjectId(base, ls.getOffset(), StInfo::getMaxFieldLimit());
437
- GepObjNodeMap[std::make_pair(base, ls)] = gepId;
437
+ GepObjVarMap[std::make_pair(base, ls)] = gepId;
438
438
  GepObjPN *node = new GepObjPN(obj, gepId, ls);
439
439
  memToFieldsMap[base].set(gepId);
440
440
  return addObjNode(obj->getValue(), node, gepId);
@@ -455,7 +455,7 @@ NodeID SVFIR::addFIObjNode(const MemObj* obj)
455
455
  /*!
456
456
  * Get all fields object nodes of an object
457
457
  */
458
- NodeBS& SVFIR::getAllFieldsObjNode(const MemObj* obj)
458
+ NodeBS& SVFIR::getAllFieldsObjVars(const MemObj* obj)
459
459
  {
460
460
  NodeID base = obj->getId();
461
461
  return memToFieldsMap[base];
@@ -464,12 +464,12 @@ NodeBS& SVFIR::getAllFieldsObjNode(const MemObj* obj)
464
464
  /*!
465
465
  * Get all fields object nodes of an object
466
466
  */
467
- NodeBS& SVFIR::getAllFieldsObjNode(NodeID id)
467
+ NodeBS& SVFIR::getAllFieldsObjVars(NodeID id)
468
468
  {
469
469
  const SVFVar* node = pag->getGNode(id);
470
470
  assert(SVFUtil::isa<ObjVar>(node) && "need an object node");
471
471
  const ObjVar* obj = SVFUtil::cast<ObjVar>(node);
472
- return getAllFieldsObjNode(obj->getMemObj());
472
+ return getAllFieldsObjVars(obj->getMemObj());
473
473
  }
474
474
 
475
475
  /*!
@@ -485,11 +485,11 @@ NodeBS SVFIR::getFieldsAfterCollapse(NodeID id)
485
485
  if(mem->isFieldInsensitive())
486
486
  {
487
487
  NodeBS bs;
488
- bs.set(getFIObjNode(mem));
488
+ bs.set(getFIObjVar(mem));
489
489
  return bs;
490
490
  }
491
491
  else
492
- return getAllFieldsObjNode(mem);
492
+ return getAllFieldsObjVars(mem);
493
493
  }
494
494
 
495
495
  /*!
@@ -497,13 +497,13 @@ NodeBS SVFIR::getFieldsAfterCollapse(NodeID id)
497
497
  * Return the source node of its connected gep edge if this pointer has
498
498
  * Otherwise return the node id itself
499
499
  */
500
- NodeID SVFIR::getBaseValNode(NodeID nodeId)
500
+ NodeID SVFIR::getBaseValVar(NodeID nodeId)
501
501
  {
502
502
  SVFVar* node = getGNode(nodeId);
503
503
  if (node->hasIncomingEdges(SVFStmt::NormalGep) || node->hasIncomingEdges(SVFStmt::VariantGep))
504
504
  {
505
- SVFStmt::PAGEdgeSetTy& ngeps = node->getIncomingEdges(SVFStmt::NormalGep);
506
- SVFStmt::PAGEdgeSetTy& vgeps = node->getIncomingEdges(SVFStmt::VariantGep);
505
+ SVFStmt::SVFStmtSetTy& ngeps = node->getIncomingEdges(SVFStmt::NormalGep);
506
+ SVFStmt::SVFStmtSetTy& vgeps = node->getIncomingEdges(SVFStmt::VariantGep);
507
507
 
508
508
  assert(((ngeps.size()+vgeps.size())==1) && "one node can only be connected by at most one gep edge!");
509
509
 
@@ -529,7 +529,7 @@ NodeID SVFIR::getBaseValNode(NodeID nodeId)
529
529
  LocationSet SVFIR::getLocationSetFromBaseNode(NodeID nodeId)
530
530
  {
531
531
  SVFVar* node = getGNode(nodeId);
532
- SVFStmt::PAGEdgeSetTy& geps = node->getIncomingEdges(SVFStmt::NormalGep);
532
+ SVFStmt::SVFStmtSetTy& geps = node->getIncomingEdges(SVFStmt::NormalGep);
533
533
  /// if this node is already a base node
534
534
  if(geps.empty())
535
535
  return LocationSet(0);
@@ -558,56 +558,56 @@ void SVFIR::print()
558
558
  {
559
559
 
560
560
  outs() << "-------------------SVFIR------------------------------------\n";
561
- SVFStmt::PAGEdgeSetTy& addrs = pag->getEdgeSet(SVFStmt::Addr);
562
- for (SVFStmt::PAGEdgeSetTy::iterator iter = addrs.begin(), eiter =
561
+ SVFStmt::SVFStmtSetTy& addrs = pag->getSVFStmtSet(SVFStmt::Addr);
562
+ for (SVFStmt::SVFStmtSetTy::iterator iter = addrs.begin(), eiter =
563
563
  addrs.end(); iter != eiter; ++iter)
564
564
  {
565
565
  outs() << (*iter)->getSrcID() << " -- Addr --> " << (*iter)->getDstID()
566
566
  << "\n";
567
567
  }
568
568
 
569
- SVFStmt::PAGEdgeSetTy& copys = pag->getEdgeSet(SVFStmt::Copy);
570
- for (SVFStmt::PAGEdgeSetTy::iterator iter = copys.begin(), eiter =
569
+ SVFStmt::SVFStmtSetTy& copys = pag->getSVFStmtSet(SVFStmt::Copy);
570
+ for (SVFStmt::SVFStmtSetTy::iterator iter = copys.begin(), eiter =
571
571
  copys.end(); iter != eiter; ++iter)
572
572
  {
573
573
  outs() << (*iter)->getSrcID() << " -- Copy --> " << (*iter)->getDstID()
574
574
  << "\n";
575
575
  }
576
576
 
577
- SVFStmt::PAGEdgeSetTy& calls = pag->getEdgeSet(SVFStmt::Call);
578
- for (SVFStmt::PAGEdgeSetTy::iterator iter = calls.begin(), eiter =
577
+ SVFStmt::SVFStmtSetTy& calls = pag->getSVFStmtSet(SVFStmt::Call);
578
+ for (SVFStmt::SVFStmtSetTy::iterator iter = calls.begin(), eiter =
579
579
  calls.end(); iter != eiter; ++iter)
580
580
  {
581
581
  outs() << (*iter)->getSrcID() << " -- Call --> " << (*iter)->getDstID()
582
582
  << "\n";
583
583
  }
584
584
 
585
- SVFStmt::PAGEdgeSetTy& rets = pag->getEdgeSet(SVFStmt::Ret);
586
- for (SVFStmt::PAGEdgeSetTy::iterator iter = rets.begin(), eiter =
585
+ SVFStmt::SVFStmtSetTy& rets = pag->getSVFStmtSet(SVFStmt::Ret);
586
+ for (SVFStmt::SVFStmtSetTy::iterator iter = rets.begin(), eiter =
587
587
  rets.end(); iter != eiter; ++iter)
588
588
  {
589
589
  outs() << (*iter)->getSrcID() << " -- Ret --> " << (*iter)->getDstID()
590
590
  << "\n";
591
591
  }
592
592
 
593
- SVFStmt::PAGEdgeSetTy& tdfks = pag->getEdgeSet(SVFStmt::ThreadFork);
594
- for (SVFStmt::PAGEdgeSetTy::iterator iter = tdfks.begin(), eiter =
593
+ SVFStmt::SVFStmtSetTy& tdfks = pag->getSVFStmtSet(SVFStmt::ThreadFork);
594
+ for (SVFStmt::SVFStmtSetTy::iterator iter = tdfks.begin(), eiter =
595
595
  tdfks.end(); iter != eiter; ++iter)
596
596
  {
597
597
  outs() << (*iter)->getSrcID() << " -- ThreadFork --> "
598
598
  << (*iter)->getDstID() << "\n";
599
599
  }
600
600
 
601
- SVFStmt::PAGEdgeSetTy& tdjns = pag->getEdgeSet(SVFStmt::ThreadJoin);
602
- for (SVFStmt::PAGEdgeSetTy::iterator iter = tdjns.begin(), eiter =
601
+ SVFStmt::SVFStmtSetTy& tdjns = pag->getSVFStmtSet(SVFStmt::ThreadJoin);
602
+ for (SVFStmt::SVFStmtSetTy::iterator iter = tdjns.begin(), eiter =
603
603
  tdjns.end(); iter != eiter; ++iter)
604
604
  {
605
605
  outs() << (*iter)->getSrcID() << " -- ThreadJoin --> "
606
606
  << (*iter)->getDstID() << "\n";
607
607
  }
608
608
 
609
- SVFStmt::PAGEdgeSetTy& ngeps = pag->getEdgeSet(SVFStmt::NormalGep);
610
- for (SVFStmt::PAGEdgeSetTy::iterator iter = ngeps.begin(), eiter =
609
+ SVFStmt::SVFStmtSetTy& ngeps = pag->getSVFStmtSet(SVFStmt::NormalGep);
610
+ for (SVFStmt::SVFStmtSetTy::iterator iter = ngeps.begin(), eiter =
611
611
  ngeps.end(); iter != eiter; ++iter)
612
612
  {
613
613
  NormalGepStmt* gep = SVFUtil::cast<NormalGepStmt>(*iter);
@@ -615,24 +615,24 @@ void SVFIR::print()
615
615
  << ") --> " << gep->getDstID() << "\n";
616
616
  }
617
617
 
618
- SVFStmt::PAGEdgeSetTy& vgeps = pag->getEdgeSet(SVFStmt::VariantGep);
619
- for (SVFStmt::PAGEdgeSetTy::iterator iter = vgeps.begin(), eiter =
618
+ SVFStmt::SVFStmtSetTy& vgeps = pag->getSVFStmtSet(SVFStmt::VariantGep);
619
+ for (SVFStmt::SVFStmtSetTy::iterator iter = vgeps.begin(), eiter =
620
620
  vgeps.end(); iter != eiter; ++iter)
621
621
  {
622
622
  outs() << (*iter)->getSrcID() << " -- VariantGep --> "
623
623
  << (*iter)->getDstID() << "\n";
624
624
  }
625
625
 
626
- SVFStmt::PAGEdgeSetTy& loads = pag->getEdgeSet(SVFStmt::Load);
627
- for (SVFStmt::PAGEdgeSetTy::iterator iter = loads.begin(), eiter =
626
+ SVFStmt::SVFStmtSetTy& loads = pag->getSVFStmtSet(SVFStmt::Load);
627
+ for (SVFStmt::SVFStmtSetTy::iterator iter = loads.begin(), eiter =
628
628
  loads.end(); iter != eiter; ++iter)
629
629
  {
630
630
  outs() << (*iter)->getSrcID() << " -- Load --> " << (*iter)->getDstID()
631
631
  << "\n";
632
632
  }
633
633
 
634
- SVFStmt::PAGEdgeSetTy& stores = pag->getEdgeSet(SVFStmt::Store);
635
- for (SVFStmt::PAGEdgeSetTy::iterator iter = stores.begin(), eiter =
634
+ SVFStmt::SVFStmtSetTy& stores = pag->getSVFStmtSet(SVFStmt::Store);
635
+ for (SVFStmt::SVFStmtSetTy::iterator iter = stores.begin(), eiter =
636
636
  stores.end(); iter != eiter; ++iter)
637
637
  {
638
638
  outs() << (*iter)->getSrcID() << " -- Store --> " << (*iter)->getDstID()
@@ -119,10 +119,10 @@ void LeakChecker::initSnks()
119
119
  {
120
120
  const SVFFunction* fun = *cit;
121
121
  if (isSinkLikeFun(fun)) {
122
- SVFIR::PAGNodeList &arglist = it->second;
122
+ SVFIR::SVFVarList &arglist = it->second;
123
123
  assert(!arglist.empty() && "no actual parameter at deallocation site?");
124
124
  /// we only choose pointer parameters among all the actual parameters
125
- for (SVFIR::PAGNodeList::const_iterator ait = arglist.begin(),
125
+ for (SVFIR::SVFVarList::const_iterator ait = arglist.begin(),
126
126
  aeit = arglist.end(); ait != aeit; ++ait) {
127
127
  const PAGNode *pagNode = *ait;
128
128
  if (pagNode->isPointer()) {
@@ -167,7 +167,10 @@ std::string ProgSlice::evalFinalCond() const
167
167
  {
168
168
  Condition* atom = pathAllocator->getCond(*it);
169
169
  const Instruction* tinst = pathAllocator->getCondInst(atom);
170
- locations.insert(getSourceLoc(tinst));
170
+ if(pathAllocator->isNegCond(atom))
171
+ locations.insert(getSourceLoc(tinst)+"|False");
172
+ else
173
+ locations.insert(getSourceLoc(tinst)+"|True");
171
174
  }
172
175
  /// print leak path after eliminating duplicated element
173
176
  for(Set<std::string>::iterator iter = locations.begin(), eiter = locations.end();
@@ -102,7 +102,7 @@ PointsTo& SaberSVFGBuilder::CollectPtsChain(BVDataPTAImpl* pta,NodeID id, NodeTo
102
102
  {
103
103
  SVFIR* pag = svfg->getPAG();
104
104
 
105
- NodeID baseId = pag->getBaseObjNode(id);
105
+ NodeID baseId = pag->getBaseObjVar(id);
106
106
  NodeToPTSSMap::iterator it = cachedPtsMap.find(baseId);
107
107
  if(it!=cachedPtsMap.end())
108
108
  return it->second;
@@ -265,8 +265,8 @@ void SaberSVFGBuilder::AddExtActualParmSVFGNodes(PTACallGraph* callgraph)
265
265
  if (SaberCheckerAPI::getCheckerAPI()->isMemDealloc(fun)
266
266
  || SaberCheckerAPI::getCheckerAPI()->isFClose(fun))
267
267
  {
268
- SVFIR::PAGNodeList& arglist = it->second;
269
- for(SVFIR::PAGNodeList::const_iterator ait = arglist.begin(), aeit = arglist.end(); ait!=aeit; ++ait){
268
+ SVFIR::SVFVarList& arglist = it->second;
269
+ for(SVFIR::SVFVarList::const_iterator ait = arglist.begin(), aeit = arglist.end(); ait!=aeit; ++ait){
270
270
  const PAGNode *pagNode = *ait;
271
271
  if (pagNode->isPointer()) {
272
272
  addActualParmVFGNode(pagNode, it->first);
@@ -34,11 +34,11 @@ void ICFGPrinter::printICFGToJson(const std::string& filename)
34
34
  if(IntraBlockNode* bNode = SVFUtil::dyn_cast<IntraBlockNode>(node))
35
35
  {
36
36
  ICFGNode_Obj["Source Location"] = getSourceLoc(bNode->getInst());
37
- SVFIR::PAGEdgeList& edges = SVFIR::getPAG()->getInstPTAPAGEdgeList(bNode);
37
+ SVFIR::SVFStmtList& edges = SVFIR::getPAG()->getPTASVFStmtList(bNode);
38
38
  llvm::json::Array PAGEdge_array;
39
39
 
40
40
  //dump pag edges
41
- for (SVFIR::PAGEdgeList::iterator it = edges.begin(),
41
+ for (SVFIR::SVFStmtList::iterator it = edges.begin(),
42
42
  eit = edges.end(); it != eit; ++it)
43
43
  {
44
44
  const PAGEdge* edge = *it;