svf-tools 1.0.772 → 1.0.774

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 (421) hide show
  1. package/SVF-doxygen/html/html/AddressValue_8h_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +3 -3
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +8 -9
  4. package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
  5. package/SVF-doxygen/html/html/BoundedZ3Expr_8cpp_source.html +10 -9
  6. package/SVF-doxygen/html/html/BoundedZ3Expr_8h_source.html +380 -380
  7. package/SVF-doxygen/html/html/CFBasicBlockG_8cpp_source.html +2 -2
  8. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +1 -1
  10. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +3 -3
  11. package/SVF-doxygen/html/html/ConsExeState_8cpp_source.html +1 -1
  12. package/SVF-doxygen/html/html/ConsExeState_8h_source.html +1 -1
  13. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/html/ConsG_8h_source.html +8 -8
  15. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +7 -7
  16. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +4 -4
  17. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +2 -2
  18. package/SVF-doxygen/html/html/DDAClient_8h_source.html +2 -2
  19. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +3 -3
  20. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +4 -4
  21. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +9 -9
  22. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  23. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  24. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +4 -4
  25. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +4 -4
  26. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +2 -2
  27. package/SVF-doxygen/html/html/IntervalExeState_8h_source.html +2 -2
  28. package/SVF-doxygen/html/html/IntervalValue_8h_source.html +35 -35
  29. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
  30. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +5 -5
  31. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  32. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +3 -3
  33. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +3 -3
  34. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +3 -3
  35. package/SVF-doxygen/html/html/MTA_8cpp_source.html +4 -4
  36. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +15 -15
  37. package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
  38. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
  39. package/SVF-doxygen/html/html/MemSSA_8h_source.html +1 -1
  40. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +670 -671
  41. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +114 -107
  42. package/SVF-doxygen/html/html/NumericLiteral_8h_source.html +19 -18
  43. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +1 -1
  44. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +395 -350
  45. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +443 -433
  46. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +6 -6
  47. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +12 -12
  48. package/SVF-doxygen/html/html/RelationSolver_8cpp_source.html +3 -3
  49. package/SVF-doxygen/html/html/SVFFileSystem_8cpp_source.html +6 -6
  50. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
  51. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +10 -10
  52. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  53. package/SVF-doxygen/html/html/SVFIR2ConsExeState_8cpp_source.html +1 -1
  54. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +324 -328
  55. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8h_source.html +8 -8
  56. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +2 -2
  57. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +288 -286
  58. package/SVF-doxygen/html/html/SVFIR_8h_source.html +667 -665
  59. package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +7 -7
  60. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  61. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +1 -1
  62. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +2 -2
  63. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +6 -6
  64. package/SVF-doxygen/html/html/SingleAbsValue_8h_source.html +3 -3
  65. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +1 -1
  66. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  67. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  68. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
  69. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +2 -2
  70. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  71. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  72. package/SVF-doxygen/html/html/VFG_8cpp_source.html +15 -15
  73. package/SVF-doxygen/html/html/VFG_8h_source.html +5 -5
  74. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
  75. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +284 -124
  76. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +108 -95
  77. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
  78. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +1 -1
  79. package/SVF-doxygen/html/html/classSVF_1_1AddressValue.html +1 -1
  80. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +1 -1
  81. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +59 -54
  82. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +30 -20
  83. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +52 -47
  84. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +18 -9
  85. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +64 -59
  86. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +11 -1
  87. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +65 -60
  88. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +11 -1
  89. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +3 -3
  90. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +60 -55
  91. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +10 -0
  92. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +31 -26
  93. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +573 -379
  94. package/SVF-doxygen/html/html/classSVF_1_1BoundedZ3Expr-members.html +3 -3
  95. package/SVF-doxygen/html/html/classSVF_1_1BoundedZ3Expr.html +306 -305
  96. package/SVF-doxygen/html/html/classSVF_1_1CFBasicBlockNode.html +2 -2
  97. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +37 -32
  98. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +24 -14
  99. package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +39 -34
  100. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +10 -0
  101. package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +40 -35
  102. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +10 -0
  103. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +305 -305
  104. package/SVF-doxygen/html/html/classSVF_1_1ConsExeState.html +2 -2
  105. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +7 -7
  106. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +8 -8
  107. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +2 -2
  108. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +1 -1
  109. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +4 -4
  110. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +8 -8
  111. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +66 -61
  112. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +10 -0
  113. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +54 -49
  114. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +11 -1
  115. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +65 -60
  116. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +28 -14
  117. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +5 -5
  118. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  119. package/SVF-doxygen/html/html/classSVF_1_1IntervalValue-members.html +3 -3
  120. package/SVF-doxygen/html/html/classSVF_1_1IntervalValue.html +28 -27
  121. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
  122. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +5 -5
  123. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +3 -3
  124. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +14 -14
  125. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +2 -2
  126. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +3 -3
  127. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
  128. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +1 -1
  129. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator-members.html +14 -13
  130. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +131 -99
  131. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +554 -554
  132. package/SVF-doxygen/html/html/classSVF_1_1NumericLiteral-members.html +2 -2
  133. package/SVF-doxygen/html/html/classSVF_1_1NumericLiteral.html +25 -25
  134. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +4 -4
  135. package/SVF-doxygen/html/html/classSVF_1_1POCRAlias-members.html +41 -36
  136. package/SVF-doxygen/html/html/classSVF_1_1POCRAlias.html +10 -0
  137. package/SVF-doxygen/html/html/classSVF_1_1POCRHybrid-members.html +41 -36
  138. package/SVF-doxygen/html/html/classSVF_1_1POCRHybrid.html +10 -0
  139. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +1 -1
  140. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +15 -15
  141. package/SVF-doxygen/html/html/classSVF_1_1RelationSolver.html +3 -3
  142. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +10 -10
  143. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +3 -3
  144. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +175 -174
  145. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +754 -720
  146. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ConsExeState.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +308 -312
  148. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +29 -29
  149. package/SVF-doxygen/html/html/classSVF_1_1SVFIRReader.html +3 -3
  150. package/SVF-doxygen/html/html/classSVF_1_1SVFIRWriter.html +2 -2
  151. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +7 -7
  152. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +1 -1
  153. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +2 -2
  154. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +6 -6
  155. package/SVF-doxygen/html/html/classSVF_1_1SingleAbsValue-members.html +3 -3
  156. package/SVF-doxygen/html/html/classSVF_1_1SingleAbsValue.html +10 -10
  157. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
  158. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +55 -50
  159. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +24 -14
  160. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +2 -2
  161. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
  162. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
  163. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +55 -50
  164. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +12 -2
  165. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +18 -18
  166. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +21 -14
  167. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +339 -49
  168. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +10 -10
  169. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +86 -86
  170. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +1 -1
  171. package/SVF-doxygen/html/html/functions_a.html +1 -1
  172. package/SVF-doxygen/html/html/functions_b.html +2 -1
  173. package/SVF-doxygen/html/html/functions_f.html +6 -6
  174. package/SVF-doxygen/html/html/functions_func.html +1 -1
  175. package/SVF-doxygen/html/html/functions_func_b.html +1 -1
  176. package/SVF-doxygen/html/html/functions_func_g.html +3 -3
  177. package/SVF-doxygen/html/html/functions_func_i.html +14 -11
  178. package/SVF-doxygen/html/html/functions_func_p.html +1 -1
  179. package/SVF-doxygen/html/html/functions_func_r.html +16 -3
  180. package/SVF-doxygen/html/html/functions_func_s.html +21 -20
  181. package/SVF-doxygen/html/html/functions_func_w.html +11 -2
  182. package/SVF-doxygen/html/html/functions_g.html +3 -3
  183. package/SVF-doxygen/html/html/functions_i.html +22 -19
  184. package/SVF-doxygen/html/html/functions_l.html +3 -3
  185. package/SVF-doxygen/html/html/functions_o.html +12 -12
  186. package/SVF-doxygen/html/html/functions_p.html +13 -13
  187. package/SVF-doxygen/html/html/functions_r.html +20 -11
  188. package/SVF-doxygen/html/html/functions_rela_b.html +3 -0
  189. package/SVF-doxygen/html/html/functions_s.html +23 -24
  190. package/SVF-doxygen/html/html/functions_t.html +5 -5
  191. package/SVF-doxygen/html/html/functions_v.html +6 -6
  192. package/SVF-doxygen/html/html/functions_w.html +17 -8
  193. package/SVF-doxygen/html/html/namespaceSVF.html +10 -10
  194. package/SVF-doxygen/html/html/search/all_1.js +1 -1
  195. package/SVF-doxygen/html/html/search/all_10.js +324 -324
  196. package/SVF-doxygen/html/html/search/all_11.js +217 -213
  197. package/SVF-doxygen/html/html/search/all_12.js +541 -541
  198. package/SVF-doxygen/html/html/search/all_13.js +190 -190
  199. package/SVF-doxygen/html/html/search/all_14.js +66 -66
  200. package/SVF-doxygen/html/html/search/all_15.js +170 -170
  201. package/SVF-doxygen/html/html/search/all_16.js +63 -60
  202. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  203. package/SVF-doxygen/html/html/search/all_18.js +1 -1
  204. package/SVF-doxygen/html/html/search/all_19.js +11 -11
  205. package/SVF-doxygen/html/html/search/all_1a.js +169 -169
  206. package/SVF-doxygen/html/html/search/all_2.js +3 -3
  207. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  208. package/SVF-doxygen/html/html/search/all_7.js +1 -1
  209. package/SVF-doxygen/html/html/search/all_9.js +535 -534
  210. package/SVF-doxygen/html/html/search/all_a.js +46 -46
  211. package/SVF-doxygen/html/html/search/all_b.js +26 -26
  212. package/SVF-doxygen/html/html/search/all_c.js +116 -116
  213. package/SVF-doxygen/html/html/search/all_d.js +196 -196
  214. package/SVF-doxygen/html/html/search/all_e.js +206 -206
  215. package/SVF-doxygen/html/html/search/all_f.js +116 -116
  216. package/SVF-doxygen/html/html/search/classes_0.js +26 -26
  217. package/SVF-doxygen/html/html/search/classes_1.js +9 -9
  218. package/SVF-doxygen/html/html/search/classes_10.js +73 -73
  219. package/SVF-doxygen/html/html/search/classes_11.js +15 -15
  220. package/SVF-doxygen/html/html/search/classes_12.js +2 -2
  221. package/SVF-doxygen/html/html/search/classes_13.js +10 -10
  222. package/SVF-doxygen/html/html/search/classes_14.js +14 -14
  223. package/SVF-doxygen/html/html/search/classes_15.js +1 -1
  224. package/SVF-doxygen/html/html/search/classes_2.js +76 -76
  225. package/SVF-doxygen/html/html/search/classes_3.js +35 -35
  226. package/SVF-doxygen/html/html/search/classes_4.js +8 -8
  227. package/SVF-doxygen/html/html/search/classes_5.js +28 -28
  228. package/SVF-doxygen/html/html/search/classes_6.js +98 -98
  229. package/SVF-doxygen/html/html/search/classes_7.js +33 -33
  230. package/SVF-doxygen/html/html/search/classes_8.js +56 -56
  231. package/SVF-doxygen/html/html/search/classes_9.js +1 -1
  232. package/SVF-doxygen/html/html/search/classes_a.js +12 -12
  233. package/SVF-doxygen/html/html/search/classes_b.js +29 -29
  234. package/SVF-doxygen/html/html/search/classes_c.js +6 -6
  235. package/SVF-doxygen/html/html/search/classes_d.js +18 -18
  236. package/SVF-doxygen/html/html/search/classes_e.js +36 -36
  237. package/SVF-doxygen/html/html/search/classes_f.js +25 -25
  238. package/SVF-doxygen/html/html/search/defines_0.js +3 -3
  239. package/SVF-doxygen/html/html/search/defines_1.js +2 -2
  240. package/SVF-doxygen/html/html/search/defines_2.js +30 -30
  241. package/SVF-doxygen/html/html/search/defines_3.js +20 -20
  242. package/SVF-doxygen/html/html/search/defines_4.js +3 -3
  243. package/SVF-doxygen/html/html/search/defines_5.js +4 -4
  244. package/SVF-doxygen/html/html/search/defines_6.js +2 -2
  245. package/SVF-doxygen/html/html/search/defines_7.js +5 -5
  246. package/SVF-doxygen/html/html/search/defines_8.js +11 -11
  247. package/SVF-doxygen/html/html/search/defines_9.js +9 -9
  248. package/SVF-doxygen/html/html/search/defines_a.js +2 -2
  249. package/SVF-doxygen/html/html/search/defines_b.js +1 -1
  250. package/SVF-doxygen/html/html/search/defines_c.js +3 -3
  251. package/SVF-doxygen/html/html/search/defines_d.js +2 -2
  252. package/SVF-doxygen/html/html/search/defines_e.js +7 -7
  253. package/SVF-doxygen/html/html/search/defines_f.js +3 -3
  254. package/SVF-doxygen/html/html/search/enums_0.js +3 -3
  255. package/SVF-doxygen/html/html/search/enums_1.js +2 -2
  256. package/SVF-doxygen/html/html/search/enums_10.js +1 -1
  257. package/SVF-doxygen/html/html/search/enums_11.js +1 -1
  258. package/SVF-doxygen/html/html/search/enums_2.js +8 -8
  259. package/SVF-doxygen/html/html/search/enums_3.js +1 -1
  260. package/SVF-doxygen/html/html/search/enums_4.js +3 -3
  261. package/SVF-doxygen/html/html/search/enums_5.js +1 -1
  262. package/SVF-doxygen/html/html/search/enums_6.js +2 -2
  263. package/SVF-doxygen/html/html/search/enums_7.js +2 -2
  264. package/SVF-doxygen/html/html/search/enums_8.js +4 -4
  265. package/SVF-doxygen/html/html/search/enums_9.js +1 -1
  266. package/SVF-doxygen/html/html/search/enums_a.js +1 -1
  267. package/SVF-doxygen/html/html/search/enums_b.js +7 -7
  268. package/SVF-doxygen/html/html/search/enums_c.js +1 -1
  269. package/SVF-doxygen/html/html/search/enums_d.js +4 -4
  270. package/SVF-doxygen/html/html/search/enums_e.js +2 -2
  271. package/SVF-doxygen/html/html/search/enums_f.js +4 -4
  272. package/SVF-doxygen/html/html/search/enumvalues_0.js +14 -14
  273. package/SVF-doxygen/html/html/search/enumvalues_1.js +14 -14
  274. package/SVF-doxygen/html/html/search/enumvalues_10.js +35 -35
  275. package/SVF-doxygen/html/html/search/enumvalues_11.js +3 -3
  276. package/SVF-doxygen/html/html/search/enumvalues_12.js +10 -10
  277. package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
  278. package/SVF-doxygen/html/html/search/enumvalues_14.js +1 -1
  279. package/SVF-doxygen/html/html/search/enumvalues_15.js +3 -3
  280. package/SVF-doxygen/html/html/search/enumvalues_2.js +36 -36
  281. package/SVF-doxygen/html/html/search/enumvalues_3.js +13 -13
  282. package/SVF-doxygen/html/html/search/enumvalues_4.js +2 -2
  283. package/SVF-doxygen/html/html/search/enumvalues_5.js +47 -47
  284. package/SVF-doxygen/html/html/search/enumvalues_6.js +6 -6
  285. package/SVF-doxygen/html/html/search/enumvalues_7.js +9 -9
  286. package/SVF-doxygen/html/html/search/enumvalues_8.js +23 -23
  287. package/SVF-doxygen/html/html/search/enumvalues_9.js +6 -6
  288. package/SVF-doxygen/html/html/search/enumvalues_a.js +15 -15
  289. package/SVF-doxygen/html/html/search/enumvalues_b.js +11 -11
  290. package/SVF-doxygen/html/html/search/enumvalues_c.js +5 -5
  291. package/SVF-doxygen/html/html/search/enumvalues_d.js +18 -18
  292. package/SVF-doxygen/html/html/search/enumvalues_e.js +9 -9
  293. package/SVF-doxygen/html/html/search/enumvalues_f.js +45 -45
  294. package/SVF-doxygen/html/html/search/files_0.js +13 -13
  295. package/SVF-doxygen/html/html/search/files_1.js +7 -7
  296. package/SVF-doxygen/html/html/search/files_10.js +8 -8
  297. package/SVF-doxygen/html/html/search/files_11.js +8 -8
  298. package/SVF-doxygen/html/html/search/files_12.js +2 -2
  299. package/SVF-doxygen/html/html/search/files_2.js +49 -49
  300. package/SVF-doxygen/html/html/search/files_3.js +14 -14
  301. package/SVF-doxygen/html/html/search/files_4.js +5 -5
  302. package/SVF-doxygen/html/html/search/files_5.js +13 -13
  303. package/SVF-doxygen/html/html/search/files_6.js +9 -9
  304. package/SVF-doxygen/html/html/search/files_7.js +14 -14
  305. package/SVF-doxygen/html/html/search/files_8.js +13 -13
  306. package/SVF-doxygen/html/html/search/files_9.js +18 -18
  307. package/SVF-doxygen/html/html/search/files_a.js +3 -3
  308. package/SVF-doxygen/html/html/search/files_b.js +2 -2
  309. package/SVF-doxygen/html/html/search/files_c.js +20 -20
  310. package/SVF-doxygen/html/html/search/files_d.js +4 -4
  311. package/SVF-doxygen/html/html/search/files_e.js +62 -62
  312. package/SVF-doxygen/html/html/search/files_f.js +8 -8
  313. package/SVF-doxygen/html/html/search/functions_0.js +12 -12
  314. package/SVF-doxygen/html/html/search/functions_1.js +350 -350
  315. package/SVF-doxygen/html/html/search/functions_10.js +140 -140
  316. package/SVF-doxygen/html/html/search/functions_11.js +131 -127
  317. package/SVF-doxygen/html/html/search/functions_12.js +275 -275
  318. package/SVF-doxygen/html/html/search/functions_13.js +58 -58
  319. package/SVF-doxygen/html/html/search/functions_14.js +38 -38
  320. package/SVF-doxygen/html/html/search/functions_15.js +71 -71
  321. package/SVF-doxygen/html/html/search/functions_16.js +32 -29
  322. package/SVF-doxygen/html/html/search/functions_17.js +3 -3
  323. package/SVF-doxygen/html/html/search/functions_18.js +169 -169
  324. package/SVF-doxygen/html/html/search/functions_2.js +84 -84
  325. package/SVF-doxygen/html/html/search/functions_3.js +253 -253
  326. package/SVF-doxygen/html/html/search/functions_4.js +74 -74
  327. package/SVF-doxygen/html/html/search/functions_5.js +51 -51
  328. package/SVF-doxygen/html/html/search/functions_6.js +58 -58
  329. package/SVF-doxygen/html/html/search/functions_7.js +842 -842
  330. package/SVF-doxygen/html/html/search/functions_8.js +143 -143
  331. package/SVF-doxygen/html/html/search/functions_9.js +423 -422
  332. package/SVF-doxygen/html/html/search/functions_a.js +30 -30
  333. package/SVF-doxygen/html/html/search/functions_b.js +2 -2
  334. package/SVF-doxygen/html/html/search/functions_c.js +26 -26
  335. package/SVF-doxygen/html/html/search/functions_d.js +77 -77
  336. package/SVF-doxygen/html/html/search/functions_e.js +35 -35
  337. package/SVF-doxygen/html/html/search/functions_f.js +56 -56
  338. package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
  339. package/SVF-doxygen/html/html/search/namespaces_1.js +7 -7
  340. package/SVF-doxygen/html/html/search/related_0.js +2 -2
  341. package/SVF-doxygen/html/html/search/related_1.js +2 -1
  342. package/SVF-doxygen/html/html/search/related_2.js +2 -2
  343. package/SVF-doxygen/html/html/search/related_3.js +2 -2
  344. package/SVF-doxygen/html/html/search/related_4.js +2 -2
  345. package/SVF-doxygen/html/html/search/related_5.js +1 -1
  346. package/SVF-doxygen/html/html/search/related_6.js +2 -2
  347. package/SVF-doxygen/html/html/search/related_7.js +4 -4
  348. package/SVF-doxygen/html/html/search/related_8.js +2 -2
  349. package/SVF-doxygen/html/html/search/related_9.js +4 -4
  350. package/SVF-doxygen/html/html/search/related_a.js +19 -19
  351. package/SVF-doxygen/html/html/search/related_b.js +4 -4
  352. package/SVF-doxygen/html/html/search/related_c.js +1 -1
  353. package/SVF-doxygen/html/html/search/related_d.js +11 -11
  354. package/SVF-doxygen/html/html/search/related_e.js +2 -2
  355. package/SVF-doxygen/html/html/search/related_f.js +2 -2
  356. package/SVF-doxygen/html/html/search/typedefs_0.js +18 -18
  357. package/SVF-doxygen/html/html/search/typedefs_1.js +25 -25
  358. package/SVF-doxygen/html/html/search/typedefs_10.js +62 -62
  359. package/SVF-doxygen/html/html/search/typedefs_11.js +13 -13
  360. package/SVF-doxygen/html/html/search/typedefs_12.js +11 -11
  361. package/SVF-doxygen/html/html/search/typedefs_13.js +35 -35
  362. package/SVF-doxygen/html/html/search/typedefs_14.js +8 -8
  363. package/SVF-doxygen/html/html/search/typedefs_2.js +126 -126
  364. package/SVF-doxygen/html/html/search/typedefs_3.js +39 -39
  365. package/SVF-doxygen/html/html/search/typedefs_4.js +16 -16
  366. package/SVF-doxygen/html/html/search/typedefs_5.js +41 -41
  367. package/SVF-doxygen/html/html/search/typedefs_6.js +52 -52
  368. package/SVF-doxygen/html/html/search/typedefs_7.js +40 -40
  369. package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
  370. package/SVF-doxygen/html/html/search/typedefs_9.js +6 -6
  371. package/SVF-doxygen/html/html/search/typedefs_a.js +29 -29
  372. package/SVF-doxygen/html/html/search/typedefs_b.js +29 -29
  373. package/SVF-doxygen/html/html/search/typedefs_c.js +40 -40
  374. package/SVF-doxygen/html/html/search/typedefs_d.js +15 -15
  375. package/SVF-doxygen/html/html/search/typedefs_e.js +52 -52
  376. package/SVF-doxygen/html/html/search/typedefs_f.js +14 -14
  377. package/SVF-doxygen/html/html/search/variables_0.js +147 -147
  378. package/SVF-doxygen/html/html/search/variables_1.js +75 -75
  379. package/SVF-doxygen/html/html/search/variables_10.js +97 -97
  380. package/SVF-doxygen/html/html/search/variables_11.js +46 -46
  381. package/SVF-doxygen/html/html/search/variables_12.js +92 -92
  382. package/SVF-doxygen/html/html/search/variables_13.js +75 -75
  383. package/SVF-doxygen/html/html/search/variables_14.js +14 -14
  384. package/SVF-doxygen/html/html/search/variables_15.js +48 -48
  385. package/SVF-doxygen/html/html/search/variables_16.js +9 -9
  386. package/SVF-doxygen/html/html/search/variables_17.js +1 -1
  387. package/SVF-doxygen/html/html/search/variables_18.js +2 -2
  388. package/SVF-doxygen/html/html/search/variables_2.js +34 -34
  389. package/SVF-doxygen/html/html/search/variables_3.js +141 -141
  390. package/SVF-doxygen/html/html/search/variables_4.js +55 -55
  391. package/SVF-doxygen/html/html/search/variables_5.js +38 -38
  392. package/SVF-doxygen/html/html/search/variables_6.js +66 -66
  393. package/SVF-doxygen/html/html/search/variables_7.js +33 -33
  394. package/SVF-doxygen/html/html/search/variables_8.js +7 -7
  395. package/SVF-doxygen/html/html/search/variables_9.js +77 -77
  396. package/SVF-doxygen/html/html/search/variables_a.js +4 -4
  397. package/SVF-doxygen/html/html/search/variables_b.js +10 -10
  398. package/SVF-doxygen/html/html/search/variables_c.js +45 -45
  399. package/SVF-doxygen/html/html/search/variables_d.js +56 -56
  400. package/SVF-doxygen/html/html/search/variables_e.js +123 -123
  401. package/SVF-doxygen/html/html/search/variables_f.js +30 -30
  402. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  403. package/SVF-doxygen/html/html/structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html +4 -4
  404. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1BoundedZ3Expr_01_4.html +5 -5
  405. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  406. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  407. package/package.json +1 -1
  408. package/svf/include/AbstractExecution/BoundedZ3Expr.h +4 -5
  409. package/svf/include/AbstractExecution/IntervalValue.h +19 -19
  410. package/svf/include/AbstractExecution/NumericLiteral.h +2 -2
  411. package/svf/include/MemoryModel/PointerAnalysisImpl.h +5 -0
  412. package/svf/include/SVFIR/SVFIR.h +2 -1
  413. package/svf/include/Util/NodeIDAllocator.h +6 -0
  414. package/svf/include/WPA/VersionedFlowSensitive.h +8 -0
  415. package/svf/lib/AbstractExecution/BoundedZ3Expr.cpp +5 -5
  416. package/svf/lib/AbstractExecution/SVFIR2ItvExeState.cpp +0 -4
  417. package/svf/lib/MemoryModel/PointerAnalysisImpl.cpp +101 -66
  418. package/svf/lib/SVFIR/SVFIR.cpp +5 -3
  419. package/svf/lib/Util/NodeIDAllocator.cpp +2 -4
  420. package/svf/lib/WPA/Andersen.cpp +1 -1
  421. package/svf/lib/WPA/VersionedFlowSensitive.cpp +148 -0
