svf-tools 1.0.351 → 1.0.352

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 (280) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +3 -3
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +2 -2
  4. package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -1
  5. package/SVF-doxygen/html/html/CSC_8cpp_source.html +2 -2
  6. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +2 -2
  7. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
  8. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +44 -45
  9. package/SVF-doxygen/html/html/ConsG_8h_source.html +21 -21
  10. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +10 -8
  11. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +5 -5
  12. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/DCHG_8h_source.html +2 -2
  14. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +4 -4
  15. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  16. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -1
  19. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +4 -2
  20. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  21. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +2 -2
  22. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +2 -2
  23. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +24 -22
  24. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +17 -17
  25. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +15 -14
  26. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +11 -11
  27. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +3 -3
  28. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +4 -4
  29. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +4 -4
  30. package/SVF-doxygen/html/html/IRGraph_8h_source.html +1 -1
  31. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
  32. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +2 -2
  33. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +4 -4
  34. package/SVF-doxygen/html/html/MemRegion_8h_source.html +2 -2
  35. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
  36. package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
  37. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  38. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +3 -4
  39. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +3 -3
  40. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
  41. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
  42. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +8 -8
  43. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  44. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +6 -6
  45. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +19 -21
  46. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +38 -40
  47. package/SVF-doxygen/html/html/SVFIR_8h_source.html +35 -37
  48. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +21 -23
  49. package/SVF-doxygen/html/html/SVFStatements_8h.html +0 -4
  50. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +146 -156
  51. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
  52. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +98 -98
  53. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  54. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
  55. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  56. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +10 -10
  57. package/SVF-doxygen/html/html/VFGNode_8h_source.html +13 -13
  58. package/SVF-doxygen/html/html/VFG_8cpp_source.html +50 -51
  59. package/SVF-doxygen/html/html/VFG_8h_source.html +35 -35
  60. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
  61. package/SVF-doxygen/html/html/annotated.html +100 -102
  62. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +2 -2
  63. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +24 -25
  64. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +17 -18
  65. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
  66. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +1 -1
  67. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +5 -5
  68. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +3 -3
  69. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +4 -4
  70. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +2 -2
  71. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt-members.html +28 -29
  72. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +25 -30
  73. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.png +0 -0
  74. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +4 -4
  75. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +28 -29
  76. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +23 -24
  77. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -2
  78. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +31 -32
  79. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +38 -39
  80. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
  81. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +2 -2
  82. package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +27 -28
  83. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +24 -25
  84. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +11 -11
  85. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +12 -12
  86. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +1 -1
  87. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +15 -15
  88. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +30 -31
  89. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +24 -25
  90. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -2
  91. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph-members.html +1 -1
  92. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +95 -96
  93. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  94. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
  95. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +17 -16
  96. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +24 -25
  97. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +17 -18
  98. package/SVF-doxygen/html/html/classSVF_1_1DCHEdge-members.html +4 -4
  99. package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +5 -5
  100. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +1 -1
  101. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +2 -2
  102. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
  103. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +2 -2
  104. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
  105. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +13 -13
  106. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +13 -13
  107. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +14 -14
  108. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +6 -5
  109. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +36 -36
  110. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +4 -4
  111. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +56 -55
  112. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +21 -20
  113. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  114. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +1 -1
  115. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +39 -39
  116. package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +16 -14
  117. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +139 -50
  118. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.png +0 -0
  119. package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +2 -2
  120. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +39 -39
  121. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +7 -8
  122. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +1 -1
  123. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
  124. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +2 -2
  125. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +27 -28
  126. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +17 -18
  127. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +6 -6
  128. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +2 -2
  129. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +1 -1
  130. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +1 -1
  131. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +6 -6
  132. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +1 -1
  133. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +33 -34
  134. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +32 -33
  135. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge-members.html +5 -5
  136. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +6 -6
  137. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +1 -1
  138. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +18 -18
  139. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG-members.html +1 -1
  140. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +6 -6
  141. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +4 -4
  142. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -2
  143. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +5 -6
  144. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +30 -31
  145. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +23 -24
  146. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +2 -2
  147. package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +27 -28
  148. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +24 -25
  149. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +13 -13
  150. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +2 -2
  151. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +16 -16
  152. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +1 -1
  153. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +2 -2
  154. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +10 -10
  155. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +1 -1
  156. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +2 -2
  157. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +77 -78
  158. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +3 -3
  159. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +29 -29
  160. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt-members.html +24 -25
  161. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +49 -53
  162. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.png +0 -0
  163. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +3 -3
  164. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +3 -3
  165. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +3 -3
  166. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +24 -25
  167. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +18 -19
  168. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +26 -27
  169. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +18 -19
  170. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +26 -27
  171. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +18 -19
  172. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
  173. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +17 -17
  174. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +29 -30
  175. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +30 -31
  176. package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +2 -2
  177. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +79 -80
  178. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +11 -11
  179. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +13 -13
  180. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +2 -2
  182. package/SVF-doxygen/html/html/classes.html +95 -93
  183. package/SVF-doxygen/html/html/functions_a.html +5 -5
  184. package/SVF-doxygen/html/html/functions_c.html +22 -22
  185. package/SVF-doxygen/html/html/functions_eval_g.html +2 -1
  186. package/SVF-doxygen/html/html/functions_eval_n.html +0 -1
  187. package/SVF-doxygen/html/html/functions_eval_v.html +0 -1
  188. package/SVF-doxygen/html/html/functions_func.html +5 -5
  189. package/SVF-doxygen/html/html/functions_func_c.html +20 -22
  190. package/SVF-doxygen/html/html/functions_func_g.html +13 -13
  191. package/SVF-doxygen/html/html/functions_func_i.html +7 -4
  192. package/SVF-doxygen/html/html/functions_func_n.html +0 -3
  193. package/SVF-doxygen/html/html/functions_func_o.html +3 -5
  194. package/SVF-doxygen/html/html/functions_func_t.html +0 -2
  195. package/SVF-doxygen/html/html/functions_func_v.html +0 -3
  196. package/SVF-doxygen/html/html/functions_g.html +17 -16
  197. package/SVF-doxygen/html/html/functions_i.html +9 -6
  198. package/SVF-doxygen/html/html/functions_l.html +3 -3
  199. package/SVF-doxygen/html/html/functions_m.html +1 -1
  200. package/SVF-doxygen/html/html/functions_n.html +0 -4
  201. package/SVF-doxygen/html/html/functions_o.html +3 -5
  202. package/SVF-doxygen/html/html/functions_p.html +10 -10
  203. package/SVF-doxygen/html/html/functions_r.html +8 -4
  204. package/SVF-doxygen/html/html/functions_s.html +12 -10
  205. package/SVF-doxygen/html/html/functions_t.html +7 -9
  206. package/SVF-doxygen/html/html/functions_v.html +4 -5
  207. package/SVF-doxygen/html/html/functions_vars_v.html +3 -0
  208. package/SVF-doxygen/html/html/functions_w.html +5 -9
  209. package/SVF-doxygen/html/html/hierarchy.html +55 -57
  210. package/SVF-doxygen/html/html/namespaceSVF.html +0 -4
  211. package/SVF-doxygen/html/html/search/all_1.js +5 -5
  212. package/SVF-doxygen/html/html/search/all_10.js +8 -8
  213. package/SVF-doxygen/html/html/search/all_12.js +2 -2
  214. package/SVF-doxygen/html/html/search/all_13.js +9 -9
  215. package/SVF-doxygen/html/html/search/all_14.js +5 -5
  216. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  217. package/SVF-doxygen/html/html/search/all_16.js +3 -3
  218. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  219. package/SVF-doxygen/html/html/search/all_3.js +1 -1
  220. package/SVF-doxygen/html/html/search/all_7.js +4 -4
  221. package/SVF-doxygen/html/html/search/all_9.js +2 -1
  222. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  223. package/SVF-doxygen/html/html/search/all_d.js +3 -3
  224. package/SVF-doxygen/html/html/search/all_e.js +3 -4
  225. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  226. package/SVF-doxygen/html/html/search/classes_12.js +0 -1
  227. package/SVF-doxygen/html/html/search/classes_b.js +0 -1
  228. package/SVF-doxygen/html/html/search/enumvalues_12.js +1 -1
  229. package/SVF-doxygen/html/html/search/enumvalues_6.js +1 -1
  230. package/SVF-doxygen/html/html/search/enumvalues_b.js +1 -1
  231. package/SVF-doxygen/html/html/search/functions_0.js +5 -5
  232. package/SVF-doxygen/html/html/search/functions_10.js +1 -1
  233. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  234. package/SVF-doxygen/html/html/search/functions_13.js +0 -1
  235. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  236. package/SVF-doxygen/html/html/search/functions_6.js +3 -3
  237. package/SVF-doxygen/html/html/search/functions_8.js +2 -1
  238. package/SVF-doxygen/html/html/search/functions_c.js +0 -1
  239. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  240. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  241. package/SVF-doxygen/html/html/search/variables_14.js +2 -2
  242. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  243. package/SVF-doxygen/html/html/search/variables_16.js +1 -0
  244. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  245. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +16 -16
  246. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  247. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +18 -18
  248. package/include/Graphs/ConsG.h +2 -2
  249. package/include/Graphs/ConsGEdge.h +1 -1
  250. package/include/Graphs/VFG.h +2 -2
  251. package/include/MemoryModel/SVFIR.h +2 -2
  252. package/include/MemoryModel/SVFStatements.h +17 -94
  253. package/include/MemoryModel/SVFVariables.h +9 -6
  254. package/include/SVF-FE/DCHG.h +1 -1
  255. package/include/SVF-FE/SVFIRBuilder.h +5 -5
  256. package/include/Util/IRAnnotator.h +1 -1
  257. package/lib/DDA/ContextDDA.cpp +4 -5
  258. package/lib/DDA/DDAClient.cpp +6 -6
  259. package/lib/DDA/DDAStat.cpp +1 -1
  260. package/lib/DDA/FlowDDA.cpp +4 -5
  261. package/lib/Graphs/ConsG.cpp +26 -31
  262. package/lib/Graphs/SVFG.cpp +2 -2
  263. package/lib/Graphs/VFG.cpp +36 -43
  264. package/lib/MTA/MTAAnnotator.cpp +3 -3
  265. package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
  266. package/lib/MemoryModel/SVFIR.cpp +26 -34
  267. package/lib/MemoryModel/SVFStatements.cpp +0 -22
  268. package/lib/MemoryModel/SVFVariables.cpp +1 -1
  269. package/lib/MemoryModel/SymbolTableInfo.cpp +1 -1
  270. package/lib/SVF-FE/DCHG.cpp +1 -1
  271. package/lib/SVF-FE/Graph2Json.cpp +24 -27
  272. package/lib/Util/PTAStat.cpp +9 -9
  273. package/lib/Util/TypeBasedHeapCloning.cpp +5 -5
  274. package/lib/WPA/AndersenSFR.cpp +2 -2
  275. package/lib/WPA/AndersenStat.cpp +2 -2
  276. package/lib/WPA/CSC.cpp +2 -2
  277. package/lib/WPA/FlowSensitive.cpp +4 -7
  278. package/lib/WPA/FlowSensitiveStat.cpp +2 -2
  279. package/lib/WPA/FlowSensitiveTBHC.cpp +6 -9
  280. package/package.json +1 -1