@@ -433,269 +433,271 @@ $(function() {
433
433
  <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; </div>
434
434
  <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; NodeOffsetMap::iterator iter = <a class="code" href="classSVF_1_1SVFIR.html#a09a604cf6a7708f4391fcf807fec1453">GepObjVarMap</a>.find(std::make_pair(base, newLS));</div>
435
435
  <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">if</span> (iter == <a class="code" href="classSVF_1_1SVFIR.html#a09a604cf6a7708f4391fcf807fec1453">GepObjVarMap</a>.end())</div>
436
- <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#aba63798e93490f257574c24d3c03507d">addGepObjNode</a>(obj, newLS);</div>
437
- <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">else</span></div>
438
- <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">return</span> iter-&gt;second;</div>
439
- <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; </div>
440
- <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;}</div>
441
- <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; </div>
442
- <div class="line"><a name="l00446"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aba63798e93490f257574c24d3c03507d"> 446</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#aba63798e93490f257574c24d3c03507d">SVFIR::addGepObjNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a>&amp; apOffset)</div>
443
- <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;{</div>
444
- <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="comment">//assert(findPAGNode(i) == false &amp;&amp; &quot;this node should not be created before&quot;);</span></div>
445
- <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div>
446
- <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; assert(0==<a class="code" href="classSVF_1_1SVFIR.html#a09a604cf6a7708f4391fcf807fec1453">GepObjVarMap</a>.count(std::make_pair(base, apOffset))</div>
447
- <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; &amp;&amp; <span class="stringliteral">&quot;this node should not be created before&quot;</span>);</div>
448
- <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; </div>
449
- <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepId = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#abaff066537f06c4891c199ebfc9624e3">allocateGepObjectId</a>(base, apOffset, <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>());</div>
450
- <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a09a604cf6a7708f4391fcf807fec1453">GepObjVarMap</a>[std::make_pair(base, apOffset)] = gepId;</div>
451
- <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a>(obj, gepId, apOffset);</div>
452
- <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">memToFieldsMap</a>[base].set(gepId);</div>
453
- <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a20ded5829d5975dfaca33f9c64113fe6">addObjNode</a>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a2f70e9c830b18f25c56b530722f106c4">getValue</a>(), node, gepId);</div>
454
- <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;}</div>
455
- <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; </div>
456
- <div class="line"><a name="l00463"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a06465449e58e14bfb1c3eee2c97d3242"> 463</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a06465449e58e14bfb1c3eee2c97d3242">SVFIR::addFIObjNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj)</div>
457
- <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;{</div>
458
- <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="comment">//assert(findPAGNode(i) == false &amp;&amp; &quot;this node should not be created before&quot;);</span></div>
459
- <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div>
460
- <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">memToFieldsMap</a>[base].set(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>());</div>
461
- <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <a class="code" href="classSVF_1_1FIObjVar.html">FIObjVar</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FIObjVar.html">FIObjVar</a>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a2f70e9c830b18f25c56b530722f106c4">getValue</a>(), obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>(), obj);</div>
462
- <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a20ded5829d5975dfaca33f9c64113fe6">addObjNode</a>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a2f70e9c830b18f25c56b530722f106c4">getValue</a>(), node, obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>());</div>
463
- <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;}</div>
464
- <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; </div>
465
- <div class="line"><a name="l00475"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089"> 475</a></span>&#160;<a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">SVFIR::getAllFieldsObjVars</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj)</div>
466
- <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;{</div>
467
- <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div>
468
- <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">memToFieldsMap</a>[base];</div>
469
- <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;}</div>
470
- <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; </div>
471
- <div class="line"><a name="l00484"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a942072d153928e478c76e4b7f1fafa29"> 484</a></span>&#160;<a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">SVFIR::getAllFieldsObjVars</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div>
472
- <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;{</div>
473
- <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getGNode(<span class="keywordtype">id</span>);</div>
474
- <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; assert(SVFUtil::isa&lt;ObjVar&gt;(node) &amp;&amp; <span class="stringliteral">&quot;need an object node&quot;</span>);</div>
475
- <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>* obj = SVFUtil::cast&lt;ObjVar&gt;(node);</div>
476
- <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">getAllFieldsObjVars</a>(obj-&gt;<a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>());</div>
477
- <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;}</div>
478
- <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; </div>
479
- <div class="line"><a name="l00497"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a42d1e2f0213fb6e54c56cc0695b57cb0"> 497</a></span>&#160;<a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1SVFIR.html#a42d1e2f0213fb6e54c56cc0695b57cb0">SVFIR::getFieldsAfterCollapse</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div>
480
- <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;{</div>
481
- <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getGNode(<span class="keywordtype">id</span>);</div>
482
- <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; assert(SVFUtil::isa&lt;ObjVar&gt;(node) &amp;&amp; <span class="stringliteral">&quot;need an object node&quot;</span>);</div>
483
- <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = SVFUtil::cast&lt;ObjVar&gt;(node)-&gt;getMemObj();</div>
484
- <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">if</span>(mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>())</div>
485
- <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; {</div>
486
- <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> bs;</div>
487
- <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; bs.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(<a class="code" href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354">getFIObjVar</a>(mem));</div>
488
- <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">return</span> bs;</div>
489
- <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div>
490
- <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordflow">else</span></div>
491
- <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">getAllFieldsObjVars</a>(mem);</div>
492
- <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;}</div>
493
- <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; </div>
494
- <div class="line"><a name="l00517"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc"> 517</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">SVFIR::getBaseValVar</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId)</div>
495
- <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;{</div>
496
- <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(nodeId);</div>
497
- <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">hasIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>))</div>
498
- <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; {</div>
499
- <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; geps = node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6">getIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>);</div>
500
- <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; </div>
501
- <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; assert((geps.size()==1) &amp;&amp; <span class="stringliteral">&quot;one node can only be connected by at most one gep edge!&quot;</span>);</div>
436
+ <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; {</div>
437
+ <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepId = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#abaff066537f06c4891c199ebfc9624e3">allocateGepObjectId</a>(base, apOffset, <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>());</div>
438
+ <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a685991a5dec8a17fe73b3161fdb9ea7e">addGepObjNode</a>(obj, newLS,gepId);</div>
439
+ <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; }</div>
440
+ <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">else</span></div>
441
+ <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">return</span> iter-&gt;second;</div>
442
+ <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; </div>
443
+ <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;}</div>
444
+ <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; </div>
445
+ <div class="line"><a name="l00449"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a685991a5dec8a17fe73b3161fdb9ea7e"> 449</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a685991a5dec8a17fe73b3161fdb9ea7e">SVFIR::addGepObjNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a>&amp; apOffset, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepId)</div>
446
+ <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;{</div>
447
+ <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="comment">//assert(findPAGNode(i) == false &amp;&amp; &quot;this node should not be created before&quot;);</span></div>
448
+ <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div>
449
+ <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; assert(0==<a class="code" href="classSVF_1_1SVFIR.html#a09a604cf6a7708f4391fcf807fec1453">GepObjVarMap</a>.count(std::make_pair(base, apOffset))</div>
450
+ <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; &amp;&amp; <span class="stringliteral">&quot;this node should not be created before&quot;</span>);</div>
451
+ <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; </div>
452
+ <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a09a604cf6a7708f4391fcf807fec1453">GepObjVarMap</a>[std::make_pair(base, apOffset)] = gepId;</div>
453
+ <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a>(obj, gepId, apOffset);</div>
454
+ <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">memToFieldsMap</a>[base].set(gepId);</div>
455
+ <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a20ded5829d5975dfaca33f9c64113fe6">addObjNode</a>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a2f70e9c830b18f25c56b530722f106c4">getValue</a>(), node, gepId);</div>
456
+ <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;}</div>
457
+ <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; </div>
458
+ <div class="line"><a name="l00465"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a06465449e58e14bfb1c3eee2c97d3242"> 465</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a06465449e58e14bfb1c3eee2c97d3242">SVFIR::addFIObjNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj)</div>
459
+ <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;{</div>
460
+ <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="comment">//assert(findPAGNode(i) == false &amp;&amp; &quot;this node should not be created before&quot;);</span></div>
461
+ <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div>
462
+ <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">memToFieldsMap</a>[base].set(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>());</div>
463
+ <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="classSVF_1_1FIObjVar.html">FIObjVar</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FIObjVar.html">FIObjVar</a>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a2f70e9c830b18f25c56b530722f106c4">getValue</a>(), obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>(), obj);</div>
464
+ <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a20ded5829d5975dfaca33f9c64113fe6">addObjNode</a>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a2f70e9c830b18f25c56b530722f106c4">getValue</a>(), node, obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>());</div>
465
+ <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;}</div>
466
+ <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; </div>
467
+ <div class="line"><a name="l00477"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089"> 477</a></span>&#160;<a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">SVFIR::getAllFieldsObjVars</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj)</div>
468
+ <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;{</div>
469
+ <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div>
470
+ <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">memToFieldsMap</a>[base];</div>
471
+ <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;}</div>
472
+ <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; </div>
473
+ <div class="line"><a name="l00486"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a942072d153928e478c76e4b7f1fafa29"> 486</a></span>&#160;<a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">SVFIR::getAllFieldsObjVars</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div>
474
+ <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;{</div>
475
+ <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getGNode(<span class="keywordtype">id</span>);</div>
476
+ <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; assert(SVFUtil::isa&lt;ObjVar&gt;(node) &amp;&amp; <span class="stringliteral">&quot;need an object node&quot;</span>);</div>
477
+ <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>* obj = SVFUtil::cast&lt;ObjVar&gt;(node);</div>
478
+ <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">getAllFieldsObjVars</a>(obj-&gt;<a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>());</div>
479
+ <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;}</div>
480
+ <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; </div>
481
+ <div class="line"><a name="l00499"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a42d1e2f0213fb6e54c56cc0695b57cb0"> 499</a></span>&#160;<a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1SVFIR.html#a42d1e2f0213fb6e54c56cc0695b57cb0">SVFIR::getFieldsAfterCollapse</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div>
482
+ <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;{</div>
483
+ <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getGNode(<span class="keywordtype">id</span>);</div>
484
+ <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; assert(SVFUtil::isa&lt;ObjVar&gt;(node) &amp;&amp; <span class="stringliteral">&quot;need an object node&quot;</span>);</div>
485
+ <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = SVFUtil::cast&lt;ObjVar&gt;(node)-&gt;getMemObj();</div>
486
+ <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">if</span>(mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>())</div>
487
+ <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; {</div>
488
+ <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> bs;</div>
489
+ <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; bs.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(<a class="code" href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354">getFIObjVar</a>(mem));</div>
490
+ <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordflow">return</span> bs;</div>
491
+ <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; }</div>
492
+ <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordflow">else</span></div>
493
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">getAllFieldsObjVars</a>(mem);</div>
494
+ <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;}</div>
495
+ <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; </div>
496
+ <div class="line"><a name="l00519"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc"> 519</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">SVFIR::getBaseValVar</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId)</div>
497
+ <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;{</div>
498
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(nodeId);</div>
499
+ <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">hasIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>))</div>
500
+ <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; {</div>
501
+ <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; geps = node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6">getIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>);</div>
502
502
  <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; </div>
503
- <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">SVFVar::iterator</a> it = geps.begin();</div>
503
+ <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; assert((geps.size()==1) &amp;&amp; <span class="stringliteral">&quot;one node can only be connected by at most one gep edge!&quot;</span>);</div>
504
504
  <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; </div>
505
- <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; assert(SVFUtil::isa&lt;GepStmt&gt;(*it) &amp;&amp; <span class="stringliteral">&quot;not a gep edge??&quot;</span>);</div>
506
- <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">return</span> (*it)-&gt;getSrcID();</div>
507
- <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div>
508
- <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">else</span></div>
509
- <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">return</span> nodeId;</div>
510
- <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;}</div>
511
- <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; </div>
512
- <div class="line"><a name="l00538"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ad0977d55d947bdccd98d61c66d3f0cc7"> 538</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#ad0977d55d947bdccd98d61c66d3f0cc7">SVFIR::getGepValVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* curInst, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base, <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>&amp; ap)<span class="keyword"> const</span></div>
513
- <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="keyword"></span>{</div>
514
- <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; GepValueVarMap::const_iterator iter = <a class="code" href="classSVF_1_1SVFIR.html#ad7bbe1abea55ed03c9b6c81891c0bd67">GepValObjMap</a>.find(curInst);</div>
515
- <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">if</span>(iter==<a class="code" href="classSVF_1_1SVFIR.html#ad7bbe1abea55ed03c9b6c81891c0bd67">GepValObjMap</a>.end())</div>
516
- <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; {</div>
517
- <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">return</span> UINT_MAX;</div>
518
- <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; }</div>
519
- <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">else</span></div>
520
- <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; {</div>
521
- <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; NodeAccessPathMap::const_iterator lit =</div>
522
- <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; iter-&gt;second.find(std::make_pair(base, ap));</div>
523
- <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">if</span> (lit == iter-&gt;second.end())</div>
524
- <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">return</span> UINT_MAX;</div>
525
- <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">else</span></div>
526
- <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">return</span> lit-&gt;second;</div>
527
- <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; }</div>
528
- <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;}</div>
529
- <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; </div>
530
- <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; </div>
531
- <div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6834558be6987c91a3732154482c9567"> 560</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a6834558be6987c91a3732154482c9567">SVFIR::destroy</a>()</div>
532
- <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;{</div>
533
- <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51">icfg</a>;</div>
534
- <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51">icfg</a> = <span class="keyword">nullptr</span>;</div>
535
- <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SVFIR.html#a31c54c878be428cc92cf08970fef422b">chgraph</a>;</div>
536
- <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a31c54c878be428cc92cf08970fef422b">chgraph</a> = <span class="keyword">nullptr</span>;</div>
537
- <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html#a545633e2d7f103b4983b47d4e1c56823">SVFModule::releaseSVFModule</a>();</div>
538
- <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a8bfa675eed3c60a21134faa8e0b9e6b9">svfModule</a> = <span class="keyword">nullptr</span>;</div>
539
- <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;}</div>
540
- <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; </div>
541
- <div class="line"><a name="l00573"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a236b4fefd16e9c793c5bd6d576290841"> 573</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a236b4fefd16e9c793c5bd6d576290841">SVFIR::print</a>()</div>
542
- <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;{</div>
543
- <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; </div>
544
- <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;-------------------SVFIR------------------------------------\n&quot;</span>;</div>
545
- <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; addrs = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getSVFStmtSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a>);</div>
546
- <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = addrs.begin(), eiter =</div>
547
- <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; addrs.end(); iter != eiter; ++iter)</div>
548
- <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; {</div>
549
- <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Addr --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div>
550
- <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
551
- <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; }</div>
552
- <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; </div>
553
- <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; copys = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getSVFStmtSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a>);</div>
554
- <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = copys.begin(), eiter =</div>
555
- <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; copys.end(); iter != eiter; ++iter)</div>
556
- <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; {</div>
557
- <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Copy --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div>
558
- <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
559
- <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; }</div>
560
- <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; </div>
561
- <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; calls = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getSVFStmtSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a>);</div>
562
- <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = calls.begin(), eiter =</div>
563
- <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; calls.end(); iter != eiter; ++iter)</div>
564
- <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; {</div>
565
- <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Call --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div>
566
- <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
567
- <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; }</div>
568
- <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; </div>
569
- <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; rets = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getSVFStmtSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a>);</div>
570
- <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = rets.begin(), eiter =</div>
571
- <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; rets.end(); iter != eiter; ++iter)</div>
572
- <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; {</div>
573
- <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Ret --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div>
574
- <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
575
- <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; }</div>
576
- <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; </div>
577
- <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; tdfks = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getSVFStmtSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>);</div>
578
- <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = tdfks.begin(), eiter =</div>
579
- <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; tdfks.end(); iter != eiter; ++iter)</div>
580
- <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; {</div>
581
- <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- ThreadFork --&gt; &quot;</span></div>
582
- <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; &lt;&lt; (*iter)-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
583
- <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; }</div>
584
- <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; </div>
585
- <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; tdjns = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getSVFStmtSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>);</div>
586
- <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = tdjns.begin(), eiter =</div>
587
- <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; tdjns.end(); iter != eiter; ++iter)</div>
588
- <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; {</div>
589
- <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- ThreadJoin --&gt; &quot;</span></div>
590
- <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; &lt;&lt; (*iter)-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
591
- <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; }</div>
592
- <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; </div>
593
- <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; ngeps = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getSVFStmtSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>);</div>
594
- <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = ngeps.begin(), eiter =</div>
595
- <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; ngeps.end(); iter != eiter; ++iter)</div>
596
- <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; {</div>
597
- <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gep = SVFUtil::cast&lt;GepStmt&gt;(*iter);</div>
598
- <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">if</span>(gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>())</div>
599
- <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- VariantGep --&gt; &quot;</span></div>
600
- <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; &lt;&lt; (*iter)-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
601
- <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">else</span></div>
602
- <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>() &lt;&lt; <span class="stringliteral">&quot; -- Gep (&quot;</span> &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#afe5ae814b71b59fc03bd672d62a5fab7">getConstantFieldIdx</a>()</div>
603
- <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; &lt;&lt; <span class="stringliteral">&quot;) --&gt; &quot;</span> &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
604
- <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; }</div>
605
- <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; </div>
606
- <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; loads = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getSVFStmtSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>);</div>
607
- <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = loads.begin(), eiter =</div>
608
- <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; loads.end(); iter != eiter; ++iter)</div>
609
- <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; {</div>
610
- <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Load --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div>
611
- <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
612
- <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; }</div>
613
- <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; </div>
614
- <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; stores = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getSVFStmtSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>);</div>
615
- <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = stores.begin(), eiter =</div>
616
- <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; stores.end(); iter != eiter; ++iter)</div>
617
- <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; {</div>
618
- <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Store --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div>
619
- <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
620
- <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; }</div>
621
- <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;----------------------------------------------------------\n&quot;</span>;</div>
622
- <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; </div>
623
- <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;}</div>
505
+ <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">SVFVar::iterator</a> it = geps.begin();</div>
506
+ <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; </div>
507
+ <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; assert(SVFUtil::isa&lt;GepStmt&gt;(*it) &amp;&amp; <span class="stringliteral">&quot;not a gep edge??&quot;</span>);</div>
508
+ <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">return</span> (*it)-&gt;getSrcID();</div>
509
+ <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; }</div>
510
+ <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">else</span></div>
511
+ <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">return</span> nodeId;</div>
512
+ <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;}</div>
513
+ <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; </div>
514
+ <div class="line"><a name="l00540"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ad0977d55d947bdccd98d61c66d3f0cc7"> 540</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#ad0977d55d947bdccd98d61c66d3f0cc7">SVFIR::getGepValVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* curInst, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base, <span class="keyword">const</span> <a class="code" href="classSVF_1_1AccessPath.html">AccessPath</a>&amp; ap)<span class="keyword"> const</span></div>
515
+ <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;<span class="keyword"></span>{</div>
516
+ <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; GepValueVarMap::const_iterator iter = <a class="code" href="classSVF_1_1SVFIR.html#ad7bbe1abea55ed03c9b6c81891c0bd67">GepValObjMap</a>.find(curInst);</div>
517
+ <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">if</span>(iter==<a class="code" href="classSVF_1_1SVFIR.html#ad7bbe1abea55ed03c9b6c81891c0bd67">GepValObjMap</a>.end())</div>
518
+ <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; {</div>
519
+ <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">return</span> UINT_MAX;</div>
520
+ <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; }</div>
521
+ <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">else</span></div>
522
+ <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; {</div>
523
+ <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; NodeAccessPathMap::const_iterator lit =</div>
524
+ <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; iter-&gt;second.find(std::make_pair(base, ap));</div>
525
+ <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">if</span> (lit == iter-&gt;second.end())</div>
526
+ <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">return</span> UINT_MAX;</div>
527
+ <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">else</span></div>
528
+ <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">return</span> lit-&gt;second;</div>
529
+ <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; }</div>
530
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;}</div>
531
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; </div>
532
+ <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; </div>
533
+ <div class="line"><a name="l00562"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6834558be6987c91a3732154482c9567"> 562</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a6834558be6987c91a3732154482c9567">SVFIR::destroy</a>()</div>
534
+ <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;{</div>
535
+ <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51">icfg</a>;</div>
536
+ <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51">icfg</a> = <span class="keyword">nullptr</span>;</div>
537
+ <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SVFIR.html#a31c54c878be428cc92cf08970fef422b">chgraph</a>;</div>
538
+ <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a31c54c878be428cc92cf08970fef422b">chgraph</a> = <span class="keyword">nullptr</span>;</div>
539
+ <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html#a545633e2d7f103b4983b47d4e1c56823">SVFModule::releaseSVFModule</a>();</div>
540
+ <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a8bfa675eed3c60a21134faa8e0b9e6b9">svfModule</a> = <span class="keyword">nullptr</span>;</div>
541
+ <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;}</div>
542
+ <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; </div>
543
+ <div class="line"><a name="l00575"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a236b4fefd16e9c793c5bd6d576290841"> 575</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a236b4fefd16e9c793c5bd6d576290841">SVFIR::print</a>()</div>
544
+ <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;{</div>
545
+ <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; </div>
546
+ <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;-------------------SVFIR------------------------------------\n&quot;</span>;</div>
547
+ <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; addrs = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getSVFStmtSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a>);</div>
548
+ <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = addrs.begin(), eiter =</div>
549
+ <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; addrs.end(); iter != eiter; ++iter)</div>
550
+ <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; {</div>
551
+ <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Addr --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div>
552
+ <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
553
+ <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div>
554
+ <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; </div>
555
+ <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; copys = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getSVFStmtSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a>);</div>
556
+ <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = copys.begin(), eiter =</div>
557
+ <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; copys.end(); iter != eiter; ++iter)</div>
558
+ <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; {</div>
559
+ <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Copy --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div>
560
+ <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
561
+ <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; }</div>
562
+ <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; </div>
563
+ <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; calls = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getSVFStmtSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a>);</div>
564
+ <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = calls.begin(), eiter =</div>
565
+ <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; calls.end(); iter != eiter; ++iter)</div>
566
+ <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; {</div>
567
+ <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Call --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div>
568
+ <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
569
+ <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; }</div>
570
+ <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; </div>
571
+ <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; rets = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getSVFStmtSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a>);</div>
572
+ <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = rets.begin(), eiter =</div>
573
+ <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; rets.end(); iter != eiter; ++iter)</div>
574
+ <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; {</div>
575
+ <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Ret --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div>
576
+ <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
577
+ <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; }</div>
578
+ <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; </div>
579
+ <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; tdfks = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getSVFStmtSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>);</div>
580
+ <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = tdfks.begin(), eiter =</div>
581
+ <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; tdfks.end(); iter != eiter; ++iter)</div>
582
+ <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; {</div>
583
+ <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- ThreadFork --&gt; &quot;</span></div>
584
+ <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; &lt;&lt; (*iter)-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
585
+ <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; }</div>
586
+ <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; </div>
587
+ <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; tdjns = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getSVFStmtSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>);</div>
588
+ <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = tdjns.begin(), eiter =</div>
589
+ <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; tdjns.end(); iter != eiter; ++iter)</div>
590
+ <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; {</div>
591
+ <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- ThreadJoin --&gt; &quot;</span></div>
592
+ <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; &lt;&lt; (*iter)-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
593
+ <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; }</div>
594
+ <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; </div>
595
+ <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; ngeps = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getSVFStmtSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>);</div>
596
+ <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = ngeps.begin(), eiter =</div>
597
+ <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; ngeps.end(); iter != eiter; ++iter)</div>
598
+ <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; {</div>
599
+ <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gep = SVFUtil::cast&lt;GepStmt&gt;(*iter);</div>
600
+ <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">if</span>(gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>())</div>
601
+ <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- VariantGep --&gt; &quot;</span></div>
602
+ <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; &lt;&lt; (*iter)-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
603
+ <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">else</span></div>
604
+ <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>() &lt;&lt; <span class="stringliteral">&quot; -- Gep (&quot;</span> &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#afe5ae814b71b59fc03bd672d62a5fab7">getConstantFieldIdx</a>()</div>
605
+ <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; &lt;&lt; <span class="stringliteral">&quot;) --&gt; &quot;</span> &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
606
+ <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; }</div>
607
+ <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; </div>
608
+ <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; loads = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getSVFStmtSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>);</div>
609
+ <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = loads.begin(), eiter =</div>
610
+ <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; loads.end(); iter != eiter; ++iter)</div>
611
+ <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; {</div>
612
+ <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Load --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div>
613
+ <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
614
+ <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; }</div>
615
+ <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; </div>
616
+ <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; stores = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getSVFStmtSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>);</div>
617
+ <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = stores.begin(), eiter =</div>
618
+ <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; stores.end(); iter != eiter; ++iter)</div>
619
+ <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; {</div>
620
+ <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Store --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div>
621
+ <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
622
+ <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; }</div>
623
+ <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;----------------------------------------------------------\n&quot;</span>;</div>
624
624
  <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; </div>