@@ -336,16 +336,16 @@ void VFG::addVFGNodes()
336
336
  addNullPtrVFGNode(pag->getGNode(pag->getNullPtr()));
337
337
 
338
338
  // initialize address nodes
339
- PAGEdge::SVFStmtSetTy& addrs = getPAGEdgeSet(PAGEdge::Addr);
340
- for (PAGEdge::SVFStmtSetTy::iterator iter = addrs.begin(), eiter =
339
+ SVFStmt::SVFStmtSetTy& addrs = getPAGEdgeSet(SVFStmt::Addr);
340
+ for (SVFStmt::SVFStmtSetTy::iterator iter = addrs.begin(), eiter =
341
341
  addrs.end(); iter != eiter; ++iter)
342
342
  {
343
343
  addAddrVFGNode(SVFUtil::cast<AddrStmt>(*iter));
344
344
  }
345
345
 
346
346
  // initialize copy nodes
347
- PAGEdge::SVFStmtSetTy& copys = getPAGEdgeSet(PAGEdge::Copy);
348
- for (PAGEdge::SVFStmtSetTy::iterator iter = copys.begin(), eiter =
347
+ SVFStmt::SVFStmtSetTy& copys = getPAGEdgeSet(SVFStmt::Copy);
348
+ for (SVFStmt::SVFStmtSetTy::iterator iter = copys.begin(), eiter =
349
349
  copys.end(); iter != eiter; ++iter)
350
350
  {
351
351
  const CopyStmt* edge = SVFUtil::cast<CopyStmt>(*iter);
@@ -354,38 +354,31 @@ void VFG::addVFGNodes()
354
354
  }
355
355
 
356
356
  // initialize gep nodes
357
- PAGEdge::SVFStmtSetTy& ngeps = getPAGEdgeSet(PAGEdge::NormalGep);
358
- for (PAGEdge::SVFStmtSetTy::iterator iter = ngeps.begin(), eiter =
357
+ SVFStmt::SVFStmtSetTy& ngeps = getPAGEdgeSet(SVFStmt::Gep);
358
+ for (SVFStmt::SVFStmtSetTy::iterator iter = ngeps.begin(), eiter =
359
359
  ngeps.end(); iter != eiter; ++iter)
360
360
  {
361
- addGepVFGNode(SVFUtil::cast<NormalGepStmt>(*iter));
362
- }
363
-
364
- PAGEdge::SVFStmtSetTy& vgeps = getPAGEdgeSet(PAGEdge::VariantGep);
365
- for (PAGEdge::SVFStmtSetTy::iterator iter = vgeps.begin(), eiter =
366
- vgeps.end(); iter != eiter; ++iter)
367
- {
368
- addGepVFGNode(SVFUtil::cast<VariantGepStmt>(*iter));
361
+ addGepVFGNode(SVFUtil::cast<GepStmt>(*iter));
369
362
  }
370
363
 
371
364
  // initialize load nodes
372
- PAGEdge::SVFStmtSetTy& loads = getPAGEdgeSet(PAGEdge::Load);
373
- for (PAGEdge::SVFStmtSetTy::iterator iter = loads.begin(), eiter =
365
+ SVFStmt::SVFStmtSetTy& loads = getPAGEdgeSet(SVFStmt::Load);
366
+ for (SVFStmt::SVFStmtSetTy::iterator iter = loads.begin(), eiter =
374
367
  loads.end(); iter != eiter; ++iter)
375
368
  {
376
369
  addLoadVFGNode(SVFUtil::cast<LoadStmt>(*iter));
377
370
  }
378
371
 
379
372
  // initialize store nodes
380
- PAGEdge::SVFStmtSetTy& stores = getPAGEdgeSet(PAGEdge::Store);
381
- for (PAGEdge::SVFStmtSetTy::iterator iter = stores.begin(), eiter =
373
+ SVFStmt::SVFStmtSetTy& stores = getPAGEdgeSet(SVFStmt::Store);
374
+ for (SVFStmt::SVFStmtSetTy::iterator iter = stores.begin(), eiter =
382
375
  stores.end(); iter != eiter; ++iter)
383
376
  {
384
377
  addStoreVFGNode(SVFUtil::cast<StoreStmt>(*iter));
385
378
  }
386
379
 
387
- PAGEdge::SVFStmtSetTy& forks = getPAGEdgeSet(PAGEdge::ThreadFork);
388
- for (PAGEdge::SVFStmtSetTy::iterator iter = forks.begin(), eiter =
380
+ SVFStmt::SVFStmtSetTy& forks = getPAGEdgeSet(SVFStmt::ThreadFork);
381
+ for (SVFStmt::SVFStmtSetTy::iterator iter = forks.begin(), eiter =
389
382
  forks.end(); iter != eiter; ++iter)
390
383
  {
391
384
  TDForkPE* forkedge = SVFUtil::cast<TDForkPE>(*iter);
@@ -429,10 +422,10 @@ void VFG::addVFGNodes()
429
422
  continue;
430
423
 
431
424
  CallPESet callPEs;
432
- if (param->hasIncomingEdges(PAGEdge::Call))
425
+ if (param->hasIncomingEdges(SVFStmt::Call))
433
426
  {
434
- for (PAGEdge::SVFStmtSetTy::const_iterator cit = param->getIncomingEdgesBegin(PAGEdge::Call), ecit =
435
- param->getIncomingEdgesEnd(PAGEdge::Call); cit != ecit; ++cit)
427
+ for (SVFStmt::SVFStmtSetTy::const_iterator cit = param->getIncomingEdgesBegin(SVFStmt::Call), ecit =
428
+ param->getIncomingEdgesEnd(SVFStmt::Call); cit != ecit; ++cit)
436
429
  {
437
430
  CallPE* callPE = SVFUtil::cast<CallPE>(*cit);
438
431
  if (isInterestedPAGNode(callPE->getRHSVar()))
@@ -449,10 +442,10 @@ void VFG::addVFGNodes()
449
442
  continue;
450
443
 
451
444
  CallPESet callPEs;
452
- if (varParam->hasIncomingEdges(PAGEdge::Call))
445
+ if (varParam->hasIncomingEdges(SVFStmt::Call))
453
446
  {
454
- for(PAGEdge::SVFStmtSetTy::const_iterator cit = varParam->getIncomingEdgesBegin(PAGEdge::Call),
455
- ecit = varParam->getIncomingEdgesEnd(PAGEdge::Call); cit!=ecit; ++cit)
447
+ for(SVFStmt::SVFStmtSetTy::const_iterator cit = varParam->getIncomingEdgesBegin(SVFStmt::Call),
448
+ ecit = varParam->getIncomingEdgesEnd(SVFStmt::Call); cit!=ecit; ++cit)
456
449
  {
457
450
  CallPE* callPE = SVFUtil::cast<CallPE>(*cit);
458
451
  if(isInterestedPAGNode(callPE->getRHSVar()))
@@ -471,10 +464,10 @@ void VFG::addVFGNodes()
471
464
  const PAGNode* uniqueFunRetNode = it->second;
472
465
 
473
466
  RetPESet retPEs;
474
- if (uniqueFunRetNode->hasOutgoingEdges(PAGEdge::Ret))
467
+ if (uniqueFunRetNode->hasOutgoingEdges(SVFStmt::Ret))
475
468
  {
476
- for (PAGEdge::SVFStmtSetTy::const_iterator cit = uniqueFunRetNode->getOutgoingEdgesBegin(PAGEdge::Ret),
477
- ecit = uniqueFunRetNode->getOutgoingEdgesEnd(PAGEdge::Ret);
469
+ for (SVFStmt::SVFStmtSetTy::const_iterator cit = uniqueFunRetNode->getOutgoingEdgesBegin(SVFStmt::Ret),
470
+ ecit = uniqueFunRetNode->getOutgoingEdgesEnd(SVFStmt::Ret);
478
471
  cit != ecit; ++cit)
479
472
  {
480
473
  const RetPE* retPE = SVFUtil::cast<RetPE>(*cit);
@@ -488,8 +481,8 @@ void VFG::addVFGNodes()
488
481
  }
489
482
 
490
483
  // initialize llvm phi nodes (phi of top level pointers)
491
- PAGEdge::SVFStmtSetTy& phis = getPAGEdgeSet(PAGEdge::Phi);
492
- for (PAGEdge::SVFStmtSetTy::iterator iter = phis.begin(), eiter =
484
+ SVFStmt::SVFStmtSetTy& phis = getPAGEdgeSet(SVFStmt::Phi);
485
+ for (SVFStmt::SVFStmtSetTy::iterator iter = phis.begin(), eiter =
493
486
  phis.end(); iter != eiter; ++iter)
494
487
  {
495
488
  const PhiStmt* edge = SVFUtil::cast<PhiStmt>(*iter);
@@ -497,8 +490,8 @@ void VFG::addVFGNodes()
497
490
  addIntraPHIVFGNode(edge);
498
491
  }
499
492
  // initialize llvm binary nodes (binary operators)
500
- PAGEdge::SVFStmtSetTy& binaryops = getPAGEdgeSet(PAGEdge::BinaryOp);
501
- for (PAGEdge::SVFStmtSetTy::iterator iter = binaryops.begin(), eiter =
493
+ SVFStmt::SVFStmtSetTy& binaryops = getPAGEdgeSet(SVFStmt::BinaryOp);
494
+ for (SVFStmt::SVFStmtSetTy::iterator iter = binaryops.begin(), eiter =
502
495
  binaryops.end(); iter != eiter; ++iter)
503
496
  {
504
497
  const BinaryOPStmt* edge = SVFUtil::cast<BinaryOPStmt>(*iter);
@@ -506,8 +499,8 @@ void VFG::addVFGNodes()
506
499
  addBinaryOPVFGNode(edge);
507
500
  }
508
501
  // initialize llvm unary nodes (unary operators)
509
- PAGEdge::SVFStmtSetTy& unaryops = getPAGEdgeSet(PAGEdge::UnaryOp);
510
- for (PAGEdge::SVFStmtSetTy::iterator iter = unaryops.begin(), eiter =
502
+ SVFStmt::SVFStmtSetTy& unaryops = getPAGEdgeSet(SVFStmt::UnaryOp);
503
+ for (SVFStmt::SVFStmtSetTy::iterator iter = unaryops.begin(), eiter =
511
504
  unaryops.end(); iter != eiter; ++iter)
512
505
  {
513
506
  const UnaryOPStmt* edge = SVFUtil::cast<UnaryOPStmt>(*iter);
@@ -515,8 +508,8 @@ void VFG::addVFGNodes()
515
508
  addUnaryOPVFGNode(edge);
516
509
  }
517
510
  // initialize llvm unary nodes (unary operators)
518
- PAGEdge::SVFStmtSetTy& brs = getPAGEdgeSet(PAGEdge::Branch);
519
- for (PAGEdge::SVFStmtSetTy::iterator iter = brs.begin(), eiter =
511
+ SVFStmt::SVFStmtSetTy& brs = getPAGEdgeSet(SVFStmt::Branch);
512
+ for (SVFStmt::SVFStmtSetTy::iterator iter = brs.begin(), eiter =
520
513
  brs.end(); iter != eiter; ++iter)
521
514
  {
522
515
  const BranchStmt* edge = SVFUtil::cast<BranchStmt>(*iter);
@@ -524,8 +517,8 @@ void VFG::addVFGNodes()
524
517
  addBranchVFGNode(edge);
525
518
  }
526
519
  // initialize llvm cmp nodes (comparision)
527
- PAGEdge::SVFStmtSetTy& cmps = getPAGEdgeSet(PAGEdge::Cmp);
528
- for (PAGEdge::SVFStmtSetTy::iterator iter = cmps.begin(), eiter =
520
+ SVFStmt::SVFStmtSetTy& cmps = getPAGEdgeSet(SVFStmt::Cmp);
521
+ for (SVFStmt::SVFStmtSetTy::iterator iter = cmps.begin(), eiter =
529
522
  cmps.end(); iter != eiter; ++iter)
530
523
  {
531
524
  const CmpStmt* edge = SVFUtil::cast<CmpStmt>(*iter);
@@ -692,8 +685,8 @@ void VFG::connectDirectVFGEdges()
692
685
  /// connect direct value-flow edges (parameter passing) for thread fork/join
693
686
  if(Options::EnableThreadCallGraph){
694
687
  /// add fork edge
695
- PAGEdge::SVFStmtSetTy& forks = getPAGEdgeSet(PAGEdge::ThreadFork);
696
- for (PAGEdge::SVFStmtSetTy::iterator iter = forks.begin(), eiter =
688
+ SVFStmt::SVFStmtSetTy& forks = getPAGEdgeSet(SVFStmt::ThreadFork);
689
+ for (SVFStmt::SVFStmtSetTy::iterator iter = forks.begin(), eiter =
697
690
  forks.end(); iter != eiter; ++iter)
698
691
  {
699
692
  TDForkPE* forkedge = SVFUtil::cast<TDForkPE>(*iter);
@@ -702,8 +695,8 @@ void VFG::connectDirectVFGEdges()
702
695
  addInterEdgeFromAPToFP(acutalParm,formalParm,getCallSiteID(forkedge->getCallSite(), formalParm->getFun()));
703
696
  }
704
697
  /// add join edge
705
- PAGEdge::SVFStmtSetTy& joins = getPAGEdgeSet(PAGEdge::ThreadJoin);
706
- for (PAGEdge::SVFStmtSetTy::iterator iter = joins.begin(), eiter =
698
+ SVFStmt::SVFStmtSetTy& joins = getPAGEdgeSet(SVFStmt::ThreadJoin);
699
+ for (SVFStmt::SVFStmtSetTy::iterator iter = joins.begin(), eiter =
707
700
  joins.end(); iter != eiter; ++iter)
708
701
  {
709
702
  TDJoinPE* joinedge = SVFUtil::cast<TDJoinPE>(*iter);
@@ -122,8 +122,8 @@ void MTAAnnotator::pruneThreadLocal(PointerAnalysis* pta)
122
122
  PointsTo worklist;
123
123
 
124
124
  /// find fork arguments' objects
125
- const PAGEdge::SVFStmtSetTy& forkedges = pag->getPTASVFStmtSet(PAGEdge::ThreadFork);
126
- for (PAGEdge::SVFStmtSetTy::const_iterator it = forkedges.begin(), eit = forkedges.end(); it != eit; ++it)
125
+ const SVFStmt::SVFStmtSetTy& forkedges = pag->getPTASVFStmtSet(SVFStmt::ThreadFork);
126
+ for (SVFStmt::SVFStmtSetTy::const_iterator it = forkedges.begin(), eit = forkedges.end(); it != eit; ++it)
127
127
  {
128
128
  PAGEdge* edge = *it;
129
129
  worklist |= pta->getPts(edge->getDstID());
@@ -135,7 +135,7 @@ void MTAAnnotator::pruneThreadLocal(PointerAnalysis* pta)
135
135
  for (SVFIR::SVFStmtSet::const_iterator it = globaledges.begin(), eit = globaledges.end(); it != eit; ++it)
136
136
  {
137
137
  const PAGEdge* edge = *it;
138
- if (edge->getEdgeKind() == PAGEdge::Addr)
138
+ if (edge->getEdgeKind() == SVFStmt::Addr)
139
139
  {
140
140
  worklist.set(edge->getSrcID());
141
141
  }
@@ -154,7 +154,7 @@ void BVDataPTAImpl::writeToFile(const string& filename)
154
154
  {
155
155
  F.os() << it->first << " ";
156
156
  F.os() << pag->getBaseObjVar(it->first) << " ";
157
- F.os() << gepObjPN->getFieldOffset() << "\n";
157
+ F.os() << gepObjPN->getConstantFieldIdx() << "\n";
158
158
  }
159
159
  }
160
160
 
@@ -312,7 +312,7 @@ GepStmt* SVFIR::addGepStmt(NodeID src, NodeID dst, const LocationSet& ls, bool c
312
312
  if (!constGep || node->hasIncomingVariantGepEdge())
313
313
  {
314
314
  /// Since the offset from base to src is variant,
315
- /// the new gep edge being created is also a VariantGepStmt edge.
315
+ /// the new gep edge being created is also a Variant GepStmt edge.
316
316
  return addVariantGepStmt(src, dst, ls);
317
317
  }
318
318
  else
@@ -324,16 +324,16 @@ GepStmt* SVFIR::addGepStmt(NodeID src, NodeID dst, const LocationSet& ls, bool c
324
324
  /*!
325
325
  * Add normal (Gep) edge
326
326
  */
327
- NormalGepStmt* SVFIR::addNormalGepStmt(NodeID src, NodeID dst, const LocationSet& ls)
327
+ GepStmt* SVFIR::addNormalGepStmt(NodeID src, NodeID dst, const LocationSet& ls)
328
328
  {
329
329
  const LocationSet& baseLS = getLocationSetFromBaseNode(src);
330
330
  SVFVar* baseNode = getGNode(getBaseValVar(src));
331
331
  SVFVar* dstNode = getGNode(dst);
332
- if(SVFStmt* edge = hasNonlabeledEdge(baseNode, dstNode, SVFStmt::NormalGep))
333
- return SVFUtil::cast<NormalGepStmt>(edge);
332
+ if(SVFStmt* edge = hasNonlabeledEdge(baseNode, dstNode, SVFStmt::Gep))
333
+ return SVFUtil::cast<GepStmt>(edge);
334
334
  else
335
335
  {
336
- NormalGepStmt* gepPE = new NormalGepStmt(baseNode, dstNode, baseLS+ls);
336
+ GepStmt* gepPE = new GepStmt(baseNode, dstNode, baseLS+ls);
337
337
  addToStmt2TypeMap(gepPE);
338
338
  addEdge(baseNode, dstNode, gepPE);
339
339
  return gepPE;
@@ -344,16 +344,16 @@ NormalGepStmt* SVFIR::addNormalGepStmt(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::addVariantGepStmt(NodeID src, NodeID dst, const LocationSet& ls)
347
+ GepStmt* SVFIR::addVariantGepStmt(NodeID src, NodeID dst, const LocationSet& ls)
348
348
  {
349
349
  const LocationSet& baseLS = getLocationSetFromBaseNode(src);
350
350
  SVFVar* baseNode = getGNode(getBaseValVar(src));
351
351
  SVFVar* dstNode = getGNode(dst);
352
- if(SVFStmt* edge = hasNonlabeledEdge(baseNode, dstNode, SVFStmt::VariantGep))
353
- return SVFUtil::cast<VariantGepStmt>(edge);
352
+ if(SVFStmt* edge = hasNonlabeledEdge(baseNode, dstNode, SVFStmt::Gep))
353
+ return SVFUtil::cast<GepStmt>(edge);
354
354
  else
355
355
  {
356
- VariantGepStmt* gepPE = new VariantGepStmt(baseNode, dstNode,baseLS+ls);
356
+ GepStmt* gepPE = new GepStmt(baseNode, dstNode,baseLS+ls, true);
357
357
  addToStmt2TypeMap(gepPE);
358
358
  addEdge(baseNode, dstNode, gepPE);
359
359
  return gepPE;
@@ -500,18 +500,13 @@ NodeBS SVFIR::getFieldsAfterCollapse(NodeID id)
500
500
  NodeID SVFIR::getBaseValVar(NodeID nodeId)
501
501
  {
502
502
  SVFVar* node = getGNode(nodeId);
503
- if (node->hasIncomingEdges(SVFStmt::NormalGep) || node->hasIncomingEdges(SVFStmt::VariantGep))
503
+ if (node->hasIncomingEdges(SVFStmt::Gep))
504
504
  {
505
- SVFStmt::SVFStmtSetTy& ngeps = node->getIncomingEdges(SVFStmt::NormalGep);
506
- SVFStmt::SVFStmtSetTy& vgeps = node->getIncomingEdges(SVFStmt::VariantGep);
505
+ SVFStmt::SVFStmtSetTy& geps = node->getIncomingEdges(SVFStmt::Gep);
507
506
 
508
- assert(((ngeps.size()+vgeps.size())==1) && "one node can only be connected by at most one gep edge!");
507
+ assert((geps.size()==1) && "one node can only be connected by at most one gep edge!");
509
508
 
510
- SVFVar::iterator it;
511
- if(!ngeps.empty())
512
- it = ngeps.begin();
513
- else
514
- it = vgeps.begin();
509
+ SVFVar::iterator it = geps.begin();
515
510
 
516
511
  assert(SVFUtil::isa<GepStmt>(*it) && "not a gep edge??");
517
512
  return (*it)->getSrcID();
@@ -529,17 +524,18 @@ NodeID SVFIR::getBaseValVar(NodeID nodeId)
529
524
  LocationSet SVFIR::getLocationSetFromBaseNode(NodeID nodeId)
530
525
  {
531
526
  SVFVar* node = getGNode(nodeId);
532
- SVFStmt::SVFStmtSetTy& geps = node->getIncomingEdges(SVFStmt::NormalGep);
527
+ SVFStmt::SVFStmtSetTy& geps = node->getIncomingEdges(SVFStmt::Gep);
533
528
  /// if this node is already a base node
534
529
  if(geps.empty())
535
530
  return LocationSet(0);
536
531
 
537
532
  assert(geps.size()==1 && "one node can only be connected by at most one gep edge!");
538
533
  SVFVar::iterator it = geps.begin();
539
- const SVFStmt* edge = *it;
540
- assert(SVFUtil::isa<NormalGepStmt>(edge) && "not a get edge??");
541
- const NormalGepStmt* gepEdge = SVFUtil::cast<NormalGepStmt>(edge);
542
- return gepEdge->getLocationSet();
534
+ const GepStmt* gepEdge = SVFUtil::cast<GepStmt>(*it);
535
+ if(gepEdge->isVariantFieldGep())
536
+ return LocationSet(0);
537
+ else
538
+ return gepEdge->getLocationSet();
543
539
  }
544
540
 
545
541
  /*!
@@ -606,21 +602,17 @@ void SVFIR::print()
606
602
  << (*iter)->getDstID() << "\n";
607
603
  }
608
604
 
609
- SVFStmt::SVFStmtSetTy& ngeps = pag->getSVFStmtSet(SVFStmt::NormalGep);
605
+ SVFStmt::SVFStmtSetTy& ngeps = pag->getSVFStmtSet(SVFStmt::Gep);
610
606
  for (SVFStmt::SVFStmtSetTy::iterator iter = ngeps.begin(), eiter =
611
607
  ngeps.end(); iter != eiter; ++iter)
612
608
  {
613
- NormalGepStmt* gep = SVFUtil::cast<NormalGepStmt>(*iter);
614
- outs() << gep->getRHSVarID() << " -- NormalGep (" << gep->getFieldOffset()
615
- << ") --> " << gep->getLHSVarID() << "\n";
616
- }
617
-
618
- SVFStmt::SVFStmtSetTy& vgeps = pag->getSVFStmtSet(SVFStmt::VariantGep);
619
- for (SVFStmt::SVFStmtSetTy::iterator iter = vgeps.begin(), eiter =
620
- vgeps.end(); iter != eiter; ++iter)
621
- {
622
- outs() << (*iter)->getSrcID() << " -- VariantGep --> "
609
+ GepStmt* gep = SVFUtil::cast<GepStmt>(*iter);
610
+ if(gep->isVariantFieldGep())
611
+ outs() << (*iter)->getSrcID() << " -- VariantGep --> "
623
612
  << (*iter)->getDstID() << "\n";
613
+ else
614
+ outs() << gep->getRHSVarID() << " -- Gep (" << gep->getConstantFieldIdx()
615
+ << ") --> " << gep->getLHSVarID() << "\n";
624
616
  }
625
617
 
626
618
  SVFStmt::SVFStmtSetTy& loads = pag->getSVFStmtSet(SVFStmt::Load);
@@ -186,28 +186,6 @@ const std::string GepStmt::toString() const{
186
186
  return rawstr.str();
187
187
  }
188
188
 
189
- const std::string NormalGepStmt::toString() const{
190
- std::string str;
191
- raw_string_ostream rawstr(str);
192
- rawstr << "NormalGepStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
193
- if (Options::ShowSVFIRValue) {
194
- rawstr << "\n";
195
- rawstr << value2String(getValue());
196
- }
197
- return rawstr.str();
198
- }
199
-
200
- const std::string VariantGepStmt::toString() const{
201
- std::string str;
202
- raw_string_ostream rawstr(str);
203
- rawstr << "VariantGepStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
204
- if (Options::ShowSVFIRValue) {
205
- rawstr << "\n";
206
- rawstr << value2String(getValue());
207
- }
208
- return rawstr.str();
209
- }
210
-
211
189
  const std::string CallPE::toString() const{
212
190
  std::string str;
213
191
  raw_string_ostream rawstr(str);
@@ -133,7 +133,7 @@ const std::string ObjVar::toString() const {
133
133
  const std::string GepValVar::toString() const {
134
134
  std::string str;
135
135
  raw_string_ostream rawstr(str);
136
- rawstr << "GepValVar ID: " << getId() << " with offset_" + llvm::utostr(getFieldOffset());
136
+ rawstr << "GepValVar ID: " << getId() << " with offset_" + llvm::utostr(getConstantFieldIdx());
137
137
  if (Options::ShowSVFIRValue) {
138
138
  rawstr << "\n";
139
139
  rawstr << value2String(value);
@@ -582,7 +582,7 @@ bool ObjTypeInfo::isNonPtrFieldObj(const LocationSet& ls)
582
582
  // as we simply return new offset by mod operation without checking its
583
583
  // correctness in LocSymTableInfo::getModulusOffset(). So the following
584
584
  // assertion may fail. Try to refine the new memory model.
585
- //assert(ls.getFieldOffset() == 0 && "cannot get a field from a non-struct type");
585
+ //assert(ls.getConstantFieldIdx() == 0 && "cannot get a field from a non-struct type");
586
586
  return (hasPtrObj() == false);
587
587
  }
588
588
  }
@@ -103,7 +103,7 @@ void DCHGraph::handleDIDerivedType(const DIDerivedType *derivedType)
103
103
  assert(SVFUtil::isa<DIType>(derivedType->getScope()) && "inheriting from non-type?");
104
104
  DCHEdge *edge = addEdge(SVFUtil::dyn_cast<DIType>(derivedType->getScope()),
105
105
  derivedType->getBaseType(), DCHEdge::INHERITANCE);
106
- // If the offset does not exist (for primary base), getFieldOffset should return 0.
106
+ // If the offset does not exist (for primary base), getConstantFieldIdx should return 0.
107
107
  edge->setOffset(derivedType->getOffsetInBits());
108
108
  break;
109
109
  }
@@ -50,10 +50,10 @@ void ICFGPrinter::printICFGToJson(const std::string& filename)
50
50
  edge_obj["Edge Type"] = getPAGEdgeKindValue(edge->getEdgeKind());
51
51
  edge_obj["srcValueName"] = edge->getSrcNode()->getValueName();
52
52
  edge_obj["dstValueName"] = edge->getDstNode()->getValueName();
53
- if(edge->getEdgeKind()==PAGEdge::NormalGep)
53
+ if(edge->getEdgeKind()==SVFStmt::Gep)
54
54
  {
55
- const NormalGepStmt* gepEdge = SVFUtil::cast<NormalGepStmt>(edge);
56
- edge_obj["offset"] = gepEdge->getFieldOffset();
55
+ const GepStmt* gepEdge = SVFUtil::cast<GepStmt>(edge);
56
+ edge_obj["offset"] = gepEdge->getConstantFieldIdx();
57
57
  }
58
58
  llvm::json::Value edge_value = llvm::json::Object{edge_obj};
59
59
  PAGEdge_array.push_back(edge_value);
@@ -169,31 +169,31 @@ std::string ICFGPrinter::getPAGNodeKindValue(int kind)
169
169
  {
170
170
  switch (kind)
171
171
  {
172
- case (PAGNode::ValNode):
172
+ case (SVFVar::ValNode):
173
173
  return "ValNode";
174
174
  break;
175
- case PAGNode::ObjNode:
175
+ case SVFVar::ObjNode:
176
176
  return "ObjNode";
177
177
  break;
178
- case PAGNode::RetNode:
178
+ case SVFVar::RetNode:
179
179
  return "RetNode";
180
180
  break;
181
- case PAGNode::VarargNode:
181
+ case SVFVar::VarargNode:
182
182
  return "VarargNode";
183
183
  break;
184
- case PAGNode::GepValNode:
184
+ case SVFVar::GepValNode:
185
185
  return "GepValNode";
186
186
  break;
187
- case PAGNode::GepObjNode:
187
+ case SVFVar::GepObjNode:
188
188
  return "GepObjNode";
189
189
  break;
190
- case PAGNode::FIObjNode:
190
+ case SVFVar::FIObjNode:
191
191
  return "FIObjNode";
192
192
  break;
193
- case PAGNode::DummyValNode:
193
+ case SVFVar::DummyValNode:
194
194
  return "DummyValNode";
195
195
  break;
196
- case PAGNode::DummyObjNode:
196
+ case SVFVar::DummyObjNode:
197
197
  return "DummyObjNode";
198
198
  break;
199
199
  }
@@ -204,43 +204,40 @@ std::string ICFGPrinter::getPAGEdgeKindValue(int kind)
204
204
  {
205
205
  switch(kind)
206
206
  {
207
- case (PAGEdge::Addr):
207
+ case (SVFStmt::Addr):
208
208
  return "Addr";
209
209
  break;
210
- case (PAGEdge::Copy):
210
+ case (SVFStmt::Copy):
211
211
  return "Copy";
212
212
  break;
213
- case (PAGEdge::Store):
213
+ case (SVFStmt::Store):
214
214
  return "Store";
215
215
  break;
216
- case (PAGEdge::Load):
216
+ case (SVFStmt::Load):
217
217
  return "Load";
218
218
  break;
219
- case (PAGEdge::Call):
219
+ case (SVFStmt::Call):
220
220
  return "Call";
221
221
  break;
222
- case (PAGEdge::Ret):
222
+ case (SVFStmt::Ret):
223
223
  return "Ret";
224
224
  break;
225
- case (PAGEdge::NormalGep):
225
+ case (SVFStmt::Gep):
226
226
  return "NormalGep";
227
227
  break;
228
- case (PAGEdge::VariantGep):
229
- return "VariantGep";
230
- break;
231
- case (PAGEdge::ThreadFork):
228
+ case (SVFStmt::ThreadFork):
232
229
  return "ThreadFork";
233
230
  break;
234
- case (PAGEdge::ThreadJoin):
231
+ case (SVFStmt::ThreadJoin):
235
232
  return "ThreadJoin";
236
233
  break;
237
- case (PAGEdge::Cmp):
234
+ case (SVFStmt::Cmp):
238
235
  return "Cmp";
239
236
  break;
240
- case (PAGEdge::BinaryOp):
237
+ case (SVFStmt::BinaryOp):
241
238
  return "BinaryOp";
242
239
  break;
243
- case (PAGEdge::UnaryOp):
240
+ case (SVFStmt::UnaryOp):
244
241
  return "UnaryOp";
245
242
  break;
246
243
  }
@@ -48,7 +48,7 @@ const char* PTAStat:: TotalNumOfPointers = "TotalPointers"; ///< SVFIR value nod
48
48
  const char* PTAStat:: TotalNumOfObjects = "TotalObjects"; ///< Total SVFIR object node
49
49
  const char* PTAStat:: TotalNumOfFieldObjects = "TotalFieldObjects"; ///< Total SVFIR field object node
50
50
  const char* PTAStat:: MaxStructSize = "MaxStructSize"; ///< Max struct size (bytes)
51
- const char* PTAStat:: TotalNumOfEdges = "TotalPAGEdges"; ///< Total SVFIR edge number
51
+ const char* PTAStat:: TotalNumOfEdges = "TotalSVFStmts"; ///< Total SVFIR edge number
52
52
 
53
53
  const char* PTAStat:: NumOfFunctionObjs = "FunctionObjs"; ///< function numbers
54
54
  const char* PTAStat:: NumOfGlobalObjs = "GlobalObjs"; ///< SVFIR global object node
@@ -198,17 +198,17 @@ void PTAStat::performStat()
198
198
  generalNumMap[TotalNumOfFieldObjects] = pag->getFieldObjNodeNum();
199
199
  generalNumMap[MaxStructSize] = SymbolTableInfo::SymbolInfo()->getMaxStructSize();
200
200
  generalNumMap[TotalNumOfEdges] = pag->getPAGEdgeNum();
201
- generalNumMap["TotalPTAPAGEdges"] = pag->getPTAPAGEdgeNum();
201
+ generalNumMap["TotalPTASVFStmts"] = pag->getPTAPAGEdgeNum();
202
202
  generalNumMap[NumberOfFieldInsensitiveObj] = fiObjNumber;
203
203
  generalNumMap[NumberOfFieldSensitiveObj] = fsObjNumber;
204
204
 
205
- generalNumMap[NumOfAddrs] = pag->getSVFStmtSet(PAGEdge::Addr).size();
206
- generalNumMap[NumOfLoads] = pag->getSVFStmtSet(PAGEdge::Load).size();
207
- generalNumMap[NumOfStores] = pag->getSVFStmtSet(PAGEdge::Store).size();
208
- generalNumMap[NumOfCopys] = pag->getSVFStmtSet(PAGEdge::Copy).size();
209
- generalNumMap[NumOfGeps] = pag->getSVFStmtSet(PAGEdge::NormalGep).size() + pag->getSVFStmtSet(PAGEdge::VariantGep).size();
210
- generalNumMap[NumOfCalls] = pag->getSVFStmtSet(PAGEdge::Call).size();
211
- generalNumMap[NumOfReturns] = pag->getSVFStmtSet(PAGEdge::Ret).size();
205
+ generalNumMap[NumOfAddrs] = pag->getSVFStmtSet(SVFStmt::Addr).size();
206
+ generalNumMap[NumOfLoads] = pag->getSVFStmtSet(SVFStmt::Load).size();
207
+ generalNumMap[NumOfStores] = pag->getSVFStmtSet(SVFStmt::Store).size();
208
+ generalNumMap[NumOfCopys] = pag->getSVFStmtSet(SVFStmt::Copy).size();
209
+ generalNumMap[NumOfGeps] = pag->getSVFStmtSet(SVFStmt::Gep).size();
210
+ generalNumMap[NumOfCalls] = pag->getSVFStmtSet(SVFStmt::Call).size();
211
+ generalNumMap[NumOfReturns] = pag->getSVFStmtSet(SVFStmt::Ret).size();
212
212
 
213
213
  generalNumMap[NumOfFunctionObjs] = numOfFunction;
214
214
  generalNumMap[NumOfGlobalObjs] = numOfGlobal;
@@ -155,7 +155,7 @@ const NodeBS TypeBasedHeapCloning::getGepObjClones(NodeID base, unsigned offset)
155
155
  s64_t totalOffset = offset;
156
156
  if (const GepObjVar *baseGep = SVFUtil::dyn_cast<GepObjVar>(baseNode))
157
157
  {
158
- totalOffset += baseGep->getFieldOffset();
158
+ totalOffset += baseGep->getConstantFieldIdx();
159
159
  }
160
160
 
161
161
  const DIType *baseType = getType(base);
@@ -189,7 +189,7 @@ const NodeBS TypeBasedHeapCloning::getGepObjClones(NodeID base, unsigned offset)
189
189
 
190
190
  if (GepObjVar *gepNode = SVFUtil::dyn_cast<GepObjVar>(node))
191
191
  {
192
- if (gepNode->getFieldOffset() == totalOffset)
192
+ if (gepNode->getConstantFieldIdx() == totalOffset)
193
193
  {
194
194
  geps.set(gep);
195
195
  }
@@ -211,7 +211,7 @@ const NodeBS TypeBasedHeapCloning::getGepObjClones(NodeID base, unsigned offset)
211
211
  // No gep node has even be created, so create one.
212
212
  NodeID newGep;
213
213
  LocationSet newLS;
214
- // fldIdx is what is returned by getFieldOffset.
214
+ // fldIdx is what is returned by getConstantFieldIdx.
215
215
  newLS.setFldIdx(totalOffset);
216
216
 
217
217
  if (isClone(base))
@@ -414,7 +414,7 @@ NodeID TypeBasedHeapCloning::cloneObject(NodeID o, const DIType *type, bool)
414
414
  const PAGNode *obj = ppag->getGNode(o);
415
415
  if (const GepObjVar *gepObj = SVFUtil::dyn_cast<GepObjVar>(obj))
416
416
  {
417
- const NodeBS &clones = getGepObjClones(gepObj->getBaseNode(), gepObj->getFieldOffset());
417
+ const NodeBS &clones = getGepObjClones(gepObj->getBaseNode(), gepObj->getConstantFieldIdx());
418
418
  // TODO: a bit of repetition.
419
419
  for (NodeID clone : clones)
420
420
  {
@@ -427,7 +427,7 @@ NodeID TypeBasedHeapCloning::cloneObject(NodeID o, const DIType *type, bool)
427
427
  clone = addCloneGepObjNode(gepObj->getMemObj(), gepObj->getLocationSet());
428
428
 
429
429
  // The base needs to know about the new clone.
430
- addGepToObj(clone, gepObj->getBaseNode(), gepObj->getFieldOffset());
430
+ addGepToObj(clone, gepObj->getBaseNode(), gepObj->getConstantFieldIdx());
431
431
 
432
432
  addClone(o, clone);
433
433
  addClone(getOriginalObj(o), clone);
@@ -96,7 +96,7 @@ bool AndersenSFR::processGepPts(PointsTo& pts, const GepCGEdge* edge)
96
96
  for (NodeID ptd : srcInits)
97
97
  sortSrcInits.insert(ptd);
98
98
 
99
- s64_t offset = SVFUtil::dyn_cast<NormalGepCGEdge>(edge)->getFieldOffset();
99
+ s64_t offset = SVFUtil::dyn_cast<NormalGepCGEdge>(edge)->getConstantFieldIdx();
100
100
  fieldExpand(sortSrcInits, offset, dst->strides, tmpDstPts);
101
101
  }
102
102
 
@@ -134,7 +134,7 @@ void AndersenSFR::fieldExpand(NodeSet& initials, s64_t offset, NodeBS& strides,
134
134
  const u32_t maxLimit = obj->getMaxFieldOffsetLimit();
135
135
  s64_t initOffset;
136
136
  if (GepObjVar *gepNode = SVFUtil::dyn_cast<GepObjVar>(initPN))
137
- initOffset = gepNode->getFieldOffset();
137
+ initOffset = gepNode->getConstantFieldIdx();
138
138
  else if (SVFUtil::isa<FIObjVar>(initPN) || SVFUtil::isa<DummyObjVar>(initPN))
139
139
  initOffset = 0;
140
140
  else
@@ -228,8 +228,8 @@ void AndersenStat::statNullPtr()
228
228
  PAGNode* pagNode = iter->second;
229
229
  if (pagNode->isTopLevelPtr() == false)
230
230
  continue;
231
- PAGEdge::SVFStmtSetTy& inComingStore = pagNode->getIncomingEdges(PAGEdge::Store);
232
- PAGEdge::SVFStmtSetTy& outGoingLoad = pagNode->getOutgoingEdges(PAGEdge::Load);
231
+ SVFStmt::SVFStmtSetTy& inComingStore = pagNode->getIncomingEdges(SVFStmt::Store);
232
+ SVFStmt::SVFStmtSetTy& outGoingLoad = pagNode->getOutgoingEdges(SVFStmt::Load);
233
233
  if (inComingStore.empty()==false || outGoingLoad.empty()==false)
234
234
  {
235
235
  ///TODO: change the condition here to fetch the points-to set
package/lib/WPA/CSC.cpp CHANGED
@@ -87,7 +87,7 @@ void CSC::visit(NodeID nodeId, s64_t _w)
87
87
  {
88
88
  s64_t offset;
89
89
  if (NormalGepCGEdge* gepCGEdge = SVFUtil::dyn_cast<NormalGepCGEdge>(*eit))
90
- offset = gepCGEdge->getFieldOffset();
90
+ offset = gepCGEdge->getConstantFieldIdx();
91
91
  else
92
92
  offset = 0;
93
93
  NodeID dstId = (*eit)->getDstID();
@@ -107,7 +107,7 @@ void CSC::visit(NodeID nodeId, s64_t _w)
107
107
  if (_consG->hasEdge(node, backNode, ConstraintEdge::NormalGep))
108
108
  {
109
109
  NormalGepCGEdge* normalGep = SVFUtil::dyn_cast<NormalGepCGEdge>(_consG->getEdge(node, backNode, ConstraintEdge::NormalGep));
110
- s64_t _w = normalGep->getFieldOffset();
110
+ s64_t _w = normalGep->getConstantFieldIdx();
111
111
  s64_t _l = _D[nodeId] +_w - _D[backNodeId];
112
112
  backNode->strides.set(_l);
113
113
  for (auto cNodeId : _C)