625
- <div class="line"><a name="l00658"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#af6a2c401d5c7582a4a958b1fe40838e5"> 658</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#af6a2c401d5c7582a4a958b1fe40838e5">SVFIR::initialiseCandidatePointers</a>()</div>
626
- <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;{</div>
627
- <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="comment">// collect candidate pointers for demand-driven analysis</span></div>
628
- <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">iterator</a> nIter = <a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); nIter != <a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++nIter)</div>
629
- <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; {</div>
630
- <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = nIter-&gt;first;</div>
631
- <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="comment">// do not compute points-to for isolated node</span></div>
632
- <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3">isValidPointer</a>(nodeId) == <span class="keyword">false</span>)</div>
633
- <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">continue</span>;</div>
634
- <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#abd9f622b55839d6796ca2576f2323498">candidatePointers</a>.insert(nodeId);</div>
635
- <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; }</div>
636
- <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;}</div>
637
- <div class="line"><a name="l00674"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a980e54129ece0757d7f0373f37428507"> 674</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a980e54129ece0757d7f0373f37428507">SVFIR::isNonPointerObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div>
638
- <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;<span class="keyword"></span>{</div>
639
- <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div>
640
- <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1FIObjVar.html">FIObjVar</a>* fiNode = SVFUtil::dyn_cast&lt;FIObjVar&gt;(node))</div>
641
- <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; {</div>
642
- <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">return</span> (fiNode-&gt;getMemObj()-&gt;hasPtrObj()==<span class="keyword">false</span>);</div>
643
- <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; }</div>
644
- <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a>* gepNode = SVFUtil::dyn_cast&lt;GepObjVar&gt;(node))</div>
645
- <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; {</div>
646
- <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keywordflow">return</span> (gepNode-&gt;getMemObj()-&gt;isNonPtrFieldObj(gepNode-&gt;getConstantFieldIdx()));</div>
647
- <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; }</div>
648
- <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1DummyObjVar.html">DummyObjVar</a>* dummyNode = SVFUtil::dyn_cast&lt;DummyObjVar&gt;(node))</div>
649
- <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; {</div>
650
- <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">return</span> (dummyNode-&gt;getMemObj()-&gt;hasPtrObj()==<span class="keyword">false</span>);</div>
651
- <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; }</div>
652
- <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">else</span></div>
653
- <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; {</div>
654
- <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;expecting a object node&quot;</span>);</div>
655
- <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; abort();</div>
656
- <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; }</div>
657
- <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;}</div>
658
- <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;<span class="comment">/*</span></div>
659
- <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;<span class="comment"> * If this is a dummy node or node does not have incoming edges and outgoing edges we assume it is not a pointer here.</span></div>
660
- <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;<span class="comment"> * However, if it is a pointer and it is an argument of a function definition, we assume it is a pointer here.</span></div>
661
- <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;<span class="comment"> */</span></div>
662
- <div class="line"><a name="l00699"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3"> 699</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3">SVFIR::isValidPointer</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId)<span class="keyword"> const</span></div>
663
- <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;<span class="keyword"></span>{</div>
664
- <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getGNode(nodeId);</div>
665
- <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; </div>
666
- <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>() &amp;&amp; node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div>
667
- <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; {</div>
668
- <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>* arg = SVFUtil::dyn_cast&lt;SVFArgument&gt;(node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>()))</div>
669
- <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; {</div>
670
- <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">if</span> (!(arg-&gt;getParent()-&gt;isDeclaration()))</div>
671
- <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
672
- <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; }</div>
673
- <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; }</div>
674
- <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; </div>
675
- <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">if</span> ((node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().empty() &amp;&amp; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().empty()))</div>
676
- <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
677
- <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>();</div>
678
- <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;}</div>
679
- <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; </div>
680
- <div class="line"><a name="l00717"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a5c3b194ebada47baaccf0e9f3ab1a139"> 717</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a5c3b194ebada47baaccf0e9f3ab1a139">SVFIR::isValidTopLevelPtr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node)</div>
681
- <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;{</div>
682
- <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ValVar&gt;(node))</div>
683
- <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; {</div>
684
- <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3">isValidPointer</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) &amp;&amp; node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>())</div>
685
- <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; {</div>
686
- <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">return</span> !<a class="code" href="namespaceSVF_1_1SVFUtil.html#a1a34958ca60ed98ad228c1d46cf95aeb">SVFUtil::isArgOfUncalledFunction</a>(node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>());</div>
687
- <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; }</div>
688
- <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; }</div>
689
- <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
690
- <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160;}</div>
691
- <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; </div>
692
- <div class="line"><a name="l00732"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2375f49c77f2285a6316e7540b051a0f"> 732</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a2375f49c77f2285a6316e7540b051a0f">SVFIR::handleBlackHole</a>(<span class="keywordtype">bool</span> <a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>)</div>
693
- <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;{</div>
694
- <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <a class="code" href="classSVF_1_1Options.html#a51b28b2e973911fb8e2c23c6127e9a63">Options::HandBlackHole</a>.<a class="code" href="classOption.html#ab40684f5ece904e9b81180ca1012b0b6">setValue</a>(<a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>);</div>
695
- <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;}</div>
696
- <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; </div>
697
- <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; </div>
625
+ <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;}</div>
626
+ <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; </div>
627
+ <div class="line"><a name="l00660"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#af6a2c401d5c7582a4a958b1fe40838e5"> 660</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#af6a2c401d5c7582a4a958b1fe40838e5">SVFIR::initialiseCandidatePointers</a>()</div>
628
+ <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;{</div>
629
+ <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="comment">// collect candidate pointers for demand-driven analysis</span></div>
630
+ <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">iterator</a> nIter = <a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); nIter != <a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++nIter)</div>
631
+ <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; {</div>
632
+ <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = nIter-&gt;first;</div>
633
+ <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="comment">// do not compute points-to for isolated node</span></div>
634
+ <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3">isValidPointer</a>(nodeId) == <span class="keyword">false</span>)</div>
635
+ <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">continue</span>;</div>
636
+ <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#abd9f622b55839d6796ca2576f2323498">candidatePointers</a>.insert(nodeId);</div>
637
+ <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; }</div>
638
+ <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;}</div>
639
+ <div class="line"><a name="l00676"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a980e54129ece0757d7f0373f37428507"> 676</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a980e54129ece0757d7f0373f37428507">SVFIR::isNonPointerObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div>
640
+ <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="keyword"></span>{</div>
641
+ <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div>
642
+ <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1FIObjVar.html">FIObjVar</a>* fiNode = SVFUtil::dyn_cast&lt;FIObjVar&gt;(node))</div>
643
+ <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; {</div>
644
+ <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordflow">return</span> (fiNode-&gt;getMemObj()-&gt;hasPtrObj()==<span class="keyword">false</span>);</div>
645
+ <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; }</div>
646
+ <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a>* gepNode = SVFUtil::dyn_cast&lt;GepObjVar&gt;(node))</div>
647
+ <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; {</div>
648
+ <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">return</span> (gepNode-&gt;getMemObj()-&gt;isNonPtrFieldObj(gepNode-&gt;getConstantFieldIdx()));</div>
649
+ <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; }</div>
650
+ <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1DummyObjVar.html">DummyObjVar</a>* dummyNode = SVFUtil::dyn_cast&lt;DummyObjVar&gt;(node))</div>
651
+ <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; {</div>
652
+ <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">return</span> (dummyNode-&gt;getMemObj()-&gt;hasPtrObj()==<span class="keyword">false</span>);</div>
653
+ <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; }</div>
654
+ <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">else</span></div>
655
+ <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; {</div>
656
+ <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;expecting a object node&quot;</span>);</div>
657
+ <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; abort();</div>
658
+ <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; }</div>
659
+ <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;}</div>
660
+ <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;<span class="comment">/*</span></div>
661
+ <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;<span class="comment"> * If this is a dummy node or node does not have incoming edges and outgoing edges we assume it is not a pointer here.</span></div>
662
+ <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;<span class="comment"> * However, if it is a pointer and it is an argument of a function definition, we assume it is a pointer here.</span></div>
663
+ <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;<span class="comment"> */</span></div>
664
+ <div class="line"><a name="l00701"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3"> 701</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3">SVFIR::isValidPointer</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId)<span class="keyword"> const</span></div>
665
+ <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;<span class="keyword"></span>{</div>
666
+ <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">pag</a>-&gt;getGNode(nodeId);</div>
667
+ <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; </div>
668
+ <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>() &amp;&amp; node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>())</div>
669
+ <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; {</div>
670
+ <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>* arg = SVFUtil::dyn_cast&lt;SVFArgument&gt;(node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>()))</div>
671
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; {</div>
672
+ <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordflow">if</span> (!(arg-&gt;getParent()-&gt;isDeclaration()))</div>
673
+ <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
674
+ <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; }</div>
675
+ <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; }</div>
676
+ <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; </div>
677
+ <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">if</span> ((node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().empty() &amp;&amp; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().empty()))</div>
678
+ <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
679
+ <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>();</div>
680
+ <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160;}</div>
681
+ <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; </div>
682
+ <div class="line"><a name="l00719"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a5c3b194ebada47baaccf0e9f3ab1a139"> 719</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a5c3b194ebada47baaccf0e9f3ab1a139">SVFIR::isValidTopLevelPtr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node)</div>
683
+ <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;{</div>
684
+ <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ValVar&gt;(node))</div>
685
+ <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; {</div>
686
+ <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3">isValidPointer</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) &amp;&amp; node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>())</div>
687
+ <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; {</div>
688
+ <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordflow">return</span> !<a class="code" href="namespaceSVF_1_1SVFUtil.html#a1a34958ca60ed98ad228c1d46cf95aeb">SVFUtil::isArgOfUncalledFunction</a>(node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>());</div>
689
+ <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; }</div>
690
+ <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; }</div>
691
+ <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
692
+ <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;}</div>
693
+ <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; </div>
694
+ <div class="line"><a name="l00734"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2375f49c77f2285a6316e7540b051a0f"> 734</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a2375f49c77f2285a6316e7540b051a0f">SVFIR::handleBlackHole</a>(<span class="keywordtype">bool</span> <a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>)</div>
695
+ <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;{</div>
696
+ <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <a class="code" href="classSVF_1_1Options.html#a51b28b2e973911fb8e2c23c6127e9a63">Options::HandBlackHole</a>.<a class="code" href="classOption.html#ab40684f5ece904e9b81180ca1012b0b6">setValue</a>(<a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>);</div>
697
+ <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;}</div>
698
698
  <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; </div>
699
+ <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; </div>
700
+ <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; </div>
699
701
  </div><!-- fragment --></div><!-- contents -->
700
702
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a1a34958ca60ed98ad228c1d46cf95aeb"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a1a34958ca60ed98ad228c1d46cf95aeb">SVF::SVFUtil::isArgOfUncalledFunction</a></div><div class="ttdeci">bool isArgOfUncalledFunction(const SVFValue *svfval)</div><div class="ttdoc">Return true if this argument belongs to an uncalled function.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00395">SVFUtil.h:395</a></div></div>
701
703
  <div class="ttc" id="anamespaceSVF_html_a5c4820681ef340339ddded756eb82ae1"><div class="ttname"><a href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">SVF::APOffset</a></div><div class="ttdeci">s64_t APOffset</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00061">SVFType.h:61</a></div></div>
@@ -703,32 +705,32 @@ $(function() {
703
705
  <div class="ttc" id="aclassSVF_1_1CopyStmt_html"><div class="ttname"><a href="classSVF_1_1CopyStmt.html">SVF::CopyStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00350">SVFStatements.h:350</a></div></div>
704
706
  <div class="ttc" id="aclassSVF_1_1IRGraph_html_abe0ab797a3da420e4d2f9136d64fb407"><div class="ttname"><a href="classSVF_1_1IRGraph.html#abe0ab797a3da420e4d2f9136d64fb407">SVF::IRGraph::hasNonlabeledEdge</a></div><div class="ttdeci">SVFStmt * hasNonlabeledEdge(SVFVar *src, SVFVar *dst, SVFStmt::PEDGEK kind)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00060">IRGraph.cpp:60</a></div></div>
705
707
  <div class="ttc" id="aclassSVF_1_1SVFVar_html_a71e4fd7a1271a17e971ed90044e6da24"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a71e4fd7a1271a17e971ed90044e6da24">SVF::SVFVar::hasIncomingVariantGepEdge</a></div><div class="ttdeci">bool hasIncomingVariantGepEdge() const</div><div class="ttdoc">Has incoming VariantGepEdges.</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00226">SVFVariables.h:226</a></div></div>
706
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_a6834558be6987c91a3732154482c9567"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a6834558be6987c91a3732154482c9567">SVF::SVFIR::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Clean up memory.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00560">SVFIR.cpp:560</a></div></div>
708
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a6834558be6987c91a3732154482c9567"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a6834558be6987c91a3732154482c9567">SVF::SVFIR::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Clean up memory.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00562">SVFIR.cpp:562</a></div></div>
707
709
  <div class="ttc" id="aclassSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00459">SymbolTableInfo.cpp:459</a></div></div>
708
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_a5298f34143ec3a2e6bb74ebad668cbbc"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">SVF::SVFIR::getBaseValVar</a></div><div class="ttdeci">NodeID getBaseValVar(NodeID nodeId)</div><div class="ttdoc">Base and Offset methods for Value and Object node.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00517">SVFIR.cpp:517</a></div></div>
710
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a5298f34143ec3a2e6bb74ebad668cbbc"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">SVF::SVFIR::getBaseValVar</a></div><div class="ttdeci">NodeID getBaseValVar(NodeID nodeId)</div><div class="ttdoc">Base and Offset methods for Value and Object node.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00519">SVFIR.cpp:519</a></div></div>
709
711
  <div class="ttc" id="aclassSVF_1_1Options_html_a12e88ce4ba3d39017203ec4cd3ccccea"><div class="ttname"><a href="classSVF_1_1Options.html#a12e88ce4ba3d39017203ec4cd3ccccea">SVF::Options::FirstFieldEqBase</a></div><div class="ttdeci">static const Option&lt; bool &gt; FirstFieldEqBase</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00114">Options.h:114</a></div></div>
710
712
  <div class="ttc" id="aclassSVF_1_1AddrStmt_html"><div class="ttname"><a href="classSVF_1_1AddrStmt.html">SVF::AddrStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00313">SVFStatements.h:313</a></div></div>
711
713
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a33df5f5d9b7de3846cf973135b04f513"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a33df5f5d9b7de3846cf973135b04f513">SVF::SVFIR::addBlackHoleAddrStmt</a></div><div class="ttdeci">SVFStmt * addBlackHoleAddrStmt(NodeID node)</div><div class="ttdoc">Set a pointer points-to black hole (e.g. int2ptr)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00277">SVFIR.cpp:277</a></div></div>
712
714
  <div class="ttc" id="aclassSVF_1_1GepStmt_html_a0ddf180a0f7ba64fc8655687910e3788"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">SVF::GepStmt::isVariantFieldGep</a></div><div class="ttdeci">bool isVariantFieldGep() const</div><div class="ttdoc">Gep statement with a variant field index (pointer arithmetic) for struct field access.</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00525">SVFStatements.h:525</a></div></div>
713
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_a42d1e2f0213fb6e54c56cc0695b57cb0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a42d1e2f0213fb6e54c56cc0695b57cb0">SVF::SVFIR::getFieldsAfterCollapse</a></div><div class="ttdeci">NodeBS getFieldsAfterCollapse(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00497">SVFIR.cpp:497</a></div></div>
715
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a42d1e2f0213fb6e54c56cc0695b57cb0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a42d1e2f0213fb6e54c56cc0695b57cb0">SVF::SVFIR::getFieldsAfterCollapse</a></div><div class="ttdeci">NodeBS getFieldsAfterCollapse(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00499">SVFIR.cpp:499</a></div></div>
714
716
  <div class="ttc" id="aclassSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00384">GenericGraph.h:384</a></div></div>
715
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_af6a2c401d5c7582a4a958b1fe40838e5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af6a2c401d5c7582a4a958b1fe40838e5">SVF::SVFIR::initialiseCandidatePointers</a></div><div class="ttdeci">void initialiseCandidatePointers()</div><div class="ttdoc">Initialize candidate pointers.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00658">SVFIR.cpp:658</a></div></div>
716
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_a06465449e58e14bfb1c3eee2c97d3242"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a06465449e58e14bfb1c3eee2c97d3242">SVF::SVFIR::addFIObjNode</a></div><div class="ttdeci">NodeID addFIObjNode(const MemObj *obj)</div><div class="ttdoc">Add a field-insensitive node, this method can only invoked by getFIGepObjNode.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00463">SVFIR.cpp:463</a></div></div>
717
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_af6a2c401d5c7582a4a958b1fe40838e5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af6a2c401d5c7582a4a958b1fe40838e5">SVF::SVFIR::initialiseCandidatePointers</a></div><div class="ttdeci">void initialiseCandidatePointers()</div><div class="ttdoc">Initialize candidate pointers.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00660">SVFIR.cpp:660</a></div></div>
718
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a06465449e58e14bfb1c3eee2c97d3242"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a06465449e58e14bfb1c3eee2c97d3242">SVF::SVFIR::addFIObjNode</a></div><div class="ttdeci">NodeID addFIObjNode(const MemObj *obj)</div><div class="ttdoc">Add a field-insensitive node, this method can only invoked by getFIGepObjNode.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00465">SVFIR.cpp:465</a></div></div>
717
719
  <div class="ttc" id="aclassSVF_1_1PhiStmt_html"><div class="ttname"><a href="classSVF_1_1PhiStmt.html">SVF::PhiStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00747">SVFStatements.h:747</a></div></div>
718
720
  <div class="ttc" id="aclassSVF_1_1FunEntryICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunEntryICFGNode.html">SVF::FunEntryICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00261">ICFGNode.h:261</a></div></div>
719
721
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVF::SVFStmt::Call</a></div><div class="ttdeci">@ Call</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00067">SVFStatements.h:67</a></div></div>
720
722
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVF::SVFStmt::Addr</a></div><div class="ttdeci">@ Addr</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00063">SVFStatements.h:63</a></div></div>
721
723
  <div class="ttc" id="aclassSVF_1_1IRGraph_html_a43514023a4f4d0c32f536f51443b0efc"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const SVFValue *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00138">IRGraph.h:138</a></div></div>
722
724
  <div class="ttc" id="aclassSVF_1_1ObjVar_html"><div class="ttname"><a href="classSVF_1_1ObjVar.html">SVF::ObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00315">SVFVariables.h:315</a></div></div>
723
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_a980e54129ece0757d7f0373f37428507"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a980e54129ece0757d7f0373f37428507">SVF::SVFIR::isNonPointerObj</a></div><div class="ttdeci">bool isNonPointerObj(NodeID id) const</div><div class="ttdoc">Whether an object can point to any other object or any of its fields is a pointer type.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00674">SVFIR.cpp:674</a></div></div>
724
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_a09a604cf6a7708f4391fcf807fec1453"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a09a604cf6a7708f4391fcf807fec1453">SVF::SVFIR::GepObjVarMap</a></div><div class="ttdeci">NodeOffsetMap GepObjVarMap</div><div class="ttdoc">Map a pair&lt;base,off&gt; to a gep obj node id.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00083">SVFIR.h:83</a></div></div>
725
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a980e54129ece0757d7f0373f37428507"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a980e54129ece0757d7f0373f37428507">SVF::SVFIR::isNonPointerObj</a></div><div class="ttdeci">bool isNonPointerObj(NodeID id) const</div><div class="ttdoc">Whether an object can point to any other object or any of its fields is a pointer type.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00676">SVFIR.cpp:676</a></div></div>
726
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a09a604cf6a7708f4391fcf807fec1453"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a09a604cf6a7708f4391fcf807fec1453">SVF::SVFIR::GepObjVarMap</a></div><div class="ttdeci">NodeOffsetMap GepObjVarMap</div><div class="ttdoc">Map a pair&lt;base,off&gt; to a gep obj node id.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00084">SVFIR.h:84</a></div></div>
725
727
  <div class="ttc" id="anamespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
726
728
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a8436a7eede7b5ff5d9b80a0c951ea729"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a8436a7eede7b5ff5d9b80a0c951ea729">SVF::SVFIR::addAddrStmt</a></div><div class="ttdeci">AddrStmt * addAddrStmt(NodeID src, NodeID dst)</div><div class="ttdoc">Add an edge into SVFIR.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00046">SVFIR.cpp:46</a></div></div>
727
729
  <div class="ttc" id="aclassSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00747">SparseBitVector.h:747</a></div></div>
728
730
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a916d893cb852bbbd933e3e5349d5154b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a916d893cb852bbbd933e3e5349d5154b">SVF::SVFIR::addThreadForkPE</a></div><div class="ttdeci">TDForkPE * addThreadForkPE(NodeID src, NodeID dst, const CallICFGNode *cs, const FunEntryICFGNode *entry)</div><div class="ttdoc">Add Thread fork edge for parameter passing.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00288">SVFIR.cpp:288</a></div></div>
729
731
  <div class="ttc" id="aclassSVF_1_1SelectStmt_html"><div class="ttname"><a href="classSVF_1_1SelectStmt.html">SVF::SelectStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00815">SVFStatements.h:815</a></div></div>
730
732
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_aa54b93ebf36944b548aaa74dbf8a144f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa54b93ebf36944b548aaa74dbf8a144f">SVF::SVFIR::addCopyStmt</a></div><div class="ttdeci">CopyStmt * addCopyStmt(NodeID src, NodeID dst)</div><div class="ttdoc">Add Copy edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00064">SVFIR.cpp:64</a></div></div>
731
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_a3c014227661d8976714772205611c252"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">SVF::SVFIR::memToFieldsMap</a></div><div class="ttdeci">MemObjToFieldsMap memToFieldsMap</div><div class="ttdoc">Map a mem object id to all its fields.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00084">SVFIR.h:84</a></div></div>
733
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a3c014227661d8976714772205611c252"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">SVF::SVFIR::memToFieldsMap</a></div><div class="ttdeci">MemObjToFieldsMap memToFieldsMap</div><div class="ttdoc">Map a mem object id to all its fields.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00085">SVFIR.h:85</a></div></div>
732
734
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a3abcab8c3155c5c5d4a04f05ea207260"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3abcab8c3155c5c5d4a04f05ea207260">SVF::SVFIR::addNormalGepStmt</a></div><div class="ttdeci">GepStmt * addNormalGepStmt(NodeID src, NodeID dst, const AccessPath &amp;ap)</div><div class="ttdoc">Add Offset(Gep) edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00346">SVFIR.cpp:346</a></div></div>
733
735
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad2a5e6fe0f2b5fefb53abb9e91c57688">SVF::SVFStmt::UnaryOp</a></div><div class="ttdeci">@ UnaryOp</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00074">SVFStatements.h:74</a></div></div>
734
736
  <div class="ttc" id="aclassSVF_1_1RetPE_html"><div class="ttname"><a href="classSVF_1_1RetPE.html">SVF::RetPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00604">SVFStatements.h:604</a></div></div>
@@ -737,23 +739,22 @@ $(function() {
737
739
  <div class="ttc" id="aclassSVF_1_1SVFVar_html_ac2db6304ea5526fb446ae882983beeb0"><div class="ttname"><a href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">SVF::SVFVar::getValue</a></div><div class="ttdeci">const SVFValue * getValue() const</div><div class="ttdoc">Get/has methods of the components.</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00094">SVFVariables.h:94</a></div></div>
738
740
  <div class="ttc" id="aclassSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
739
741
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_abb272e6fff36a29fe84c9d8695f7d630"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abb272e6fff36a29fe84c9d8695f7d630">SVF::SVFIR::addPhiStmt</a></div><div class="ttdeci">PhiStmt * addPhiStmt(NodeID res, NodeID opnd, const ICFGNode *pred)</div><div class="ttdoc">Add phi node information.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00082">SVFIR.cpp:82</a></div></div>
740
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_a2375f49c77f2285a6316e7540b051a0f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2375f49c77f2285a6316e7540b051a0f">SVF::SVFIR::handleBlackHole</a></div><div class="ttdeci">static void handleBlackHole(bool b)</div><div class="ttdoc">SVFIR build configurations.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00732">SVFIR.cpp:732</a></div></div>
742
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a2375f49c77f2285a6316e7540b051a0f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2375f49c77f2285a6316e7540b051a0f">SVF::SVFIR::handleBlackHole</a></div><div class="ttdeci">static void handleBlackHole(bool b)</div><div class="ttdoc">SVFIR build configurations.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00734">SVFIR.cpp:734</a></div></div>
741
743
  <div class="ttc" id="aclassSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00459">SparseBitVector.h:459</a></div></div>
742
744
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a8cd7b6c6fd8b030b1421d95a086359f4"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVF::SVFStmt::SVFStmtSetTy</a></div><div class="ttdeci">GenericNode&lt; SVFVar, SVFStmt &gt;::GEdgeSetTy SVFStmtSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00217">SVFStatements.h:217</a></div></div>
743
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_a5c3b194ebada47baaccf0e9f3ab1a139"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5c3b194ebada47baaccf0e9f3ab1a139">SVF::SVFIR::isValidTopLevelPtr</a></div><div class="ttdeci">bool isValidTopLevelPtr(const SVFVar *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00717">SVFIR.cpp:717</a></div></div>
745
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a5c3b194ebada47baaccf0e9f3ab1a139"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5c3b194ebada47baaccf0e9f3ab1a139">SVF::SVFIR::isValidTopLevelPtr</a></div><div class="ttdeci">bool isValidTopLevelPtr(const SVFVar *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00719">SVFIR.cpp:719</a></div></div>
744
746
  <div class="ttc" id="aclassSVF_1_1MemObj_html_a3ab6f65ffbf6442daac4d3f70f2d3cb1"><div class="ttname"><a href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">SVF::MemObj::getId</a></div><div class="ttdeci">SymID getId() const</div><div class="ttdoc">Get the memory object id.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00412">SymbolTableInfo.h:412</a></div></div>
745
747
  <div class="ttc" id="aclassSVF_1_1SVFVar_html_a3b61042079a6c9dc395f38925c6a1271"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">SVF::SVFVar::isPointer</a></div><div class="ttdeci">virtual bool isPointer() const</div><div class="ttdoc">Whether it is a pointer.</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00117">SVFVariables.h:117</a></div></div>
746
748
  <div class="ttc" id="aclassSVF_1_1CallPE_html"><div class="ttname"><a href="classSVF_1_1CallPE.html">SVF::CallPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00544">SVFStatements.h:544</a></div></div>
747
749
  <div class="ttc" id="aclassSVF_1_1BranchStmt_html_a6a0e64824777f04be4c169125dd4f666"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a6a0e64824777f04be4c169125dd4f666">SVF::BranchStmt::SuccAndCondPairVec</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; const ICFGNode *, s32_t &gt; &gt; SuccAndCondPairVec</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01099">SVFStatements.h:1099</a></div></div>
748
750
  <div class="ttc" id="aclassSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00180">GenericGraph.h:180</a></div></div>
749
751
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a64d14e7ee334c85b02414d68877faab2"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a64d14e7ee334c85b02414d68877faab2">SVF::SVFIR::addThreadJoinPE</a></div><div class="ttdeci">TDJoinPE * addThreadJoinPE(NodeID src, NodeID dst, const CallICFGNode *cs, const FunExitICFGNode *exit)</div><div class="ttdoc">Add Thread join edge for parameter passing.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00306">SVFIR.cpp:306</a></div></div>
750
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_ac792c1f8b385515a8cc0a0303d40f212"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac792c1f8b385515a8cc0a0303d40f212">SVF::SVFIR::addValNode</a></div><div class="ttdeci">NodeID addValNode(const SVFValue *val, NodeID i)</div><div class="ttdoc">add node into SVFIR</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00535">SVFIR.h:535</a></div></div>
752
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_ac792c1f8b385515a8cc0a0303d40f212"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac792c1f8b385515a8cc0a0303d40f212">SVF::SVFIR::addValNode</a></div><div class="ttdeci">NodeID addValNode(const SVFValue *val, NodeID i)</div><div class="ttdoc">add node into SVFIR</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00536">SVFIR.h:536</a></div></div>
751
753
  <div class="ttc" id="aOptions_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
752
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_addc84dae75be8e8b9deccdb4360736d3"><div class="ttname"><a href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3">SVF::SVFIR::isValidPointer</a></div><div class="ttdeci">bool isValidPointer(NodeID nodeId) const</div><div class="ttdoc">Whether a node is a valid pointer.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00699">SVFIR.cpp:699</a></div></div>
754
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_addc84dae75be8e8b9deccdb4360736d3"><div class="ttname"><a href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3">SVF::SVFIR::isValidPointer</a></div><div class="ttdeci">bool isValidPointer(NodeID nodeId) const</div><div class="ttdoc">Whether a node is a valid pointer.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00701">SVFIR.cpp:701</a></div></div>
753
755
  <div class="ttc" id="aclassSVF_1_1AssignStmt_html_a4cec89489e82c60c287cae3327f3f01d"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">SVF::AssignStmt::getRHSVarID</a></div><div class="ttdeci">NodeID getRHSVarID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00298">SVFStatements.h:298</a></div></div>
754
756
  <div class="ttc" id="aclassSVF_1_1Options_html_a51b28b2e973911fb8e2c23c6127e9a63"><div class="ttname"><a href="classSVF_1_1Options.html#a51b28b2e973911fb8e2c23c6127e9a63">SVF::Options::HandBlackHole</a></div><div class="ttdeci">static Option&lt; bool &gt; HandBlackHole</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00113">Options.h:113</a></div></div>
755
757
  <div class="ttc" id="aclassSVF_1_1TDJoinPE_html"><div class="ttname"><a href="classSVF_1_1TDJoinPE.html">SVF::TDJoinPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01224">SVFStatements.h:1224</a></div></div>
756
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_aba63798e93490f257574c24d3c03507d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aba63798e93490f257574c24d3c03507d">SVF::SVFIR::addGepObjNode</a></div><div class="ttdeci">NodeID addGepObjNode(const MemObj *obj, const APOffset &amp;apOffset)</div><div class="ttdoc">Add a field obj node, this method can only invoked by getGepObjVar.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00446">SVFIR.cpp:446</a></div></div>
757
758
  <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html">SVF::BinaryOPStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00956">SVFStatements.h:956</a></div></div>
758
759
  <div class="ttc" id="aclassSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00386">SVFStatements.h:386</a></div></div>
759
760
  <div class="ttc" id="aclassSVF_1_1SVFValue_html"><div class="ttname"><a href="classSVF_1_1SVFValue.html">SVF::SVFValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00150">SVFValue.h:150</a></div></div>
@@ -765,7 +766,7 @@ $(function() {
765
766
  <div class="ttc" id="aclassSVF_1_1SVFVar_html_a747b2c92c81d32fcd357e80d2d8fe7cc"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">SVF::SVFVar::hasIncomingEdges</a></div><div class="ttdeci">bool hasIncomingEdges(SVFStmt::PEDGEK kind) const</div><div class="ttdoc">Has incoming SVFIR statements (edges)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00158">SVFVariables.h:158</a></div></div>
766
767
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVF::SVFStmt::ThreadJoin</a></div><div class="ttdeci">@ ThreadJoin</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00077">SVFStatements.h:77</a></div></div>
767
768
  <div class="ttc" id="aclassSVF_1_1SVFModule_html_a545633e2d7f103b4983b47d4e1c56823"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a545633e2d7f103b4983b47d4e1c56823">SVF::SVFModule::releaseSVFModule</a></div><div class="ttdeci">static void releaseSVFModule()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8cpp_source.html#l00069">SVFModule.cpp:69</a></div></div>
768
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_a31c54c878be428cc92cf08970fef422b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a31c54c878be428cc92cf08970fef422b">SVF::SVFIR::chgraph</a></div><div class="ttdeci">CommonCHGraph * chgraph</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00098">SVFIR.h:98</a></div></div>
769
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a31c54c878be428cc92cf08970fef422b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a31c54c878be428cc92cf08970fef422b">SVF::SVFIR::chgraph</a></div><div class="ttdeci">CommonCHGraph * chgraph</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00099">SVFIR.h:99</a></div></div>
769
770
  <div class="ttc" id="aclassSVF_1_1IntraICFGNode_html"><div class="ttname"><a href="classSVF_1_1IntraICFGNode.html">SVF::IntraICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00180">ICFGNode.h:180</a></div></div>
770
771
  <div class="ttc" id="aSVFIR_8h_html"><div class="ttname"><a href="SVFIR_8h.html">SVFIR.h</a></div></div>
771
772
  <div class="ttc" id="aclassSVF_1_1PhiStmt_html_ac3541a25f83ce8465d7b35010ba50b37"><div class="ttname"><a href="classSVF_1_1PhiStmt.html#ac3541a25f83ce8465d7b35010ba50b37">SVF::PhiStmt::addOpVar</a></div><div class="ttdeci">void addOpVar(SVFVar *op, const ICFGNode *inode)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00791">SVFStatements.h:791</a></div></div>
@@ -774,12 +775,12 @@ $(function() {
774
775
  <div class="ttc" id="aclassSVF_1_1GepStmt_html_afe5ae814b71b59fc03bd672d62a5fab7"><div class="ttname"><a href="classSVF_1_1GepStmt.html#afe5ae814b71b59fc03bd672d62a5fab7">SVF::GepStmt::getConstantFieldIdx</a></div><div class="ttdeci">APOffset getConstantFieldIdx() const</div><div class="ttdoc">Field index of the gep statement if it access the field of a struct.</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00519">SVFStatements.h:519</a></div></div>
775
776
  <div class="ttc" id="aclassSVF_1_1FIObjVar_html"><div class="ttname"><a href="classSVF_1_1FIObjVar.html">SVF::FIObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00529">SVFVariables.h:529</a></div></div>
776
777
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVF::SVFStmt::Copy</a></div><div class="ttdeci">@ Copy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00064">SVFStatements.h:64</a></div></div>
777
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_a236b4fefd16e9c793c5bd6d576290841"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a236b4fefd16e9c793c5bd6d576290841">SVF::SVFIR::print</a></div><div class="ttdeci">void print()</div><div class="ttdoc">Print SVFIR.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00573">SVFIR.cpp:573</a></div></div>
778
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a236b4fefd16e9c793c5bd6d576290841"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a236b4fefd16e9c793c5bd6d576290841">SVF::SVFIR::print</a></div><div class="ttdeci">void print()</div><div class="ttdoc">Print SVFIR.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00575">SVFIR.cpp:575</a></div></div>
778
779
  <div class="ttc" id="aclassOption_html_ab40684f5ece904e9b81180ca1012b0b6"><div class="ttname"><a href="classOption.html#ab40684f5ece904e9b81180ca1012b0b6">Option::setValue</a></div><div class="ttdeci">void setValue(T v)</div><div class="ttdef"><b>Definition:</b> <a href="CommandLine_8h_source.html#l00351">CommandLine.h:351</a></div></div>
779
780
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVF::SVFStmt::Ret</a></div><div class="ttdeci">@ Ret</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00068">SVFStatements.h:68</a></div></div>
780
781
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html"><div class="ttname"><a href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00051">SVFStatements.h:51</a></div></div>
781
782
  <div class="ttc" id="aclassSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00045">SVFVariables.h:45</a></div></div>
782
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_a2878e202045b7f2c817185e8bf95d354"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354">SVF::SVFIR::getFIObjVar</a></div><div class="ttdeci">NodeID getFIObjVar(const MemObj *obj) const</div><div class="ttdoc">Get a field-insensitive obj SVFIR node according to a mem obj.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00401">SVFIR.h:401</a></div></div>
783
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a2878e202045b7f2c817185e8bf95d354"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354">SVF::SVFIR::getFIObjVar</a></div><div class="ttdeci">NodeID getFIObjVar(const MemObj *obj) const</div><div class="ttdoc">Get a field-insensitive obj SVFIR node according to a mem obj.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00402">SVFIR.h:402</a></div></div>
783
784
  <div class="ttc" id="aclassSVF_1_1IRGraph_html_a722f32d0a0a3bafdd97fc74819d2621e"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a722f32d0a0a3bafdd97fc74819d2621e">SVF::IRGraph::addEdge</a></div><div class="ttdeci">bool addEdge(SVFVar *src, SVFVar *dst, SVFStmt *edge)</div><div class="ttdoc">Add an edge into the graph.</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00045">IRGraph.cpp:45</a></div></div>
784
785
  <div class="ttc" id="aclassSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00423">SVFStatements.h:423</a></div></div>
785
786
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVF::SVFStmt::Select</a></div><div class="ttdeci">@ Select</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00071">SVFStatements.h:71</a></div></div>
@@ -787,24 +788,24 @@ $(function() {
787
788
  <div class="ttc" id="aclassSVF_1_1IRGraph_html"><div class="ttname"><a href="classSVF_1_1IRGraph.html">SVF::IRGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00050">IRGraph.h:50</a></div></div>
788
789
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a3837804b2622baf7e6991aa993286e9e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3837804b2622baf7e6991aa993286e9e">SVF::SVFIR::addLoadStmt</a></div><div class="ttdeci">LoadStmt * addLoadStmt(NodeID src, NodeID dst)</div><div class="ttdoc">Add Load edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00204">SVFIR.cpp:204</a></div></div>
789
790
  <div class="ttc" id="aclassSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00406">GenericGraph.h:406</a></div></div>
790
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_a292b5a477c1f87777730b591c271e523"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">SVF::SVFIR::addToStmt2TypeMap</a></div><div class="ttdeci">void addToStmt2TypeMap(SVFStmt *edge)</div><div class="ttdoc">Map a SVFStatement type to a set of corresponding SVF statements.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00484">SVFIR.h:484</a></div></div>
791
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a292b5a477c1f87777730b591c271e523"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">SVF::SVFIR::addToStmt2TypeMap</a></div><div class="ttdeci">void addToStmt2TypeMap(SVFStmt *edge)</div><div class="ttdoc">Map a SVFStatement type to a set of corresponding SVF statements.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00485">SVFIR.h:485</a></div></div>
791
792
  <div class="ttc" id="aclassSVF_1_1IRGraph_html_a192e584440eb141e0d35d8fed671bbe0"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a192e584440eb141e0d35d8fed671bbe0">SVF::IRGraph::hasLabeledEdge</a></div><div class="ttdeci">SVFStmt * hasLabeledEdge(SVFVar *src, SVFVar *dst, SVFStmt::PEDGEK kind, const ICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8cpp_source.html#l00088">IRGraph.cpp:88</a></div></div>
792
793
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a1791652f578b6ab8aacb4d6e7c7fd05f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a1791652f578b6ab8aacb4d6e7c7fd05f">SVF::SVFIR::addRetPE</a></div><div class="ttdeci">RetPE * addRetPE(NodeID src, NodeID dst, const CallICFGNode *cs, const FunExitICFGNode *exit)</div><div class="ttdoc">Add Return edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00259">SVFIR.cpp:259</a></div></div>
793
794
  <div class="ttc" id="aclassSVF_1_1MemObj_html_a2f70e9c830b18f25c56b530722f106c4"><div class="ttname"><a href="classSVF_1_1MemObj.html#a2f70e9c830b18f25c56b530722f106c4">SVF::MemObj::getValue</a></div><div class="ttdeci">const SVFValue * getValue() const</div><div class="ttdoc">Get the reference value to this object.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00406">SymbolTableInfo.h:406</a></div></div>
794
795
  <div class="ttc" id="aclassSVF_1_1GepStmt_html"><div class="ttname"><a href="classSVF_1_1GepStmt.html">SVF::GepStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00460">SVFStatements.h:460</a></div></div>
795
796
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad58f5e59c55e1ffd23b83d16224fed13">SVF::SVFStmt::BinaryOp</a></div><div class="ttdeci">@ BinaryOp</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00073">SVFStatements.h:73</a></div></div>
796
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_ad7bbe1abea55ed03c9b6c81891c0bd67"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad7bbe1abea55ed03c9b6c81891c0bd67">SVF::SVFIR::GepValObjMap</a></div><div class="ttdeci">GepValueVarMap GepValObjMap</div><div class="ttdoc">Map a pair&lt;base,off&gt; to a gep value node id.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00081">SVFIR.h:81</a></div></div>
797
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_ad7bbe1abea55ed03c9b6c81891c0bd67"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad7bbe1abea55ed03c9b6c81891c0bd67">SVF::SVFIR::GepValObjMap</a></div><div class="ttdeci">GepValueVarMap GepValObjMap</div><div class="ttdoc">Map a pair&lt;base,off&gt; to a gep value node id.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00082">SVFIR.h:82</a></div></div>
797
798
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a1f77275b24345164f30d519238121f92"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a1f77275b24345164f30d519238121f92">SVF::SVFIR::addGepStmt</a></div><div class="ttdeci">GepStmt * addGepStmt(NodeID src, NodeID dst, const AccessPath &amp;ap, bool constGep)</div><div class="ttdoc">Add Gep edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00327">SVFIR.cpp:327</a></div></div>
798
799
  <div class="ttc" id="aclassSVF_1_1UnaryOPStmt_html"><div class="ttname"><a href="classSVF_1_1UnaryOPStmt.html">SVF::UnaryOPStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01026">SVFStatements.h:1026</a></div></div>
799
- <div class="ttc" id="aclassSVF_1_1NodeIDAllocator_html_abaff066537f06c4891c199ebfc9624e3"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#abaff066537f06c4891c199ebfc9624e3">SVF::NodeIDAllocator::allocateGepObjectId</a></div><div class="ttdeci">NodeID allocateGepObjectId(NodeID base, u32_t offset, u32_t maxFieldLimit)</div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00087">NodeIDAllocator.cpp:87</a></div></div>
800
+ <div class="ttc" id="aclassSVF_1_1NodeIDAllocator_html_abaff066537f06c4891c199ebfc9624e3"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#abaff066537f06c4891c199ebfc9624e3">SVF::NodeIDAllocator::allocateGepObjectId</a></div><div class="ttdeci">NodeID allocateGepObjectId(NodeID base, u32_t offset, u32_t maxFieldLimit)</div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00086">NodeIDAllocator.cpp:86</a></div></div>
800
801
  <div class="ttc" id="aclassSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00197">GenericGraph.h:197</a></div></div>
801
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_a8bfa675eed3c60a21134faa8e0b9e6b9"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a8bfa675eed3c60a21134faa8e0b9e6b9">SVF::SVFIR::svfModule</a></div><div class="ttdeci">SVFModule * svfModule</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00096">SVFIR.h:96</a></div></div>
802
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a8bfa675eed3c60a21134faa8e0b9e6b9"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a8bfa675eed3c60a21134faa8e0b9e6b9">SVF::SVFIR::svfModule</a></div><div class="ttdeci">SVFModule * svfModule</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00097">SVFIR.h:97</a></div></div>
802
803
  <div class="ttc" id="aclassSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00380">GenericGraph.h:380</a></div></div>
803
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_a41abf665421dbfaef508b1eba0c91fb9"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a41abf665421dbfaef508b1eba0c91fb9">SVF::SVFIR::phiNodeMap</a></div><div class="ttdeci">PHINodeMap phiNodeMap</div><div class="ttdoc">A set of phi copy edges.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00086">SVFIR.h:86</a></div></div>
804
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a41abf665421dbfaef508b1eba0c91fb9"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a41abf665421dbfaef508b1eba0c91fb9">SVF::SVFIR::phiNodeMap</a></div><div class="ttdeci">PHINodeMap phiNodeMap</div><div class="ttdoc">A set of phi copy edges.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00087">SVFIR.h:87</a></div></div>
804
805
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVF::SVFStmt::ThreadFork</a></div><div class="ttdeci">@ ThreadFork</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00076">SVFStatements.h:76</a></div></div>
805
806
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00050">SVFUtil.h:50</a></div></div>
806
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_ad0977d55d947bdccd98d61c66d3f0cc7"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad0977d55d947bdccd98d61c66d3f0cc7">SVF::SVFIR::getGepValVar</a></div><div class="ttdeci">NodeID getGepValVar(const SVFValue *curInst, NodeID base, const AccessPath &amp;ap) const</div><div class="ttdoc">Due to constraint expression, curInst is used to distinguish different instructions (e....</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00538">SVFIR.cpp:538</a></div></div>
807
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_a20ded5829d5975dfaca33f9c64113fe6"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a20ded5829d5975dfaca33f9c64113fe6">SVF::SVFIR::addObjNode</a></div><div class="ttdeci">NodeID addObjNode(const SVFValue *val, NodeID i)</div><div class="ttdoc">Add a memory obj node.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00541">SVFIR.h:541</a></div></div>
807
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_ad0977d55d947bdccd98d61c66d3f0cc7"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad0977d55d947bdccd98d61c66d3f0cc7">SVF::SVFIR::getGepValVar</a></div><div class="ttdeci">NodeID getGepValVar(const SVFValue *curInst, NodeID base, const AccessPath &amp;ap) const</div><div class="ttdoc">Due to constraint expression, curInst is used to distinguish different instructions (e....</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00540">SVFIR.cpp:540</a></div></div>
808
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a20ded5829d5975dfaca33f9c64113fe6"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a20ded5829d5975dfaca33f9c64113fe6">SVF::SVFIR::addObjNode</a></div><div class="ttdeci">NodeID addObjNode(const SVFValue *val, NodeID i)</div><div class="ttdoc">Add a memory obj node.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00542">SVFIR.h:542</a></div></div>
808
809
  <div class="ttc" id="aclassSVF_1_1FunExitICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunExitICFGNode.html">SVF::FunExitICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00324">ICFGNode.h:324</a></div></div>
809
810
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_ae18425df0631aefca7dd4b799f6f524a"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae18425df0631aefca7dd4b799f6f524a">SVF::SVFIR::getGepObjVar</a></div><div class="ttdeci">NodeID getGepObjVar(const MemObj *obj, const APOffset &amp;ap)</div><div class="ttdoc">Get a field SVFIR Object node according to base mem obj and offset.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00422">SVFIR.cpp:422</a></div></div>
810
811
  <div class="ttc" id="aclassSVF_1_1GenericGraph_html_ac213302cf5c7cdf3b66f7b18649d0fbc"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::iterator</a></div><div class="ttdeci">IDToNodeMapTy::iterator iterator</div><div class="ttdoc">Node Iterators.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00359">GenericGraph.h:359</a></div></div>
@@ -815,7 +816,8 @@ $(function() {
815
816
  <div class="ttc" id="aclassSVF_1_1TDForkPE_html"><div class="ttname"><a href="classSVF_1_1TDForkPE.html">SVF::TDForkPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01183">SVFStatements.h:1183</a></div></div>
816
817
  <div class="ttc" id="aclassSVF_1_1BranchStmt_html"><div class="ttname"><a href="classSVF_1_1BranchStmt.html">SVF::BranchStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01093">SVFStatements.h:1093</a></div></div>
817
818
  <div class="ttc" id="aclassSVF_1_1AssignStmt_html_a98f731be7be9bc8e7fd09f5c2204c840"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">SVF::AssignStmt::getLHSVarID</a></div><div class="ttdeci">NodeID getLHSVarID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00302">SVFStatements.h:302</a></div></div>
818
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_a7276e82b4648ed0e1b3d1b8b37b24089"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">SVF::SVFIR::getAllFieldsObjVars</a></div><div class="ttdeci">NodeBS &amp; getAllFieldsObjVars(const MemObj *obj)</div><div class="ttdoc">Get all fields of an object.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00475">SVFIR.cpp:475</a></div></div>
819
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a7276e82b4648ed0e1b3d1b8b37b24089"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">SVF::SVFIR::getAllFieldsObjVars</a></div><div class="ttdeci">NodeBS &amp; getAllFieldsObjVars(const MemObj *obj)</div><div class="ttdoc">Get all fields of an object.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00477">SVFIR.cpp:477</a></div></div>
820
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a685991a5dec8a17fe73b3161fdb9ea7e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a685991a5dec8a17fe73b3161fdb9ea7e">SVF::SVFIR::addGepObjNode</a></div><div class="ttdeci">NodeID addGepObjNode(const MemObj *obj, const APOffset &amp;apOffset, const NodeID gepId)</div><div class="ttdoc">Add a field obj node, this method can only invoked by getGepObjVar.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00449">SVFIR.cpp:449</a></div></div>
819
821
  <div class="ttc" id="aclassSVF_1_1GenericNode_html_a2f5471985dfe62bc9ded830a693ab153"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">SVF::GenericNode::iterator</a></div><div class="ttdeci">GEdgeSetTy::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00154">GenericGraph.h:154</a></div></div>
820
822
  <div class="ttc" id="aclassSVF_1_1SVFVar_html_a1ace69053c2c4436fd78d5624bd0086a"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">SVF::SVFVar::hasValue</a></div><div class="ttdeci">bool hasValue() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00112">SVFVariables.h:112</a></div></div>
821
823
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVF::SVFStmt::Store</a></div><div class="ttdeci">@ Store</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00065">SVFStatements.h:65</a></div></div>
@@ -825,10 +827,10 @@ $(function() {
825
827
  <div class="ttc" id="aclassSVF_1_1SVFVar_html_a76964ef7d4842a469d7720881499d8a6"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6">SVF::SVFVar::getIncomingEdges</a></div><div class="ttdeci">SVFStmt::SVFStmtSetTy &amp; getIncomingEdges(SVFStmt::PEDGEK kind)</div><div class="ttdoc">Get incoming SVFIR statements (edges)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00148">SVFVariables.h:148</a></div></div>
826
828
  <div class="ttc" id="aclassSVF_1_1DummyObjVar_html"><div class="ttname"><a href="classSVF_1_1DummyObjVar.html">SVF::DummyObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00708">SVFVariables.h:708</a></div></div>
827
829
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a0814a6a71c4a8f08253bf16ad1ba5dc5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a0814a6a71c4a8f08253bf16ad1ba5dc5">SVF::SVFIR::addVariantGepStmt</a></div><div class="ttdeci">GepStmt * addVariantGepStmt(NodeID src, NodeID dst, const AccessPath &amp;ap)</div><div class="ttdoc">Add Variant(Gep) edge.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00365">SVFIR.cpp:365</a></div></div>
828
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_abd9f622b55839d6796ca2576f2323498"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abd9f622b55839d6796ca2576f2323498">SVF::SVFIR::candidatePointers</a></div><div class="ttdeci">OrderedNodeSet candidatePointers</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00095">SVFIR.h:95</a></div></div>
830
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_abd9f622b55839d6796ca2576f2323498"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abd9f622b55839d6796ca2576f2323498">SVF::SVFIR::candidatePointers</a></div><div class="ttdeci">OrderedNodeSet candidatePointers</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00096">SVFIR.h:96</a></div></div>
829
831
  <div class="ttc" id="aclassSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00380">SymbolTableInfo.h:380</a></div></div>
830
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_a98fa25e2b185365e8f1162610c96db4e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">SVF::SVFIR::pag</a></div><div class="ttdeci">static std::unique_ptr&lt; SVFIR &gt; pag</div><div class="ttdoc">all the callsites of a program</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00101">SVFIR.h:101</a></div></div>
831
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_abe8aa0d325b35dd59ce4a7f302760e51"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51">SVF::SVFIR::icfg</a></div><div class="ttdeci">ICFG * icfg</div><div class="ttdoc">SVF Module.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00097">SVFIR.h:97</a></div></div>
832
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a98fa25e2b185365e8f1162610c96db4e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a98fa25e2b185365e8f1162610c96db4e">SVF::SVFIR::pag</a></div><div class="ttdeci">static std::unique_ptr&lt; SVFIR &gt; pag</div><div class="ttdoc">all the callsites of a program</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00102">SVFIR.h:102</a></div></div>
833
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_abe8aa0d325b35dd59ce4a7f302760e51"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51">SVF::SVFIR::icfg</a></div><div class="ttdeci">ICFG * icfg</div><div class="ttdoc">SVF Module.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00098">SVFIR.h:98</a></div></div>
832
834
  <div class="ttc" id="aclassSVF_1_1GenericNode_html_a2d9cd758d6f8c5189d9b90b74f43e009"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">SVF::GenericNode::getOutEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getOutEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00193">GenericGraph.h:193</a></div></div>
833
835
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVF::SVFStmt::Gep</a></div><div class="ttdeci">@ Gep</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00069">SVFStatements.h:69</a></div></div>
834
836
  <div class="ttc" id="acJSON_8h_html_ad43c3812e6d13e0518d9f8b8f463ffcf"><div class="ttname"><a href="cJSON_8h.html#ad43c3812e6d13e0518d9f8b8f463ffcf">count</a></div><div class="ttdeci">int count</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00216">cJSON.h:216</a></div></div>