svf-tools 1.0.327 → 1.0.331

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 (270) hide show
  1. package/SVF-doxygen/html/html/AndersenHCD_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +7 -7
  4. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +4 -4
  5. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +38 -38
  7. package/SVF-doxygen/html/html/Andersen_8h_source.html +6 -6
  8. package/SVF-doxygen/html/html/CSC_8cpp_source.html +2 -3
  9. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +3 -3
  10. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
  11. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
  12. package/SVF-doxygen/html/html/ConsG_8h_source.html +4 -4
  13. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
  14. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
  15. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +6 -6
  18. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
  20. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +2 -2
  21. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
  22. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +3 -3
  23. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +6 -7
  25. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  26. package/SVF-doxygen/html/html/IRGraph_8h_source.html +1 -1
  27. package/SVF-doxygen/html/html/LocationSet_8cpp.html +1 -0
  28. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +12 -15
  29. package/SVF-doxygen/html/html/LocationSet_8h.html +1 -1
  30. package/SVF-doxygen/html/html/LocationSet_8h_source.html +26 -40
  31. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +5 -5
  32. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  34. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +15 -15
  35. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +10 -10
  36. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
  37. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +28 -29
  38. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +29 -29
  39. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +11 -3
  40. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +71 -70
  41. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +12 -12
  42. package/SVF-doxygen/html/html/SVFIR_8h_source.html +13 -13
  43. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +3 -3
  44. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
  45. package/SVF-doxygen/html/html/SVFVariables_8h.html +1 -1
  46. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +69 -69
  47. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +4 -4
  48. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
  49. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +21 -21
  50. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
  51. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +52 -63
  52. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +72 -79
  53. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
  54. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  55. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +13 -13
  56. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +2 -2
  57. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
  58. package/SVF-doxygen/html/html/annotated.html +6 -6
  59. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +1 -1
  60. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +79 -79
  61. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +1 -1
  62. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +23 -24
  63. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +1 -1
  64. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +9 -9
  65. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +1 -1
  66. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +4 -4
  67. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +1 -1
  68. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +11 -11
  69. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +1 -1
  70. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +13 -13
  71. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +1 -1
  72. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +13 -13
  73. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +1 -1
  74. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +11 -11
  75. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +1 -1
  76. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +17 -17
  77. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +2 -3
  78. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +11 -11
  79. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +11 -11
  80. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +56 -55
  81. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +44 -41
  82. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.png +0 -0
  83. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +1 -1
  84. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +7 -7
  85. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +3 -3
  86. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  87. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
  88. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +1 -1
  89. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +9 -9
  90. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +3 -3
  91. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  92. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
  93. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +11 -11
  94. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +11 -11
  95. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +13 -13
  96. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +1 -1
  97. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +4 -4
  98. package/SVF-doxygen/html/html/classSVF_1_1FlattenedFieldInfo-members.html +85 -0
  99. package/SVF-doxygen/html/html/classSVF_1_1FlattenedFieldInfo.html +254 -0
  100. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +1 -1
  101. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +7 -7
  102. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +1 -1
  103. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +9 -9
  104. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
  105. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +1 -1
  106. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +10 -10
  107. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  108. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +22 -23
  109. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  110. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +3 -3
  111. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +173 -0
  112. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +813 -0
  113. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.png +0 -0
  114. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +2 -2
  115. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator-members.html +1 -1
  116. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +8 -8
  117. package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +17 -21
  118. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +150 -326
  119. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +6 -6
  120. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +84 -84
  121. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +2 -2
  122. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +2 -2
  123. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +96 -96
  124. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +5 -5
  125. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.png +0 -0
  126. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  127. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +15 -15
  128. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +1 -1
  129. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +75 -73
  130. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +11 -11
  131. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +1 -1
  132. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +31 -31
  133. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +57 -56
  134. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +301 -229
  135. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +4 -4
  136. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.png +0 -0
  137. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +4 -4
  138. package/SVF-doxygen/html/html/classSVF_1_1StInfo-members.html +11 -14
  139. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +70 -168
  140. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +1 -1
  141. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +4 -4
  142. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +30 -30
  143. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +20 -24
  144. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +110 -291
  145. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
  146. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +9 -9
  148. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +18 -18
  149. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +11 -11
  150. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +1 -1
  151. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +3 -3
  152. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
  153. package/SVF-doxygen/html/html/classes.html +6 -6
  154. package/SVF-doxygen/html/html/functions_a.html +13 -10
  155. package/SVF-doxygen/html/html/functions_b.html +1 -5
  156. package/SVF-doxygen/html/html/functions_c.html +19 -20
  157. package/SVF-doxygen/html/html/functions_d.html +1 -1
  158. package/SVF-doxygen/html/html/functions_e.html +0 -16
  159. package/SVF-doxygen/html/html/functions_f.html +21 -19
  160. package/SVF-doxygen/html/html/functions_func.html +15 -12
  161. package/SVF-doxygen/html/html/functions_func_c.html +16 -17
  162. package/SVF-doxygen/html/html/functions_func_d.html +1 -1
  163. package/SVF-doxygen/html/html/functions_func_e.html +2 -8
  164. package/SVF-doxygen/html/html/functions_func_f.html +4 -4
  165. package/SVF-doxygen/html/html/functions_func_g.html +36 -58
  166. package/SVF-doxygen/html/html/functions_func_i.html +11 -14
  167. package/SVF-doxygen/html/html/functions_func_r.html +3 -3
  168. package/SVF-doxygen/html/html/functions_func_s.html +6 -9
  169. package/SVF-doxygen/html/html/functions_func_t.html +1 -1
  170. package/SVF-doxygen/html/html/functions_func_w.html +1 -1
  171. package/SVF-doxygen/html/html/functions_g.html +41 -63
  172. package/SVF-doxygen/html/html/functions_i.html +6 -9
  173. package/SVF-doxygen/html/html/functions_l.html +4 -4
  174. package/SVF-doxygen/html/html/functions_n.html +4 -7
  175. package/SVF-doxygen/html/html/functions_o.html +25 -20
  176. package/SVF-doxygen/html/html/functions_p.html +12 -16
  177. package/SVF-doxygen/html/html/functions_r.html +4 -4
  178. package/SVF-doxygen/html/html/functions_s.html +15 -18
  179. package/SVF-doxygen/html/html/functions_t.html +1 -1
  180. package/SVF-doxygen/html/html/functions_type_e.html +0 -4
  181. package/SVF-doxygen/html/html/functions_type_o.html +3 -0
  182. package/SVF-doxygen/html/html/functions_v.html +3 -3
  183. package/SVF-doxygen/html/html/functions_vars_b.html +1 -5
  184. package/SVF-doxygen/html/html/functions_vars_c.html +1 -1
  185. package/SVF-doxygen/html/html/functions_vars_e.html +0 -6
  186. package/SVF-doxygen/html/html/functions_vars_f.html +9 -7
  187. package/SVF-doxygen/html/html/functions_vars_l.html +1 -1
  188. package/SVF-doxygen/html/html/functions_vars_n.html +0 -3
  189. package/SVF-doxygen/html/html/functions_vars_o.html +2 -2
  190. package/SVF-doxygen/html/html/functions_w.html +1 -1
  191. package/SVF-doxygen/html/html/hierarchy.html +64 -64
  192. package/SVF-doxygen/html/html/namespaceSVF.html +3 -3
  193. package/SVF-doxygen/html/html/search/all_1.js +3 -2
  194. package/SVF-doxygen/html/html/search/all_10.js +6 -6
  195. package/SVF-doxygen/html/html/search/all_12.js +3 -3
  196. package/SVF-doxygen/html/html/search/all_13.js +5 -6
  197. package/SVF-doxygen/html/html/search/all_14.js +6 -6
  198. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  199. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  200. package/SVF-doxygen/html/html/search/all_2.js +2 -3
  201. package/SVF-doxygen/html/html/search/all_3.js +5 -5
  202. package/SVF-doxygen/html/html/search/all_4.js +1 -1
  203. package/SVF-doxygen/html/html/search/all_5.js +0 -5
  204. package/SVF-doxygen/html/html/search/all_6.js +6 -5
  205. package/SVF-doxygen/html/html/search/all_7.js +15 -23
  206. package/SVF-doxygen/html/html/search/all_9.js +2 -3
  207. package/SVF-doxygen/html/html/search/all_c.js +4 -4
  208. package/SVF-doxygen/html/html/search/all_e.js +1 -2
  209. package/SVF-doxygen/html/html/search/all_f.js +5 -4
  210. package/SVF-doxygen/html/html/search/classes_5.js +1 -1
  211. package/SVF-doxygen/html/html/search/classes_6.js +1 -1
  212. package/SVF-doxygen/html/html/search/functions_0.js +3 -2
  213. package/SVF-doxygen/html/html/search/functions_10.js +2 -3
  214. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  215. package/SVF-doxygen/html/html/search/functions_14.js +1 -1
  216. package/SVF-doxygen/html/html/search/functions_2.js +3 -3
  217. package/SVF-doxygen/html/html/search/functions_3.js +1 -1
  218. package/SVF-doxygen/html/html/search/functions_4.js +0 -2
  219. package/SVF-doxygen/html/html/search/functions_5.js +1 -1
  220. package/SVF-doxygen/html/html/search/functions_6.js +15 -23
  221. package/SVF-doxygen/html/html/search/functions_8.js +1 -2
  222. package/SVF-doxygen/html/html/search/functions_a.js +1 -1
  223. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  224. package/SVF-doxygen/html/html/search/functions_f.js +1 -1
  225. package/SVF-doxygen/html/html/search/typedefs_4.js +0 -1
  226. package/SVF-doxygen/html/html/search/typedefs_e.js +1 -0
  227. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  228. package/SVF-doxygen/html/html/search/variables_2.js +2 -3
  229. package/SVF-doxygen/html/html/search/variables_3.js +1 -1
  230. package/SVF-doxygen/html/html/search/variables_5.js +0 -2
  231. package/SVF-doxygen/html/html/search/variables_6.js +5 -4
  232. package/SVF-doxygen/html/html/search/variables_c.js +1 -1
  233. package/SVF-doxygen/html/html/search/variables_e.js +0 -1
  234. package/SVF-doxygen/html/html/search/variables_f.js +1 -1
  235. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  236. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
  237. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
  238. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +5 -5
  239. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  240. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  241. package/include/Graphs/ConsG.h +1 -1
  242. package/include/Graphs/ConsGEdge.h +1 -1
  243. package/include/MemoryModel/LocationSet.h +39 -126
  244. package/include/MemoryModel/PointerAnalysis.h +1 -1
  245. package/include/MemoryModel/SVFIR.h +2 -2
  246. package/include/MemoryModel/SVFStatements.h +1 -1
  247. package/include/MemoryModel/SVFVariables.h +17 -11
  248. package/include/MemoryModel/SymbolTableInfo.h +27 -31
  249. package/include/SVF-FE/SVFIRBuilder.h +6 -1
  250. package/include/Util/IRAnnotator.h +3 -3
  251. package/lib/DDA/ContextDDA.cpp +1 -1
  252. package/lib/Graphs/ConsG.cpp +1 -1
  253. package/lib/Graphs/IRGraph.cpp +1 -1
  254. package/lib/Graphs/OfflineConsG.cpp +1 -1
  255. package/lib/MemoryModel/LocationSet.cpp +53 -95
  256. package/lib/MemoryModel/PointerAnalysis.cpp +4 -2
  257. package/lib/MemoryModel/PointerAnalysisImpl.cpp +4 -4
  258. package/lib/MemoryModel/SVFIR.cpp +4 -4
  259. package/lib/MemoryModel/SVFVariables.cpp +2 -2
  260. package/lib/MemoryModel/SymbolTableInfo.cpp +44 -212
  261. package/lib/SABER/SaberSVFGBuilder.cpp +1 -1
  262. package/lib/SVF-FE/SVFIRBuilder.cpp +135 -7
  263. package/lib/SVF-FE/SymbolTableBuilder.cpp +4 -4
  264. package/lib/Util/TypeBasedHeapCloning.cpp +10 -10
  265. package/lib/WPA/Andersen.cpp +1 -5
  266. package/lib/WPA/AndersenSFR.cpp +2 -2
  267. package/lib/WPA/CSC.cpp +1 -1
  268. package/lib/WPA/FlowSensitiveTBHC.cpp +6 -6
  269. package/package.json +1 -1
  270. package/tools/Example/svf-ex.cpp +1 -2
@@ -66,7 +66,7 @@ $(function() {
66
66
  <div class="title">SVFIR.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="SVFIR_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- SVFIR.h -- IR of SVF ---------------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * SVFIR.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: 31, 12, 2021</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef SVFIR_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define SVFIR_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="IRGraph_8h.html">Graphs/IRGraph.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html"> 43</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1IRGraph.html">IRGraph</a></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a46fadea4d08baefc8fbc1d8928da7f6b"> 46</a></span>&#160;<span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFIRBuilder.html">SVFIRBuilder</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a294bb5e174030882a385c790ab835bb3"> 47</a></span>&#160;<span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFIR.html#a294bb5e174030882a385c790ab835bb3">ExternalPAG</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a639210db7230cea2eeaf2d08c953d827"> 48</a></span>&#160;<span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1PAGBuilderFromFile.html">PAGBuilderFromFile</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac7f1349df526a5a50741e9303f3bd446"> 49</a></span>&#160;<span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1TypeBasedHeapCloning.html">TypeBasedHeapCloning</a>; </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ab4c2e6d44c679a9ba117843f2234784b"> 52</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const CallBlockNode*&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#ab4c2e6d44c679a9ba117843f2234784b">CallSiteSet</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a0f5732647f3f44ec12617029354fca11"> 53</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;const CallBlockNode*,NodeID&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a0f5732647f3f44ec12617029354fca11">CallSiteToFunPtrMap</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ae0aab46dbf1e02d7ec6f754970f485f9"> 54</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID,CallSiteSet&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#ae0aab46dbf1e02d7ec6f754970f485f9">FunPtrToCallSitesMap</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ab6abb822445c9b3f5cb2b7206042e940"> 55</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID,NodeBS&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#ab6abb822445c9b3f5cb2b7206042e940">MemObjToFieldsMap</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9"> 56</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const SVFStmt*&gt; <a class="code" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVFStmtList</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b"> 57</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const SVFVar*&gt; <a class="code" href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVFVarList</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a08a05dfa6b9734936bb92b3969dbce3b"> 58</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFVar*,PhiStmt*&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a08a05dfa6b9734936bb92b3969dbce3b">PHINodeMap</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a4541aa617c79f7922fe8e21c0f2b6b63"> 59</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*,SVFVarList&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a4541aa617c79f7922fe8e21c0f2b6b63">FunToArgsListMap</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a0321197dcaf5b00189b6dec732a799ef"> 60</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CallBlockNode*,SVFVarList&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a0321197dcaf5b00189b6dec732a799ef">CSToArgsListMap</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a8a7156b1182e8d32b3899d510514ae42"> 61</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const RetBlockNode*,const SVFVar*&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a8a7156b1182e8d32b3899d510514ae42">CSToRetMap</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ae34e5ff2f065ad752c248337d625b2e3"> 62</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*,const SVFVar*&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#ae34e5ff2f065ad752c248337d625b2e3">FunToRetMap</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac918466df08a2ab30472f3e57935f005"> 63</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*,SVFStmtSet&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#ac918466df08a2ab30472f3e57935f005">FunToPAGEdgeSetMap</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a4666dabcbeb3f40f96a0694ce2f07eb0"> 64</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const ICFGNode*,SVFStmtList&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a4666dabcbeb3f40f96a0694ce2f07eb0">ICFGNode2SVFStmtsMap</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a654236d64abc2ca95982da7b4408b52d"> 65</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID, NodeID&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a654236d64abc2ca95982da7b4408b52d">NodeToNodeMap</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ab0d0aa216dbf7cc8f5b8030d5217e89c"> 66</a></span>&#160; <span class="keyword">typedef</span> std::pair&lt;NodeID, Size_t&gt; <a class="code" href="classSVF_1_1SVFIR.html#ab0d0aa216dbf7cc8f5b8030d5217e89c">NodeOffset</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a323e459ca43e239ddcdc8d00c6a8db6d"> 67</a></span>&#160; <span class="keyword">typedef</span> std::pair&lt;NodeID, LocationSet&gt; <a class="code" href="classSVF_1_1SVFIR.html#a323e459ca43e239ddcdc8d00c6a8db6d">NodeLocationSet</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ae683914bce36e2d387bc0bc97dfcb14d"> 68</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeOffset,NodeID&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#ae683914bce36e2d387bc0bc97dfcb14d">NodeOffsetMap</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa5b08d987b37d35e73de88da10a97bc4"> 69</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeLocationSet,NodeID&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#aa5b08d987b37d35e73de88da10a97bc4">NodeLocationSetMap</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a52dfad2ac907db45a91752c53384fb3d"> 70</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const Value*, NodeLocationSetMap&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a52dfad2ac907db45a91752c53384fb3d">GepValueVarMap</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ab715a8e83a4ec45fb86298fef3eda95a"> 71</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodePair,NodeID&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#ab715a8e83a4ec45fb86298fef3eda95a">NodePairSetMap</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a86c0c23d854b034d741d9d8891debab7"> 76</a></span>&#160; ICFGNode2SVFStmtsMap <a class="code" href="classSVF_1_1SVFIR.html#a86c0c23d854b034d741d9d8891debab7">icfgNode2SVFStmtsMap</a>; </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aaae756185bbd5b7175e96f8928a989c2"> 77</a></span>&#160; ICFGNode2SVFStmtsMap <a class="code" href="classSVF_1_1SVFIR.html#aaae756185bbd5b7175e96f8928a989c2">icfgNode2PTASVFStmtsMap</a>; </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ad7bbe1abea55ed03c9b6c81891c0bd67"> 78</a></span>&#160; GepValueVarMap <a class="code" href="classSVF_1_1SVFIR.html#ad7bbe1abea55ed03c9b6c81891c0bd67">GepValObjMap</a>; </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a148b51118eeba8117e033fea84b56be8"> 79</a></span>&#160; NodeLocationSetMap <a class="code" href="classSVF_1_1SVFIR.html#a148b51118eeba8117e033fea84b56be8">GepObjVarMap</a>; </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252"> 80</a></span>&#160; MemObjToFieldsMap <a class="code" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">memToFieldsMap</a>; </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a71b51492b00e66e36266b9a76a842323"> 81</a></span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a28ea8f85b0923d00364a010c1fd4e416">SVFStmtSet</a> <a class="code" href="classSVF_1_1SVFIR.html#a71b51492b00e66e36266b9a76a842323">globSVFStmtSet</a>; </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a41abf665421dbfaef508b1eba0c91fb9"> 82</a></span>&#160; PHINodeMap <a class="code" href="classSVF_1_1SVFIR.html#a41abf665421dbfaef508b1eba0c91fb9">phiNodeMap</a>; </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a864c465fbfdbbbdcc7fc8bbe26737903"> 83</a></span>&#160; FunToArgsListMap <a class="code" href="classSVF_1_1SVFIR.html#a864c465fbfdbbbdcc7fc8bbe26737903">funArgsListMap</a>; </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa0920f5f967efdb89e23f12d31b112a2"> 84</a></span>&#160; CSToArgsListMap <a class="code" href="classSVF_1_1SVFIR.html#aa0920f5f967efdb89e23f12d31b112a2">callSiteArgsListMap</a>; </div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a11ab07f48c934f45c239393332aa60e1"> 85</a></span>&#160; CSToRetMap <a class="code" href="classSVF_1_1SVFIR.html#a11ab07f48c934f45c239393332aa60e1">callSiteRetMap</a>; </div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a4cef56f7fc77b47dc6e65c59c98551c5"> 86</a></span>&#160; FunToRetMap <a class="code" href="classSVF_1_1SVFIR.html#a4cef56f7fc77b47dc6e65c59c98551c5">funRetMap</a>; </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5"> 87</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>; </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a0a5f88766b7e11f1ea35befcbcea62dc"> 88</a></span>&#160; CallSiteToFunPtrMap <a class="code" href="classSVF_1_1SVFIR.html#a0a5f88766b7e11f1ea35befcbcea62dc">indCallSiteToFunPtrMap</a>; </div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#af9c840e4b82fe9fd9493eabaa2b52bd5"> 89</a></span>&#160; FunPtrToCallSitesMap <a class="code" href="classSVF_1_1SVFIR.html#af9c840e4b82fe9fd9493eabaa2b52bd5">funPtrToCallSitesMap</a>; </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="namespaceSVF.html#a3c2bd95727ec0d9c55c631b6617026c8">OrderedNodeSet</a> <a class="code" href="classSVF_1_1SVFIR.html#abd9f622b55839d6796ca2576f2323498">candidatePointers</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51"> 93</a></span>&#160; <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* <a class="code" href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51">icfg</a>; <span class="comment">// ICFG</span></div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac6c537688366e73bb0ae5db49c0b2450"> 94</a></span>&#160; CallSiteSet <a class="code" href="classSVF_1_1SVFIR.html#ac6c537688366e73bb0ae5db49c0b2450">callSiteSet</a>; </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#abf511f82cdbf7a6d9b6da167aee57636">SVFIR</a>(<span class="keywordtype">bool</span> buildFromFile);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a6834558be6987c91a3732154482c9567">destroy</a>();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362"> 106</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">getPAG</a>(<span class="keywordtype">bool</span> buildFromFile = <span class="keyword">false</span>)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (pag == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; pag = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFIR.html#abf511f82cdbf7a6d9b6da167aee57636">SVFIR</a>(buildFromFile);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6dd18b030ae6fee4b4a8260ce9fd97fd"> 114</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a6dd18b030ae6fee4b4a8260ce9fd97fd">releasePAG</a>()</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span> (pag)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; pag = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">inline</span> MemObjToFieldsMap&amp; <a class="code" href="classSVF_1_1SVFIR.html#a6f46446d667258b32ddc1ccab48f651c">getMemToFieldsMap</a>()</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">memToFieldsMap</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a77e3c407ea3990413e371589aa468963"> 127</a></span>&#160; <span class="keyword">inline</span> NodeLocationSetMap&amp; <a class="code" href="classSVF_1_1SVFIR.html#a77e3c407ea3990413e371589aa468963">getGepObjNodeMap</a>()</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a148b51118eeba8117e033fea84b56be8">GepObjVarMap</a>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da"> 132</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* <a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51">icfg</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a7990c72dd6d645d713f19ed973841484"> 137</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a3c2bd95727ec0d9c55c631b6617026c8">OrderedNodeSet</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#a7990c72dd6d645d713f19ed973841484">getAllValidPtrs</a>()</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#abd9f622b55839d6796ca2576f2323498">candidatePointers</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#af6a2c401d5c7582a4a958b1fe40838e5">initialiseCandidatePointers</a>();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3d62b2a06fe1ec531cbde12131fa31df"> 145</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1SVFIR.html#a3d62b2a06fe1ec531cbde12131fa31df">~SVFIR</a>()</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a6834558be6987c91a3732154482c9567">destroy</a>();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a2375f49c77f2285a6316e7540b051a0f">handleBlackHole</a>(<span class="keywordtype">bool</span> b);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1SVFIR.html#ad6e18f520f6b559f2304002792f6b701">getModule</a>()</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a40387a4893ae5caf58d6f786533d2f44">getModule</a>();</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#a3db2c4e2823f16d78c86596da284acd1">KindToSVFStmtSetMap</a>[kind];</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a65a4af3d6f0bfc11e31f020bb2966576"> 167</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#a65a4af3d6f0bfc11e31f020bb2966576">getPTASVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#ae0a9b81717fd834bbd109c4b69aaff9d">KindToPTASVFStmtSetMap</a>[kind];</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a63acb4d86d93ad1e88860ac839a8c654"> 172</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a63acb4d86d93ad1e88860ac839a8c654">hasSVFStmtList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> icfgNode2SVFStmtsMap.find(inst)!=icfgNode2SVFStmtsMap.end();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a0552d565633ee22abe03085134a871c0"> 176</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a0552d565633ee22abe03085134a871c0">hasPTASVFStmtList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> icfgNode2PTASVFStmtsMap.find(inst)!=icfgNode2PTASVFStmtsMap.end();</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a570ad42ad516e3fabb91a3563b618c0b"> 181</a></span>&#160; <span class="keyword">inline</span> SVFStmtList&amp; <a class="code" href="classSVF_1_1SVFIR.html#a570ad42ad516e3fabb91a3563b618c0b">getSVFStmtList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* inst)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> icfgNode2SVFStmtsMap[inst];</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#abb91ed47d5c13d0ad7eec35164e37988"> 186</a></span>&#160; <span class="keyword">inline</span> SVFStmtList&amp; <a class="code" href="classSVF_1_1SVFIR.html#abb91ed47d5c13d0ad7eec35164e37988">getPTASVFStmtList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* inst)</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">return</span> icfgNode2PTASVFStmtsMap[inst];</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6a84868ab4e2845e884fba08d82b40f6"> 191</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a6a84868ab4e2845e884fba08d82b40f6">addToSVFStmtList</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* inst, <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge)</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#adb92a92f5c878576dff26cb38eab8c8c">setICFGNode</a>(inst);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; icfgNode2SVFStmtsMap[inst].push_back(edge);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">isPTAEdge</a>())</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; icfgNode2PTASVFStmtsMap[inst].push_back(edge);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a5c5adab1f68520a304fbf70ca40f7687"> 199</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1IRGraph.html#a28ea8f85b0923d00364a010c1fd4e416">SVFStmtSet</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#a5c5adab1f68520a304fbf70ca40f7687">getGlobalSVFStmtSet</a>()</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a71b51492b00e66e36266b9a76a842323">globSVFStmtSet</a>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa530e33657f68fc2e8eae9435ce430cb"> 204</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CallSiteSet&amp; <a class="code" href="classSVF_1_1SVFIR.html#aa530e33657f68fc2e8eae9435ce430cb">getCallSiteSet</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#ac6c537688366e73bb0ae5db49c0b2450">callSiteSet</a>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a5de67390d38bfacd5b63b776a0ecbfff"> 209</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a5de67390d38bfacd5b63b776a0ecbfff">isPhiNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node)<span class="keyword"> const</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">return</span> phiNodeMap.find(node) != phiNodeMap.end();</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac359813747b4f75920c5f395ba74f410"> 215</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#ac359813747b4f75920c5f395ba74f410">hasFunArgsList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)<span class="keyword"> const</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">return</span> (funArgsListMap.find(func) != funArgsListMap.end());</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a615c056c876b59d1fd174a2ac9ade27c"> 220</a></span>&#160; <span class="keyword">inline</span> FunToArgsListMap&amp; <a class="code" href="classSVF_1_1SVFIR.html#a615c056c876b59d1fd174a2ac9ade27c">getFunArgsMap</a>()</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a864c465fbfdbbbdcc7fc8bbe26737903">funArgsListMap</a>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; }</div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa148e3e14ebad8460e32079f2f44413a"> 225</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> SVFVarList&amp; <a class="code" href="classSVF_1_1SVFIR.html#aa148e3e14ebad8460e32079f2f44413a">getFunArgsList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)<span class="keyword"> const</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; FunToArgsListMap::const_iterator it = funArgsListMap.find(func);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != funArgsListMap.end() &amp;&amp; <span class="stringliteral">&quot;this function doesn&#39;t have arguments&quot;</span>);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2a4185af81e7e10f0db74c39ee220101"> 232</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a2a4185af81e7e10f0db74c39ee220101">hasCallSiteArgsMap</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">return</span> (callSiteArgsListMap.find(cs) != callSiteArgsListMap.end());</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; }</div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a346b9300ad16ef65e3ab4e11f88193a7"> 237</a></span>&#160; <span class="keyword">inline</span> CSToArgsListMap&amp; <a class="code" href="classSVF_1_1SVFIR.html#a346b9300ad16ef65e3ab4e11f88193a7">getCallSiteArgsMap</a>()</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#aa0920f5f967efdb89e23f12d31b112a2">callSiteArgsListMap</a>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac7f90610a7b5f456c530a4419393fae5"> 242</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> SVFVarList&amp; <a class="code" href="classSVF_1_1SVFIR.html#ac7f90610a7b5f456c530a4419393fae5">getCallSiteArgsList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; CSToArgsListMap::const_iterator it = callSiteArgsListMap.find(cs);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != callSiteArgsListMap.end() &amp;&amp; <span class="stringliteral">&quot;this call site doesn&#39;t have arguments&quot;</span>);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a650b3931af337a92ffcb5dad5ab47b22"> 249</a></span>&#160; <span class="keyword">inline</span> CSToRetMap&amp; <a class="code" href="classSVF_1_1SVFIR.html#a650b3931af337a92ffcb5dad5ab47b22">getCallSiteRets</a>()</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a11ab07f48c934f45c239393332aa60e1">callSiteRetMap</a>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; }</div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a70aa4d730ef1d38ef9c46f5014465bdd"> 254</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1SVFIR.html#a70aa4d730ef1d38ef9c46f5014465bdd">getCallSiteRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; CSToRetMap::const_iterator it = callSiteRetMap.find(cs);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != callSiteRetMap.end() &amp;&amp; <span class="stringliteral">&quot;this call site doesn&#39;t have return&quot;</span>);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; }</div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a170bef1e9a07ce0449faf66706ae6e61"> 260</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a170bef1e9a07ce0449faf66706ae6e61">callsiteHasRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">return</span> callSiteRetMap.find(cs) != callSiteRetMap.end();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#abd1bb12776dc9a17863a52ce2cd31958"> 265</a></span>&#160; <span class="keyword">inline</span> FunToRetMap&amp; <a class="code" href="classSVF_1_1SVFIR.html#abd1bb12776dc9a17863a52ce2cd31958">getFunRets</a>()</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a4cef56f7fc77b47dc6e65c59c98551c5">funRetMap</a>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; }</div><div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a34e27b8bcfeaafda190dcdb9169a346f"> 270</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1SVFIR.html#a34e27b8bcfeaafda190dcdb9169a346f">getFunRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)<span class="keyword"> const</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; FunToRetMap::const_iterator it = funRetMap.find(func);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != funRetMap.end() &amp;&amp; <span class="stringliteral">&quot;this function doesn&#39;t have return&quot;</span>);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#afe8274c3b7317fccef5314662a182046"> 276</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#afe8274c3b7317fccef5314662a182046">funHasRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)<span class="keyword"> const</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> funRetMap.find(func) != funRetMap.end();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a4b4592e3187bb6583aba63b2f374754e"> 284</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1SVFIR.html#a4b4592e3187bb6583aba63b2f374754e">getFieldValNodeNum</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span> GepValObjMap.size();</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#af7a98a5eb789178594063140c85cd21f"> 288</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1SVFIR.html#af7a98a5eb789178594063140c85cd21f">getFieldObjNodeNum</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">return</span> GepObjVarMap.size();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a811c5eaeef1e52cc2d6f56ec5a76bb02"> 295</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a811c5eaeef1e52cc2d6f56ec5a76bb02">getGepValVar</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* curInst, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls)<span class="keyword"> const</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; GepValueVarMap::const_iterator iter = GepValObjMap.find(curInst);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">if</span>(iter==GepValObjMap.end()){</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">return</span> UINT_MAX;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; NodeLocationSetMap::const_iterator lit = iter-&gt;second.find(std::make_pair(base, ls));</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">if</span>(lit==iter-&gt;second.end())</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">return</span> UINT_MAX;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">return</span> lit-&gt;second;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0"> 312</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CallSiteToFunPtrMap&amp; <a class="code" href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0">getIndirectCallsites</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a0a5f88766b7e11f1ea35befcbcea62dc">indCallSiteToFunPtrMap</a>;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a533a01d01fab9e45cd1780f9bbd50b0f"> 316</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a533a01d01fab9e45cd1780f9bbd50b0f">getFunPtr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; CallSiteToFunPtrMap::const_iterator it = indCallSiteToFunPtrMap.find(cs);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=indCallSiteToFunPtrMap.end() &amp;&amp; <span class="stringliteral">&quot;indirect callsite not have a function pointer?&quot;</span>);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#abf209739a97b96ae0d1c8451fdc684e8"> 322</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CallSiteSet&amp; <a class="code" href="classSVF_1_1SVFIR.html#abf209739a97b96ae0d1c8451fdc684e8">getIndCallSites</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> funPtr)<span class="keyword"> const</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; FunPtrToCallSitesMap::const_iterator it = funPtrToCallSitesMap.find(funPtr);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=funPtrToCallSitesMap.end() &amp;&amp; <span class="stringliteral">&quot;function pointer not used at any indirect callsite?&quot;</span>);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ad44e1ef13d047f8aea8f6ddf5510bd6c"> 328</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#ad44e1ef13d047f8aea8f6ddf5510bd6c">isIndirectCallSites</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">return</span> (indCallSiteToFunPtrMap.find(cs) != indCallSiteToFunPtrMap.end());</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a9235a60e7332c8416e113e7360441d97"> 332</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a9235a60e7332c8416e113e7360441d97">isFunPtr</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">return</span> (funPtrToCallSitesMap.find(<span class="keywordtype">id</span>) != funPtrToCallSitesMap.end());</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6f41676ae91ba7fad38cc7387dd1c255"> 339</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a6f41676ae91ba7fad38cc7387dd1c255">getIntraPAGEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a6f41676ae91ba7fad38cc7387dd1c255">getIntraPAGEdge</a>(<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src), <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst), kind);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac1dbd64071f9822b0404f4ed9c8bd2cd"> 343</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#ac1dbd64071f9822b0404f4ed9c8bd2cd">getIntraPAGEdge</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* src, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dst, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> edge(src,dst,kind);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; edgeSet = <a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(kind);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; SVFStmt::SVFStmtSetTy::const_iterator it = edgeSet.find(&amp;edge);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != edgeSet.end() &amp;&amp; <span class="stringliteral">&quot;can not find pag edge&quot;</span>);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">return</span> (*it);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1"> 357</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>*<a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keyword">const</span> <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><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>* objPN = SVFUtil::dyn_cast&lt;ObjVar&gt;(node))</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(objPN);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div><div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a25b86c16d11b4d50ccc28ead525687ae"> 365</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>*<a class="code" href="classSVF_1_1SVFIR.html#a25b86c16d11b4d50ccc28ead525687ae">getObject</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>* node)<span class="keyword"> const</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>();</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">getGepObjVar</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="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">getGepObjVar</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls) ;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;</div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354"> 377</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354">getFIObjVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj)<span class="keyword"> const</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">return</span> obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</div><div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac9f860028c8cbd364720888084701628"> 381</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#ac9f860028c8cbd364720888084701628">getFIObjVar</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;ObjVar&gt;(node) &amp;&amp; <span class="stringliteral">&quot;need an object node&quot;</span>);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>* obj = SVFUtil::cast&lt;ObjVar&gt;(node);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354">getFIObjVar</a>(obj-&gt;<a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>());</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6a71d2716530607d66d9e9035199d997"> 392</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a6a71d2716530607d66d9e9035199d997">isBlkPtr</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#acba43b6e9cdf07afaf3d30351aa8df7c">SymbolTableInfo::isBlkPtr</a>(<span class="keywordtype">id</span>));</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div><div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a18ca66c199b910b15f1bfa77dcc98c30"> 396</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a18ca66c199b910b15f1bfa77dcc98c30">isNullPtr</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#ad095e4a569d399cadc03ce864f61c394">SymbolTableInfo::isNullPtr</a>(<span class="keywordtype">id</span>));</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div><div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ad9895f2d075eb402390e3b01ed68e001"> 400</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#ad9895f2d075eb402390e3b01ed68e001">isBlkObjOrConstantObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFIR.html#a17527c55d35ae5c18f00fd4dabe6acad">isBlkObj</a>(<span class="keywordtype">id</span>) || <a class="code" href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156">isConstantObj</a>(<span class="keywordtype">id</span>));</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a17527c55d35ae5c18f00fd4dabe6acad"> 404</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a17527c55d35ae5c18f00fd4dabe6acad">isBlkObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad9cdb21e20182f3bc95f04bbb97712f3">SymbolTableInfo::isBlkObj</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div><div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156"> 408</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156">isConstantObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj = <a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(obj &amp;&amp; <span class="stringliteral">&quot;not an object node?&quot;</span>);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a704b917b1e1dbaf9cd758fa9acc1083b">SymbolTableInfo::isConstantObj</a>(<span class="keywordtype">id</span>) || obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3f429b085f749ed0c8269517eb9094ae">isConstant</a>();</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; }</div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a07716ca7f769f704a80ccee1a6ad7ee2"> 414</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a07716ca7f769f704a80ccee1a6ad7ee2">isNonPointerObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</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><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FIObjVar.html">FIObjVar</a>* fiNode = SVFUtil::dyn_cast&lt;FIObjVar&gt;(node))</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">return</span> (fiNode-&gt;getMemObj()-&gt;hasPtrObj() == <span class="keyword">false</span>);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GepObjPN.html">GepObjPN</a>* gepNode = SVFUtil::dyn_cast&lt;GepObjPN&gt;(node))</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">return</span> (gepNode-&gt;getMemObj()-&gt;isNonPtrFieldObj(gepNode-&gt;getLocationSet()));</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; }</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyObjVar&gt;(node))</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;expecting a object node&quot;</span>);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">getBaseValVar</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> <a class="code" href="classSVF_1_1SVFIR.html#a8b36d077c30fb2830a253ded82413c2d">getLocationSetFromBaseNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00442"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08"> 442</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">getBaseObjVar</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(<span class="keywordtype">id</span>)-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; }</div><div class="line"><a name="l00446"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749"> 446</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* <a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;ObjVar&gt;(node) &amp;&amp; <span class="stringliteral">&quot;need an object node&quot;</span>);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</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><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">return</span> obj-&gt;<a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>();</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">getAllFieldsObjVars</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">getAllFieldsObjVars</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1SVFIR.html#a42d1e2f0213fb6e54c56cc0695b57cb0">getFieldsAfterCollapse</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00461"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0"> 461</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">addDummyValNode</a>()</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">addDummyValNode</a>(<a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;allocateValueId());</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div><div class="line"><a name="l00465"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a18388bc282c5329a837c6a273893c4fb"> 465</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a18388bc282c5329a837c6a273893c4fb">addDummyObjNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* type = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a18388bc282c5329a837c6a273893c4fb">addDummyObjNode</a>(<a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;allocateObjectId(), type);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; }</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3">isValidPointer</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId) <span class="keyword">const</span>;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a5c3b194ebada47baaccf0e9f3ab1a139">isValidTopLevelPtr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a236b4fefd16e9c793c5bd6d576290841">print</a>();</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;</div><div class="line"><a name="l00482"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523"> 482</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge) {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordtype">bool</span> added = <a class="code" href="classSVF_1_1IRGraph.html#a3db2c4e2823f16d78c86596da284acd1">KindToSVFStmtSetMap</a>[edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>()].insert(edge).second;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(added &amp;&amp; <span class="stringliteral">&quot;duplicated edge, not added!!!&quot;</span>);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">isPTAEdge</a>())</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a9f68ffe75e3d9457092ac2368aa08a27">totalPTAPAGEdge</a>++;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#ae0a9b81717fd834bbd109c4b69aaff9d">KindToPTASVFStmtSetMap</a>[edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>()].insert(edge);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#ac27b9eedd489f13175c010a32203abae">addFunArgs</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* arg)</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <a class="code" href="classSVF_1_1FunEntryBlockNode.html">FunEntryBlockNode</a>* funEntryBlockNode = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#ae1ef14cdda27a2062c4c454750444108">getFunEntryBlockNode</a>(fun);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; funEntryBlockNode-&gt;<a class="code" href="classSVF_1_1FunEntryBlockNode.html#ae6ebc073885c5d47f685c61097dadf20">addFormalParms</a>(arg);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; funArgsListMap[fun].push_back(arg);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div><div class="line"><a name="l00501"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a53774463f34bb8b528b179b72b48fd69"> 501</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a53774463f34bb8b528b179b72b48fd69">addFunRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* ret)</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; {</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <a class="code" href="classSVF_1_1FunExitBlockNode.html">FunExitBlockNode</a>* funExitBlockNode = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#aa33426d57dc150956902945a17a29bcb">getFunExitBlockNode</a>(fun);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; funExitBlockNode-&gt;<a class="code" href="classSVF_1_1FunExitBlockNode.html#ae1499a3ea7d5bb90dccd5d04a8b97dfc">addFormalRet</a>(ret);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; funRetMap[fun] = ret;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div><div class="line"><a name="l00508"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a5fafbfd6a30b8796b92a3a1f3409767f"> 508</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a5fafbfd6a30b8796b92a3a1f3409767f">addCallSiteArgs</a>(<a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* callBlockNode,<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* arg)</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; callBlockNode-&gt;<a class="code" href="classSVF_1_1CallBlockNode.html#a6d819186e239e68c117af16ed405da84">addActualParms</a>(arg);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; callSiteArgsListMap[callBlockNode].push_back(arg);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div><div class="line"><a name="l00514"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3c8070a1d7a6a705433b05dd633185b1"> 514</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a3c8070a1d7a6a705433b05dd633185b1">addCallSiteRets</a>(<a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a>* retBlockNode,<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* arg)</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; retBlockNode-&gt;<a class="code" href="classSVF_1_1RetBlockNode.html#ad2cd6f6589ce5464d6fbcac49f115714">addActualRet</a>(arg);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; callSiteRetMap[retBlockNode]= arg;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div><div class="line"><a name="l00520"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa91db3ebf92eacf077ae7b4d0735635b"> 520</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#aa91db3ebf92eacf077ae7b4d0735635b">addIndirectCallsites</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs,<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> funPtr)</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordtype">bool</span> added = indCallSiteToFunPtrMap.insert(std::make_pair(cs,funPtr)).second;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; funPtrToCallSitesMap[funPtr].insert(cs);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(added &amp;&amp; <span class="stringliteral">&quot;adding the same indirect callsite twice?&quot;</span>);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; }</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a93bc14960cdd4eb345c64e9b79757ccf">addValNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i)</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; {</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a>(val,i);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a93bc14960cdd4eb345c64e9b79757ccf">addValNode</a>(val, node, i);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div><div class="line"><a name="l00536"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d"> 536</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">addObjNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i)</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; {</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = <a class="code" href="classSVF_1_1IRGraph.html#a4f5792216c6f38c32dac5074862ffc50">getMemObj</a>(val);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(((mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>() == i)) &amp;&amp; <span class="stringliteral">&quot;not same object id?&quot;</span>);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a06465449e58e14bfb1c3eee2c97d3242">addFIObjNode</a>(mem);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }</div><div class="line"><a name="l00543"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a38f6d0c7db935fd4e556761f96f1fa09"> 543</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a38f6d0c7db935fd4e556761f96f1fa09">addRetNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* val, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i)</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1RetPN.html">RetPN</a>(val,i);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a38f6d0c7db935fd4e556761f96f1fa09">addRetNode</a>(val, node, i);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; }</div><div class="line"><a name="l00549"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6ade5bf3edc7b6c3faafc3e5ff3d0538"> 549</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a6ade5bf3edc7b6c3faafc3e5ff3d0538">addVarargNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* val, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i)</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1VarArgPN.html">VarArgPN</a>(val,i);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#a685f1a8a35aa5dc9c298e3b0e2ccf007">addNode</a>(node,i);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; }</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a9a702ceb8ba3851daef444f1ece3a2f8">addGepValNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* curInst,<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *type, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fieldidx);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a1ac1e7752e98abff7054f4caa709260d">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="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a06465449e58e14bfb1c3eee2c97d3242">addFIObjNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6b1bb039f068ff2ab486214354df4684"> 565</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a6b1bb039f068ff2ab486214354df4684">addDummyValNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i)</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; {</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a93bc14960cdd4eb345c64e9b79757ccf">addValNode</a>(<span class="keyword">nullptr</span>, <span class="keyword">new</span> <a class="code" href="classSVF_1_1DummyValVar.html">DummyValVar</a>(i), i);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; }</div><div class="line"><a name="l00569"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3071c94ea72048d74a65a409a906af35"> 569</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a3071c94ea72048d74a65a409a906af35">addDummyObjNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* type)</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = <a class="code" href="classSVF_1_1SVFIR.html#a4ee79c74a7a2cea5c063fa598ab89532">addDummyMemObj</a>(i, type);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">addObjNode</a>(<span class="keyword">nullptr</span>, <span class="keyword">new</span> <a class="code" href="classSVF_1_1DummyObjVar.html">DummyObjVar</a>(i,mem), i);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; }</div><div class="line"><a name="l00574"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a4ee79c74a7a2cea5c063fa598ab89532"> 574</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* <a class="code" href="classSVF_1_1SVFIR.html#a4ee79c74a7a2cea5c063fa598ab89532">addDummyMemObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* type)</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a8e40c578ccdd3a108a10a191a309bd18">createDummyObj</a>(i,type);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div><div class="line"><a name="l00578"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2b532a5db0197c579b512fbcdb4d6220"> 578</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a2b532a5db0197c579b512fbcdb4d6220">addBlackholeObjNode</a>()</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">addObjNode</a>(<span class="keyword">nullptr</span>, <span class="keyword">new</span> <a class="code" href="classSVF_1_1DummyObjVar.html">DummyObjVar</a>(<a class="code" href="classSVF_1_1IRGraph.html#a3ce34b9fcb651689bce44ab48fbcdff0">getBlackHoleNode</a>(),<a class="code" href="classSVF_1_1IRGraph.html#aafe9544b07a8c40bf915613df11df48e">getBlackHoleObj</a>()), <a class="code" href="classSVF_1_1IRGraph.html#a3ce34b9fcb651689bce44ab48fbcdff0">getBlackHoleNode</a>());</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; }</div><div class="line"><a name="l00582"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aff3f3ff198e7511576484dfda7bf051b"> 582</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#aff3f3ff198e7511576484dfda7bf051b">addConstantObjNode</a>()</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; {</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">addObjNode</a>(<span class="keyword">nullptr</span>, <span class="keyword">new</span> <a class="code" href="classSVF_1_1DummyObjVar.html">DummyObjVar</a>(<a class="code" href="classSVF_1_1IRGraph.html#ac5da3a0cbe040a45d719b6f6a23aed91">getConstantNode</a>(),<a class="code" href="classSVF_1_1IRGraph.html#aceae1e4e49a1d2e63ef3d71a7e5ef3eb">getConstantObj</a>()), <a class="code" href="classSVF_1_1IRGraph.html#ac5da3a0cbe040a45d719b6f6a23aed91">getConstantNode</a>());</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div><div class="line"><a name="l00586"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2b1de62f88588b068d4eed125049ed8d"> 586</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a2b1de62f88588b068d4eed125049ed8d">addBlackholePtrNode</a>()</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">addDummyValNode</a>(<a class="code" href="classSVF_1_1IRGraph.html#a3b417ee79560fd00f4cf80906044c198">getBlkPtr</a>());</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; }</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div><div class="line"><a name="l00593"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3face8a526a33d82ef7cde7602030bc9"> 593</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a3face8a526a33d82ef7cde7602030bc9">addValNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>*, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i)</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; {</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1GenericGraph.html#a6885064afa211958af7b73f0233284e5">hasGNode</a>(i) == <span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;This NodeID clashes here. Please check NodeIDAllocator. Switch Strategy::DEBUG to SEQ or DENSE&quot;</span>);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#a685f1a8a35aa5dc9c298e3b0e2ccf007">addNode</a>(node,i);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; }</div><div class="line"><a name="l00599"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3a5d8b7f6286ec31b5a9038c88779151"> 599</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a3a5d8b7f6286ec31b5a9038c88779151">addObjNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>*, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i)</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; {</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1GenericGraph.html#a6885064afa211958af7b73f0233284e5">hasGNode</a>(i) == <span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;This NodeID clashes here. Please check NodeIDAllocator. Switch Strategy::DEBUG to SEQ or DENSE&quot;</span>);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#a685f1a8a35aa5dc9c298e3b0e2ccf007">addNode</a>(node,i);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; }</div><div class="line"><a name="l00605"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a1f63adcd679596996ee2eabf0179462f"> 605</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a1f63adcd679596996ee2eabf0179462f">addRetNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>*, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i)</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#a685f1a8a35aa5dc9c298e3b0e2ccf007">addNode</a>(node,i);</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; }</div><div class="line"><a name="l00610"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a078c01295f47bf12f1a2b8abfab8b28d"> 610</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a078c01295f47bf12f1a2b8abfab8b28d">addVarargNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>*, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i)</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#a685f1a8a35aa5dc9c298e3b0e2ccf007">addNode</a>(node,i);</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; }</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;</div><div class="line"><a name="l00616"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a"> 616</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a">addGlobalPAGEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge)</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; {</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; globSVFStmtSet.insert(edge);</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; }</div><div class="line"><a name="l00621"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a51f28f03a236b244b636ca88c5511a30"> 621</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a51f28f03a236b244b636ca88c5511a30">addCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* call)</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; callSiteSet.insert(call);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; }</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a8436a7eede7b5ff5d9b80a0c951ea729">addAddrStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#aa54b93ebf36944b548aaa74dbf8a144f">addCopyStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#af6b4b35214d0e526dee13dadbb6326d0">addPhiStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> res, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> opnd);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a7eb14738f0cf08cc8b5c623c953db4ba">addCmpStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op1, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op2, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> predict);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a955a2f93cf9eef857e40f19bc24edb2f">addBinaryOPStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op1, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op2, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> opcode);</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a8abc436992aa3b6b636084ff5f9a8ef2">addUnaryOPStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> opcode);</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a4f0d318deff3b97a4bd5e7b9d53e42fd">addBranchStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> br, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cond, std::vector&lt;const ICFGNode*&gt; succs);</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a3837804b2622baf7e6991aa993286e9e">addLoadStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a4b491e2d3eb5e041677decd73136c870">addStoreStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1IntraBlockNode.html">IntraBlockNode</a>* val);</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* <a class="code" href="classSVF_1_1SVFIR.html#a9e99fcf29016ef401f53491ec54a4053">addCallPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* <a class="code" href="classSVF_1_1SVFIR.html#a12fef4ec0537b26947eb0ab10799f29f">addRetPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a9eeab593b2f161ad268d27a7031aedbe">addGepStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls, <span class="keywordtype">bool</span> constGep);</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <a class="code" href="classSVF_1_1NormalGepStmt.html">NormalGepStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a2a851ff7011e3bd71c36be5c7198a1f4">addNormalGepStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls);</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <a class="code" href="classSVF_1_1VariantGepStmt.html">VariantGepStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#aa96e20426d3ccb8dcaab6ee1ec759b6b">addVariantGepStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst);</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>* <a class="code" href="classSVF_1_1SVFIR.html#a787dc5aff6f7a7d8ec3a7a23d9f40a7e">addThreadForkPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs);</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>* <a class="code" href="classSVF_1_1SVFIR.html#a4f64a1a266838ac72b66cca138ec57ca">addThreadJoinPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs);</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a33df5f5d9b7de3846cf973135b04f513">addBlackHoleAddrStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;};</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;</div><div class="line"><a name="l00665"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ac47d39fb505e8ed8d2c6b6b318be5f4d"> 665</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> <a class="code" href="namespaceSVF.html#ac47d39fb505e8ed8d2c6b6b318be5f4d">PAG</a>;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* SVFIR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1SVFIR_html_aa5b08d987b37d35e73de88da10a97bc4"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa5b08d987b37d35e73de88da10a97bc4">SVF::SVFIR::NodeLocationSetMap</a></div><div class="ttdeci">Map&lt; NodeLocationSet, NodeID &gt; NodeLocationSetMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00069">SVFIR.h:69</a></div></div>
69
+ <a href="SVFIR_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- SVFIR.h -- IR of SVF ---------------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * SVFIR.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: 31, 12, 2021</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef SVFIR_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define SVFIR_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="IRGraph_8h.html">Graphs/IRGraph.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html"> 43</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1IRGraph.html">IRGraph</a></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a46fadea4d08baefc8fbc1d8928da7f6b"> 46</a></span>&#160;<span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFIRBuilder.html">SVFIRBuilder</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a294bb5e174030882a385c790ab835bb3"> 47</a></span>&#160;<span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFIR.html#a294bb5e174030882a385c790ab835bb3">ExternalPAG</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a639210db7230cea2eeaf2d08c953d827"> 48</a></span>&#160;<span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1PAGBuilderFromFile.html">PAGBuilderFromFile</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac7f1349df526a5a50741e9303f3bd446"> 49</a></span>&#160;<span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1TypeBasedHeapCloning.html">TypeBasedHeapCloning</a>; </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ab4c2e6d44c679a9ba117843f2234784b"> 52</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const CallBlockNode*&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#ab4c2e6d44c679a9ba117843f2234784b">CallSiteSet</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a0f5732647f3f44ec12617029354fca11"> 53</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;const CallBlockNode*,NodeID&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a0f5732647f3f44ec12617029354fca11">CallSiteToFunPtrMap</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ae0aab46dbf1e02d7ec6f754970f485f9"> 54</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID,CallSiteSet&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#ae0aab46dbf1e02d7ec6f754970f485f9">FunPtrToCallSitesMap</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ab6abb822445c9b3f5cb2b7206042e940"> 55</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID,NodeBS&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#ab6abb822445c9b3f5cb2b7206042e940">MemObjToFieldsMap</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9"> 56</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const SVFStmt*&gt; <a class="code" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVFStmtList</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b"> 57</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const SVFVar*&gt; <a class="code" href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVFVarList</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a08a05dfa6b9734936bb92b3969dbce3b"> 58</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFVar*,PhiStmt*&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a08a05dfa6b9734936bb92b3969dbce3b">PHINodeMap</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a4541aa617c79f7922fe8e21c0f2b6b63"> 59</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*,SVFVarList&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a4541aa617c79f7922fe8e21c0f2b6b63">FunToArgsListMap</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a0321197dcaf5b00189b6dec732a799ef"> 60</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CallBlockNode*,SVFVarList&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a0321197dcaf5b00189b6dec732a799ef">CSToArgsListMap</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a8a7156b1182e8d32b3899d510514ae42"> 61</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const RetBlockNode*,const SVFVar*&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a8a7156b1182e8d32b3899d510514ae42">CSToRetMap</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ae34e5ff2f065ad752c248337d625b2e3"> 62</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*,const SVFVar*&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#ae34e5ff2f065ad752c248337d625b2e3">FunToRetMap</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac918466df08a2ab30472f3e57935f005"> 63</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*,SVFStmtSet&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#ac918466df08a2ab30472f3e57935f005">FunToPAGEdgeSetMap</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a4666dabcbeb3f40f96a0694ce2f07eb0"> 64</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const ICFGNode*,SVFStmtList&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a4666dabcbeb3f40f96a0694ce2f07eb0">ICFGNode2SVFStmtsMap</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a654236d64abc2ca95982da7b4408b52d"> 65</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeID, NodeID&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a654236d64abc2ca95982da7b4408b52d">NodeToNodeMap</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ab0d0aa216dbf7cc8f5b8030d5217e89c"> 66</a></span>&#160; <span class="keyword">typedef</span> std::pair&lt;NodeID, Size_t&gt; <a class="code" href="classSVF_1_1SVFIR.html#ab0d0aa216dbf7cc8f5b8030d5217e89c">NodeOffset</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a323e459ca43e239ddcdc8d00c6a8db6d"> 67</a></span>&#160; <span class="keyword">typedef</span> std::pair&lt;NodeID, LocationSet&gt; <a class="code" href="classSVF_1_1SVFIR.html#a323e459ca43e239ddcdc8d00c6a8db6d">NodeLocationSet</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ae683914bce36e2d387bc0bc97dfcb14d"> 68</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeOffset,NodeID&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#ae683914bce36e2d387bc0bc97dfcb14d">NodeOffsetMap</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa5b08d987b37d35e73de88da10a97bc4"> 69</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodeLocationSet,NodeID&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#aa5b08d987b37d35e73de88da10a97bc4">NodeLocationSetMap</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a52dfad2ac907db45a91752c53384fb3d"> 70</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const Value*, NodeLocationSetMap&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a52dfad2ac907db45a91752c53384fb3d">GepValueVarMap</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ab715a8e83a4ec45fb86298fef3eda95a"> 71</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;NodePair,NodeID&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#ab715a8e83a4ec45fb86298fef3eda95a">NodePairSetMap</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a86c0c23d854b034d741d9d8891debab7"> 76</a></span>&#160; ICFGNode2SVFStmtsMap <a class="code" href="classSVF_1_1SVFIR.html#a86c0c23d854b034d741d9d8891debab7">icfgNode2SVFStmtsMap</a>; </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aaae756185bbd5b7175e96f8928a989c2"> 77</a></span>&#160; ICFGNode2SVFStmtsMap <a class="code" href="classSVF_1_1SVFIR.html#aaae756185bbd5b7175e96f8928a989c2">icfgNode2PTASVFStmtsMap</a>; </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ad7bbe1abea55ed03c9b6c81891c0bd67"> 78</a></span>&#160; GepValueVarMap <a class="code" href="classSVF_1_1SVFIR.html#ad7bbe1abea55ed03c9b6c81891c0bd67">GepValObjMap</a>; </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a148b51118eeba8117e033fea84b56be8"> 79</a></span>&#160; NodeLocationSetMap <a class="code" href="classSVF_1_1SVFIR.html#a148b51118eeba8117e033fea84b56be8">GepObjVarMap</a>; </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252"> 80</a></span>&#160; MemObjToFieldsMap <a class="code" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">memToFieldsMap</a>; </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a71b51492b00e66e36266b9a76a842323"> 81</a></span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a28ea8f85b0923d00364a010c1fd4e416">SVFStmtSet</a> <a class="code" href="classSVF_1_1SVFIR.html#a71b51492b00e66e36266b9a76a842323">globSVFStmtSet</a>; </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a41abf665421dbfaef508b1eba0c91fb9"> 82</a></span>&#160; PHINodeMap <a class="code" href="classSVF_1_1SVFIR.html#a41abf665421dbfaef508b1eba0c91fb9">phiNodeMap</a>; </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a864c465fbfdbbbdcc7fc8bbe26737903"> 83</a></span>&#160; FunToArgsListMap <a class="code" href="classSVF_1_1SVFIR.html#a864c465fbfdbbbdcc7fc8bbe26737903">funArgsListMap</a>; </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa0920f5f967efdb89e23f12d31b112a2"> 84</a></span>&#160; CSToArgsListMap <a class="code" href="classSVF_1_1SVFIR.html#aa0920f5f967efdb89e23f12d31b112a2">callSiteArgsListMap</a>; </div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a11ab07f48c934f45c239393332aa60e1"> 85</a></span>&#160; CSToRetMap <a class="code" href="classSVF_1_1SVFIR.html#a11ab07f48c934f45c239393332aa60e1">callSiteRetMap</a>; </div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a4cef56f7fc77b47dc6e65c59c98551c5"> 86</a></span>&#160; FunToRetMap <a class="code" href="classSVF_1_1SVFIR.html#a4cef56f7fc77b47dc6e65c59c98551c5">funRetMap</a>; </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5"> 87</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>; </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a0a5f88766b7e11f1ea35befcbcea62dc"> 88</a></span>&#160; CallSiteToFunPtrMap <a class="code" href="classSVF_1_1SVFIR.html#a0a5f88766b7e11f1ea35befcbcea62dc">indCallSiteToFunPtrMap</a>; </div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#af9c840e4b82fe9fd9493eabaa2b52bd5"> 89</a></span>&#160; FunPtrToCallSitesMap <a class="code" href="classSVF_1_1SVFIR.html#af9c840e4b82fe9fd9493eabaa2b52bd5">funPtrToCallSitesMap</a>; </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="namespaceSVF.html#a3c2bd95727ec0d9c55c631b6617026c8">OrderedNodeSet</a> <a class="code" href="classSVF_1_1SVFIR.html#abd9f622b55839d6796ca2576f2323498">candidatePointers</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51"> 93</a></span>&#160; <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* <a class="code" href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51">icfg</a>; <span class="comment">// ICFG</span></div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac6c537688366e73bb0ae5db49c0b2450"> 94</a></span>&#160; CallSiteSet <a class="code" href="classSVF_1_1SVFIR.html#ac6c537688366e73bb0ae5db49c0b2450">callSiteSet</a>; </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#abf511f82cdbf7a6d9b6da167aee57636">SVFIR</a>(<span class="keywordtype">bool</span> buildFromFile);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a6834558be6987c91a3732154482c9567">destroy</a>();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362"> 106</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">getPAG</a>(<span class="keywordtype">bool</span> buildFromFile = <span class="keyword">false</span>)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (pag == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; pag = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFIR.html#abf511f82cdbf7a6d9b6da167aee57636">SVFIR</a>(buildFromFile);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a007c86e5d2d541d08815547a5492731e"> 114</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a007c86e5d2d541d08815547a5492731e">releaseSVFIR</a>()</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span> (pag)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; pag = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">inline</span> MemObjToFieldsMap&amp; <a class="code" href="classSVF_1_1SVFIR.html#a6f46446d667258b32ddc1ccab48f651c">getMemToFieldsMap</a>()</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">memToFieldsMap</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a77e3c407ea3990413e371589aa468963"> 127</a></span>&#160; <span class="keyword">inline</span> NodeLocationSetMap&amp; <a class="code" href="classSVF_1_1SVFIR.html#a77e3c407ea3990413e371589aa468963">getGepObjNodeMap</a>()</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a148b51118eeba8117e033fea84b56be8">GepObjVarMap</a>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da"> 132</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* <a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51">icfg</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a7990c72dd6d645d713f19ed973841484"> 137</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a3c2bd95727ec0d9c55c631b6617026c8">OrderedNodeSet</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#a7990c72dd6d645d713f19ed973841484">getAllValidPtrs</a>()</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#abd9f622b55839d6796ca2576f2323498">candidatePointers</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#af6a2c401d5c7582a4a958b1fe40838e5">initialiseCandidatePointers</a>();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3d62b2a06fe1ec531cbde12131fa31df"> 145</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1SVFIR.html#a3d62b2a06fe1ec531cbde12131fa31df">~SVFIR</a>()</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a6834558be6987c91a3732154482c9567">destroy</a>();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a2375f49c77f2285a6316e7540b051a0f">handleBlackHole</a>(<span class="keywordtype">bool</span> b);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1SVFIR.html#ad6e18f520f6b559f2304002792f6b701">getModule</a>()</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a40387a4893ae5caf58d6f786533d2f44">getModule</a>();</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#a3db2c4e2823f16d78c86596da284acd1">KindToSVFStmtSetMap</a>[kind];</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a65a4af3d6f0bfc11e31f020bb2966576"> 167</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#a65a4af3d6f0bfc11e31f020bb2966576">getPTASVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#ae0a9b81717fd834bbd109c4b69aaff9d">KindToPTASVFStmtSetMap</a>[kind];</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a63acb4d86d93ad1e88860ac839a8c654"> 172</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a63acb4d86d93ad1e88860ac839a8c654">hasSVFStmtList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> icfgNode2SVFStmtsMap.find(inst)!=icfgNode2SVFStmtsMap.end();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a0552d565633ee22abe03085134a871c0"> 176</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a0552d565633ee22abe03085134a871c0">hasPTASVFStmtList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> icfgNode2PTASVFStmtsMap.find(inst)!=icfgNode2PTASVFStmtsMap.end();</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a570ad42ad516e3fabb91a3563b618c0b"> 181</a></span>&#160; <span class="keyword">inline</span> SVFStmtList&amp; <a class="code" href="classSVF_1_1SVFIR.html#a570ad42ad516e3fabb91a3563b618c0b">getSVFStmtList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* inst)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> icfgNode2SVFStmtsMap[inst];</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#abb91ed47d5c13d0ad7eec35164e37988"> 186</a></span>&#160; <span class="keyword">inline</span> SVFStmtList&amp; <a class="code" href="classSVF_1_1SVFIR.html#abb91ed47d5c13d0ad7eec35164e37988">getPTASVFStmtList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* inst)</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">return</span> icfgNode2PTASVFStmtsMap[inst];</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6a84868ab4e2845e884fba08d82b40f6"> 191</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a6a84868ab4e2845e884fba08d82b40f6">addToSVFStmtList</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* inst, <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge)</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#adb92a92f5c878576dff26cb38eab8c8c">setICFGNode</a>(inst);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; icfgNode2SVFStmtsMap[inst].push_back(edge);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">isPTAEdge</a>())</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; icfgNode2PTASVFStmtsMap[inst].push_back(edge);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a5c5adab1f68520a304fbf70ca40f7687"> 199</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1IRGraph.html#a28ea8f85b0923d00364a010c1fd4e416">SVFStmtSet</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#a5c5adab1f68520a304fbf70ca40f7687">getGlobalSVFStmtSet</a>()</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a71b51492b00e66e36266b9a76a842323">globSVFStmtSet</a>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa530e33657f68fc2e8eae9435ce430cb"> 204</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CallSiteSet&amp; <a class="code" href="classSVF_1_1SVFIR.html#aa530e33657f68fc2e8eae9435ce430cb">getCallSiteSet</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#ac6c537688366e73bb0ae5db49c0b2450">callSiteSet</a>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a5de67390d38bfacd5b63b776a0ecbfff"> 209</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a5de67390d38bfacd5b63b776a0ecbfff">isPhiNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node)<span class="keyword"> const</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">return</span> phiNodeMap.find(node) != phiNodeMap.end();</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac359813747b4f75920c5f395ba74f410"> 215</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#ac359813747b4f75920c5f395ba74f410">hasFunArgsList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)<span class="keyword"> const</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">return</span> (funArgsListMap.find(func) != funArgsListMap.end());</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a615c056c876b59d1fd174a2ac9ade27c"> 220</a></span>&#160; <span class="keyword">inline</span> FunToArgsListMap&amp; <a class="code" href="classSVF_1_1SVFIR.html#a615c056c876b59d1fd174a2ac9ade27c">getFunArgsMap</a>()</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a864c465fbfdbbbdcc7fc8bbe26737903">funArgsListMap</a>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; }</div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa148e3e14ebad8460e32079f2f44413a"> 225</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> SVFVarList&amp; <a class="code" href="classSVF_1_1SVFIR.html#aa148e3e14ebad8460e32079f2f44413a">getFunArgsList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)<span class="keyword"> const</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; FunToArgsListMap::const_iterator it = funArgsListMap.find(func);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != funArgsListMap.end() &amp;&amp; <span class="stringliteral">&quot;this function doesn&#39;t have arguments&quot;</span>);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2a4185af81e7e10f0db74c39ee220101"> 232</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a2a4185af81e7e10f0db74c39ee220101">hasCallSiteArgsMap</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">return</span> (callSiteArgsListMap.find(cs) != callSiteArgsListMap.end());</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; }</div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a346b9300ad16ef65e3ab4e11f88193a7"> 237</a></span>&#160; <span class="keyword">inline</span> CSToArgsListMap&amp; <a class="code" href="classSVF_1_1SVFIR.html#a346b9300ad16ef65e3ab4e11f88193a7">getCallSiteArgsMap</a>()</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#aa0920f5f967efdb89e23f12d31b112a2">callSiteArgsListMap</a>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac7f90610a7b5f456c530a4419393fae5"> 242</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> SVFVarList&amp; <a class="code" href="classSVF_1_1SVFIR.html#ac7f90610a7b5f456c530a4419393fae5">getCallSiteArgsList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; CSToArgsListMap::const_iterator it = callSiteArgsListMap.find(cs);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != callSiteArgsListMap.end() &amp;&amp; <span class="stringliteral">&quot;this call site doesn&#39;t have arguments&quot;</span>);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a650b3931af337a92ffcb5dad5ab47b22"> 249</a></span>&#160; <span class="keyword">inline</span> CSToRetMap&amp; <a class="code" href="classSVF_1_1SVFIR.html#a650b3931af337a92ffcb5dad5ab47b22">getCallSiteRets</a>()</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a11ab07f48c934f45c239393332aa60e1">callSiteRetMap</a>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; }</div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a70aa4d730ef1d38ef9c46f5014465bdd"> 254</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1SVFIR.html#a70aa4d730ef1d38ef9c46f5014465bdd">getCallSiteRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; CSToRetMap::const_iterator it = callSiteRetMap.find(cs);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != callSiteRetMap.end() &amp;&amp; <span class="stringliteral">&quot;this call site doesn&#39;t have return&quot;</span>);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; }</div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a170bef1e9a07ce0449faf66706ae6e61"> 260</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a170bef1e9a07ce0449faf66706ae6e61">callsiteHasRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">return</span> callSiteRetMap.find(cs) != callSiteRetMap.end();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#abd1bb12776dc9a17863a52ce2cd31958"> 265</a></span>&#160; <span class="keyword">inline</span> FunToRetMap&amp; <a class="code" href="classSVF_1_1SVFIR.html#abd1bb12776dc9a17863a52ce2cd31958">getFunRets</a>()</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a4cef56f7fc77b47dc6e65c59c98551c5">funRetMap</a>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; }</div><div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a34e27b8bcfeaafda190dcdb9169a346f"> 270</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* <a class="code" href="classSVF_1_1SVFIR.html#a34e27b8bcfeaafda190dcdb9169a346f">getFunRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)<span class="keyword"> const</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; FunToRetMap::const_iterator it = funRetMap.find(func);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != funRetMap.end() &amp;&amp; <span class="stringliteral">&quot;this function doesn&#39;t have return&quot;</span>);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#afe8274c3b7317fccef5314662a182046"> 276</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#afe8274c3b7317fccef5314662a182046">funHasRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)<span class="keyword"> const</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> funRetMap.find(func) != funRetMap.end();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a4b4592e3187bb6583aba63b2f374754e"> 284</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1SVFIR.html#a4b4592e3187bb6583aba63b2f374754e">getFieldValNodeNum</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span> GepValObjMap.size();</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#af7a98a5eb789178594063140c85cd21f"> 288</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1SVFIR.html#af7a98a5eb789178594063140c85cd21f">getFieldObjNodeNum</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">return</span> GepObjVarMap.size();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a811c5eaeef1e52cc2d6f56ec5a76bb02"> 295</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a811c5eaeef1e52cc2d6f56ec5a76bb02">getGepValVar</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* curInst, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls)<span class="keyword"> const</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; GepValueVarMap::const_iterator iter = GepValObjMap.find(curInst);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">if</span>(iter==GepValObjMap.end()){</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">return</span> UINT_MAX;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; NodeLocationSetMap::const_iterator lit = iter-&gt;second.find(std::make_pair(base, ls));</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">if</span>(lit==iter-&gt;second.end())</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">return</span> UINT_MAX;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">return</span> lit-&gt;second;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0"> 312</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CallSiteToFunPtrMap&amp; <a class="code" href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0">getIndirectCallsites</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a0a5f88766b7e11f1ea35befcbcea62dc">indCallSiteToFunPtrMap</a>;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a533a01d01fab9e45cd1780f9bbd50b0f"> 316</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a533a01d01fab9e45cd1780f9bbd50b0f">getFunPtr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; CallSiteToFunPtrMap::const_iterator it = indCallSiteToFunPtrMap.find(cs);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=indCallSiteToFunPtrMap.end() &amp;&amp; <span class="stringliteral">&quot;indirect callsite not have a function pointer?&quot;</span>);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#abf209739a97b96ae0d1c8451fdc684e8"> 322</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CallSiteSet&amp; <a class="code" href="classSVF_1_1SVFIR.html#abf209739a97b96ae0d1c8451fdc684e8">getIndCallSites</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> funPtr)<span class="keyword"> const</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; FunPtrToCallSitesMap::const_iterator it = funPtrToCallSitesMap.find(funPtr);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=funPtrToCallSitesMap.end() &amp;&amp; <span class="stringliteral">&quot;function pointer not used at any indirect callsite?&quot;</span>);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ad44e1ef13d047f8aea8f6ddf5510bd6c"> 328</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#ad44e1ef13d047f8aea8f6ddf5510bd6c">isIndirectCallSites</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">return</span> (indCallSiteToFunPtrMap.find(cs) != indCallSiteToFunPtrMap.end());</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a9235a60e7332c8416e113e7360441d97"> 332</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a9235a60e7332c8416e113e7360441d97">isFunPtr</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">return</span> (funPtrToCallSitesMap.find(<span class="keywordtype">id</span>) != funPtrToCallSitesMap.end());</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6f41676ae91ba7fad38cc7387dd1c255"> 339</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a6f41676ae91ba7fad38cc7387dd1c255">getIntraPAGEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a6f41676ae91ba7fad38cc7387dd1c255">getIntraPAGEdge</a>(<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(src), <a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(dst), kind);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac1dbd64071f9822b0404f4ed9c8bd2cd"> 343</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#ac1dbd64071f9822b0404f4ed9c8bd2cd">getIntraPAGEdge</a>(<a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* src, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* dst, <a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> edge(src,dst,kind);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; edgeSet = <a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(kind);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; SVFStmt::SVFStmtSetTy::const_iterator it = edgeSet.find(&amp;edge);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != edgeSet.end() &amp;&amp; <span class="stringliteral">&quot;can not find pag edge&quot;</span>);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">return</span> (*it);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1"> 357</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>*<a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keyword">const</span> <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><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>* objPN = SVFUtil::dyn_cast&lt;ObjVar&gt;(node))</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(objPN);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div><div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a25b86c16d11b4d50ccc28ead525687ae"> 365</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>*<a class="code" href="classSVF_1_1SVFIR.html#a25b86c16d11b4d50ccc28ead525687ae">getObject</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>* node)<span class="keyword"> const</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>();</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">getGepObjVar</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="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">getGepObjVar</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls) ;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;</div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354"> 377</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354">getFIObjVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj)<span class="keyword"> const</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">return</span> obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</div><div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac9f860028c8cbd364720888084701628"> 381</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#ac9f860028c8cbd364720888084701628">getFIObjVar</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;ObjVar&gt;(node) &amp;&amp; <span class="stringliteral">&quot;need an object node&quot;</span>);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>* obj = SVFUtil::cast&lt;ObjVar&gt;(node);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354">getFIObjVar</a>(obj-&gt;<a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>());</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6a71d2716530607d66d9e9035199d997"> 392</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a6a71d2716530607d66d9e9035199d997">isBlkPtr</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#acba43b6e9cdf07afaf3d30351aa8df7c">SymbolTableInfo::isBlkPtr</a>(<span class="keywordtype">id</span>));</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div><div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a18ca66c199b910b15f1bfa77dcc98c30"> 396</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a18ca66c199b910b15f1bfa77dcc98c30">isNullPtr</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SymbolTableInfo.html#ad095e4a569d399cadc03ce864f61c394">SymbolTableInfo::isNullPtr</a>(<span class="keywordtype">id</span>));</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div><div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ad9895f2d075eb402390e3b01ed68e001"> 400</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#ad9895f2d075eb402390e3b01ed68e001">isBlkObjOrConstantObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1SVFIR.html#a17527c55d35ae5c18f00fd4dabe6acad">isBlkObj</a>(<span class="keywordtype">id</span>) || <a class="code" href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156">isConstantObj</a>(<span class="keywordtype">id</span>));</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a17527c55d35ae5c18f00fd4dabe6acad"> 404</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a17527c55d35ae5c18f00fd4dabe6acad">isBlkObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#ad9cdb21e20182f3bc95f04bbb97712f3">SymbolTableInfo::isBlkObj</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div><div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156"> 408</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156">isConstantObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj = <a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(obj &amp;&amp; <span class="stringliteral">&quot;not an object node?&quot;</span>);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a704b917b1e1dbaf9cd758fa9acc1083b">SymbolTableInfo::isConstantObj</a>(<span class="keywordtype">id</span>) || obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3f429b085f749ed0c8269517eb9094ae">isConstant</a>();</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; }</div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a07716ca7f769f704a80ccee1a6ad7ee2"> 414</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a07716ca7f769f704a80ccee1a6ad7ee2">isNonPointerObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</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><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FIObjVar.html">FIObjVar</a>* fiNode = SVFUtil::dyn_cast&lt;FIObjVar&gt;(node))</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">return</span> (fiNode-&gt;getMemObj()-&gt;hasPtrObj() == <span class="keyword">false</span>);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a>* gepNode = SVFUtil::dyn_cast&lt;GepObjVar&gt;(node))</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">return</span> (gepNode-&gt;getMemObj()-&gt;isNonPtrFieldObj(gepNode-&gt;getLocationSet()));</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; }</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyObjVar&gt;(node))</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;expecting a object node&quot;</span>);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">getBaseValVar</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> <a class="code" href="classSVF_1_1SVFIR.html#a8b36d077c30fb2830a253ded82413c2d">getLocationSetFromBaseNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00442"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08"> 442</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">getBaseObjVar</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(<span class="keywordtype">id</span>)-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; }</div><div class="line"><a name="l00446"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749"> 446</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* <a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;ObjVar&gt;(node) &amp;&amp; <span class="stringliteral">&quot;need an object node&quot;</span>);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</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><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">return</span> obj-&gt;<a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>();</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">getAllFieldsObjVars</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">getAllFieldsObjVars</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1SVFIR.html#a42d1e2f0213fb6e54c56cc0695b57cb0">getFieldsAfterCollapse</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00461"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0"> 461</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">addDummyValNode</a>()</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">addDummyValNode</a>(<a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;allocateValueId());</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div><div class="line"><a name="l00465"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a18388bc282c5329a837c6a273893c4fb"> 465</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a18388bc282c5329a837c6a273893c4fb">addDummyObjNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* type = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a18388bc282c5329a837c6a273893c4fb">addDummyObjNode</a>(<a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;allocateObjectId(), type);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; }</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3">isValidPointer</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId) <span class="keyword">const</span>;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a5c3b194ebada47baaccf0e9f3ab1a139">isValidTopLevelPtr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a236b4fefd16e9c793c5bd6d576290841">print</a>();</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;</div><div class="line"><a name="l00482"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523"> 482</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">addToStmt2TypeMap</a>(<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge) {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordtype">bool</span> added = <a class="code" href="classSVF_1_1IRGraph.html#a3db2c4e2823f16d78c86596da284acd1">KindToSVFStmtSetMap</a>[edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>()].insert(edge).second;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(added &amp;&amp; <span class="stringliteral">&quot;duplicated edge, not added!!!&quot;</span>);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">isPTAEdge</a>())</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a9f68ffe75e3d9457092ac2368aa08a27">totalPTAPAGEdge</a>++;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#ae0a9b81717fd834bbd109c4b69aaff9d">KindToPTASVFStmtSetMap</a>[edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>()].insert(edge);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#ac27b9eedd489f13175c010a32203abae">addFunArgs</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* arg)</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <a class="code" href="classSVF_1_1FunEntryBlockNode.html">FunEntryBlockNode</a>* funEntryBlockNode = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#ae1ef14cdda27a2062c4c454750444108">getFunEntryBlockNode</a>(fun);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; funEntryBlockNode-&gt;<a class="code" href="classSVF_1_1FunEntryBlockNode.html#ae6ebc073885c5d47f685c61097dadf20">addFormalParms</a>(arg);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; funArgsListMap[fun].push_back(arg);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div><div class="line"><a name="l00501"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a53774463f34bb8b528b179b72b48fd69"> 501</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a53774463f34bb8b528b179b72b48fd69">addFunRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* ret)</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; {</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <a class="code" href="classSVF_1_1FunExitBlockNode.html">FunExitBlockNode</a>* funExitBlockNode = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#aa33426d57dc150956902945a17a29bcb">getFunExitBlockNode</a>(fun);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; funExitBlockNode-&gt;<a class="code" href="classSVF_1_1FunExitBlockNode.html#ae1499a3ea7d5bb90dccd5d04a8b97dfc">addFormalRet</a>(ret);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; funRetMap[fun] = ret;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div><div class="line"><a name="l00508"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a5fafbfd6a30b8796b92a3a1f3409767f"> 508</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a5fafbfd6a30b8796b92a3a1f3409767f">addCallSiteArgs</a>(<a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* callBlockNode,<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* arg)</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; callBlockNode-&gt;<a class="code" href="classSVF_1_1CallBlockNode.html#a6d819186e239e68c117af16ed405da84">addActualParms</a>(arg);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; callSiteArgsListMap[callBlockNode].push_back(arg);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div><div class="line"><a name="l00514"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3c8070a1d7a6a705433b05dd633185b1"> 514</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a3c8070a1d7a6a705433b05dd633185b1">addCallSiteRets</a>(<a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a>* retBlockNode,<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* arg)</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; retBlockNode-&gt;<a class="code" href="classSVF_1_1RetBlockNode.html#ad2cd6f6589ce5464d6fbcac49f115714">addActualRet</a>(arg);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; callSiteRetMap[retBlockNode]= arg;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div><div class="line"><a name="l00520"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa91db3ebf92eacf077ae7b4d0735635b"> 520</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#aa91db3ebf92eacf077ae7b4d0735635b">addIndirectCallsites</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs,<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> funPtr)</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordtype">bool</span> added = indCallSiteToFunPtrMap.insert(std::make_pair(cs,funPtr)).second;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; funPtrToCallSitesMap[funPtr].insert(cs);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(added &amp;&amp; <span class="stringliteral">&quot;adding the same indirect callsite twice?&quot;</span>);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; }</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a93bc14960cdd4eb345c64e9b79757ccf">addValNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i)</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; {</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a>(val,i);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a93bc14960cdd4eb345c64e9b79757ccf">addValNode</a>(val, node, i);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div><div class="line"><a name="l00536"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d"> 536</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">addObjNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i)</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; {</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = <a class="code" href="classSVF_1_1IRGraph.html#a4f5792216c6f38c32dac5074862ffc50">getMemObj</a>(val);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(((mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>() == i)) &amp;&amp; <span class="stringliteral">&quot;not same object id?&quot;</span>);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a06465449e58e14bfb1c3eee2c97d3242">addFIObjNode</a>(mem);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }</div><div class="line"><a name="l00543"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a38f6d0c7db935fd4e556761f96f1fa09"> 543</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a38f6d0c7db935fd4e556761f96f1fa09">addRetNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* val, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i)</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1RetPN.html">RetPN</a>(val,i);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a38f6d0c7db935fd4e556761f96f1fa09">addRetNode</a>(val, node, i);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; }</div><div class="line"><a name="l00549"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6ade5bf3edc7b6c3faafc3e5ff3d0538"> 549</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a6ade5bf3edc7b6c3faafc3e5ff3d0538">addVarargNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* val, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i)</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1VarArgPN.html">VarArgPN</a>(val,i);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#a685f1a8a35aa5dc9c298e3b0e2ccf007">addNode</a>(node,i);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; }</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a9a702ceb8ba3851daef444f1ece3a2f8">addGepValNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* curInst,<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *type, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fieldidx);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a1ac1e7752e98abff7054f4caa709260d">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="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a06465449e58e14bfb1c3eee2c97d3242">addFIObjNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6b1bb039f068ff2ab486214354df4684"> 565</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a6b1bb039f068ff2ab486214354df4684">addDummyValNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i)</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; {</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a93bc14960cdd4eb345c64e9b79757ccf">addValNode</a>(<span class="keyword">nullptr</span>, <span class="keyword">new</span> <a class="code" href="classSVF_1_1DummyValVar.html">DummyValVar</a>(i), i);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; }</div><div class="line"><a name="l00569"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3071c94ea72048d74a65a409a906af35"> 569</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a3071c94ea72048d74a65a409a906af35">addDummyObjNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* type)</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = <a class="code" href="classSVF_1_1SVFIR.html#a4ee79c74a7a2cea5c063fa598ab89532">addDummyMemObj</a>(i, type);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">addObjNode</a>(<span class="keyword">nullptr</span>, <span class="keyword">new</span> <a class="code" href="classSVF_1_1DummyObjVar.html">DummyObjVar</a>(i,mem), i);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; }</div><div class="line"><a name="l00574"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a4ee79c74a7a2cea5c063fa598ab89532"> 574</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* <a class="code" href="classSVF_1_1SVFIR.html#a4ee79c74a7a2cea5c063fa598ab89532">addDummyMemObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* type)</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a8e40c578ccdd3a108a10a191a309bd18">createDummyObj</a>(i,type);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div><div class="line"><a name="l00578"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2b532a5db0197c579b512fbcdb4d6220"> 578</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a2b532a5db0197c579b512fbcdb4d6220">addBlackholeObjNode</a>()</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">addObjNode</a>(<span class="keyword">nullptr</span>, <span class="keyword">new</span> <a class="code" href="classSVF_1_1DummyObjVar.html">DummyObjVar</a>(<a class="code" href="classSVF_1_1IRGraph.html#a3ce34b9fcb651689bce44ab48fbcdff0">getBlackHoleNode</a>(),<a class="code" href="classSVF_1_1IRGraph.html#aafe9544b07a8c40bf915613df11df48e">getBlackHoleObj</a>()), <a class="code" href="classSVF_1_1IRGraph.html#a3ce34b9fcb651689bce44ab48fbcdff0">getBlackHoleNode</a>());</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; }</div><div class="line"><a name="l00582"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aff3f3ff198e7511576484dfda7bf051b"> 582</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#aff3f3ff198e7511576484dfda7bf051b">addConstantObjNode</a>()</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; {</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">addObjNode</a>(<span class="keyword">nullptr</span>, <span class="keyword">new</span> <a class="code" href="classSVF_1_1DummyObjVar.html">DummyObjVar</a>(<a class="code" href="classSVF_1_1IRGraph.html#ac5da3a0cbe040a45d719b6f6a23aed91">getConstantNode</a>(),<a class="code" href="classSVF_1_1IRGraph.html#aceae1e4e49a1d2e63ef3d71a7e5ef3eb">getConstantObj</a>()), <a class="code" href="classSVF_1_1IRGraph.html#ac5da3a0cbe040a45d719b6f6a23aed91">getConstantNode</a>());</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div><div class="line"><a name="l00586"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2b1de62f88588b068d4eed125049ed8d"> 586</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a2b1de62f88588b068d4eed125049ed8d">addBlackholePtrNode</a>()</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">addDummyValNode</a>(<a class="code" href="classSVF_1_1IRGraph.html#a3b417ee79560fd00f4cf80906044c198">getBlkPtr</a>());</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; }</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div><div class="line"><a name="l00593"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3face8a526a33d82ef7cde7602030bc9"> 593</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a3face8a526a33d82ef7cde7602030bc9">addValNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>*, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i)</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; {</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1GenericGraph.html#a6885064afa211958af7b73f0233284e5">hasGNode</a>(i) == <span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;This NodeID clashes here. Please check NodeIDAllocator. Switch Strategy::DEBUG to SEQ or DENSE&quot;</span>);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#a685f1a8a35aa5dc9c298e3b0e2ccf007">addNode</a>(node,i);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; }</div><div class="line"><a name="l00599"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3a5d8b7f6286ec31b5a9038c88779151"> 599</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a3a5d8b7f6286ec31b5a9038c88779151">addObjNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>*, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i)</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; {</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1GenericGraph.html#a6885064afa211958af7b73f0233284e5">hasGNode</a>(i) == <span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;This NodeID clashes here. Please check NodeIDAllocator. Switch Strategy::DEBUG to SEQ or DENSE&quot;</span>);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#a685f1a8a35aa5dc9c298e3b0e2ccf007">addNode</a>(node,i);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; }</div><div class="line"><a name="l00605"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a1f63adcd679596996ee2eabf0179462f"> 605</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a1f63adcd679596996ee2eabf0179462f">addRetNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>*, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i)</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#a685f1a8a35aa5dc9c298e3b0e2ccf007">addNode</a>(node,i);</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; }</div><div class="line"><a name="l00610"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a078c01295f47bf12f1a2b8abfab8b28d"> 610</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a078c01295f47bf12f1a2b8abfab8b28d">addVarargNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>*, <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i)</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#a685f1a8a35aa5dc9c298e3b0e2ccf007">addNode</a>(node,i);</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; }</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;</div><div class="line"><a name="l00616"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a"> 616</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a">addGlobalPAGEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* edge)</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; {</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; globSVFStmtSet.insert(edge);</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; }</div><div class="line"><a name="l00621"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a51f28f03a236b244b636ca88c5511a30"> 621</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a51f28f03a236b244b636ca88c5511a30">addCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* call)</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; callSiteSet.insert(call);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; }</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a8436a7eede7b5ff5d9b80a0c951ea729">addAddrStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#aa54b93ebf36944b548aaa74dbf8a144f">addCopyStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#af6b4b35214d0e526dee13dadbb6326d0">addPhiStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> res, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> opnd);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a7eb14738f0cf08cc8b5c623c953db4ba">addCmpStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op1, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op2, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> predict);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a955a2f93cf9eef857e40f19bc24edb2f">addBinaryOPStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op1, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op2, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> opcode);</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a8abc436992aa3b6b636084ff5f9a8ef2">addUnaryOPStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> opcode);</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a4f0d318deff3b97a4bd5e7b9d53e42fd">addBranchStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> br, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cond, std::vector&lt;const ICFGNode*&gt; succs);</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a3837804b2622baf7e6991aa993286e9e">addLoadStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a4b491e2d3eb5e041677decd73136c870">addStoreStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1IntraBlockNode.html">IntraBlockNode</a>* val);</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* <a class="code" href="classSVF_1_1SVFIR.html#a9e99fcf29016ef401f53491ec54a4053">addCallPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* <a class="code" href="classSVF_1_1SVFIR.html#a12fef4ec0537b26947eb0ab10799f29f">addRetPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a9eeab593b2f161ad268d27a7031aedbe">addGepStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls, <span class="keywordtype">bool</span> constGep);</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <a class="code" href="classSVF_1_1NormalGepStmt.html">NormalGepStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a2a851ff7011e3bd71c36be5c7198a1f4">addNormalGepStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls);</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <a class="code" href="classSVF_1_1VariantGepStmt.html">VariantGepStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#aa96e20426d3ccb8dcaab6ee1ec759b6b">addVariantGepStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst);</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>* <a class="code" href="classSVF_1_1SVFIR.html#a787dc5aff6f7a7d8ec3a7a23d9f40a7e">addThreadForkPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs);</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>* <a class="code" href="classSVF_1_1SVFIR.html#a4f64a1a266838ac72b66cca138ec57ca">addThreadJoinPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs);</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a33df5f5d9b7de3846cf973135b04f513">addBlackHoleAddrStmt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;};</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;</div><div class="line"><a name="l00665"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ac47d39fb505e8ed8d2c6b6b318be5f4d"> 665</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> <a class="code" href="namespaceSVF.html#ac47d39fb505e8ed8d2c6b6b318be5f4d">PAG</a>;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* SVFIR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1SVFIR_html_aa5b08d987b37d35e73de88da10a97bc4"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa5b08d987b37d35e73de88da10a97bc4">SVF::SVFIR::NodeLocationSetMap</a></div><div class="ttdeci">Map&lt; NodeLocationSet, NodeID &gt; NodeLocationSetMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00069">SVFIR.h:69</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1IRGraph_html_a3ce34b9fcb651689bce44ab48fbcdff0"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a3ce34b9fcb651689bce44ab48fbcdff0">SVF::IRGraph::getBlackHoleNode</a></div><div class="ttdeci">NodeID getBlackHoleNode() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00144">IRGraph.h:144</a></div></div>
71
71
  <div class="ttc" id="classSVF_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#l00197">SVFStatements.h:197</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1SVFIR_html_a64939d7ecfd8e2cf862782954a56596b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a64939d7ecfd8e2cf862782954a56596b">SVF::SVFIR::SVFVarList</a></div><div class="ttdeci">std::vector&lt; const SVFVar * &gt; SVFVarList</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00057">SVFIR.h:57</a></div></div>
@@ -78,7 +78,7 @@ $(function() {
78
78
  <div class="ttc" id="classSVF_1_1SVFIR_html_a18ca66c199b910b15f1bfa77dcc98c30"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a18ca66c199b910b15f1bfa77dcc98c30">SVF::SVFIR::isNullPtr</a></div><div class="ttdeci">bool isNullPtr(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00396">SVFIR.h:396</a></div></div>
79
79
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad9cdb21e20182f3bc95f04bbb97712f3"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad9cdb21e20182f3bc95f04bbb97712f3">SVF::SymbolTableInfo::isBlkObj</a></div><div class="ttdeci">static bool isBlkObj(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00198">SymbolTableInfo.h:198</a></div></div>
80
80
  <div class="ttc" id="classSVF_1_1FunExitBlockNode_html_ae1499a3ea7d5bb90dccd5d04a8b97dfc"><div class="ttname"><a href="classSVF_1_1FunExitBlockNode.html#ae1499a3ea7d5bb90dccd5d04a8b97dfc">SVF::FunExitBlockNode::addFormalRet</a></div><div class="ttdeci">void addFormalRet(const SVFVar *fr)</div><div class="ttdoc">Add actual return parameter. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00330">ICFGNode.h:330</a></div></div>
81
- <div class="ttc" id="classSVF_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#l00421">SymbolTableInfo.h:421</a></div></div>
81
+ <div class="ttc" id="classSVF_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#l00418">SymbolTableInfo.h:418</a></div></div>
82
82
  <div class="ttc" id="classSVF_1_1SVFIR_html_a6a84868ab4e2845e884fba08d82b40f6"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a6a84868ab4e2845e884fba08d82b40f6">SVF::SVFIR::addToSVFStmtList</a></div><div class="ttdeci">void addToSVFStmtList(ICFGNode *inst, SVFStmt *edge)</div><div class="ttdoc">Add a SVFStmt into instruction map. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00191">SVFIR.h:191</a></div></div>
83
83
  <div class="ttc" id="classSVF_1_1ValVar_html"><div class="ttname"><a href="classSVF_1_1ValVar.html">SVF::ValVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00273">SVFVariables.h:273</a></div></div>
84
84
  <div class="ttc" id="classSVF_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#l00850">SVFStatements.h:850</a></div></div>
@@ -133,7 +133,7 @@ $(function() {
133
133
  <div class="ttc" id="classSVF_1_1SVFIR_html_a37cfa2aa4e7b98ef9dc8179f581a2362"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVF::SVFIR::getPAG</a></div><div class="ttdeci">static SVFIR * getPAG(bool buildFromFile=false)</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00106">SVFIR.h:106</a></div></div>
134
134
  <div class="ttc" id="classSVF_1_1SVFIR_html_aff3f3ff198e7511576484dfda7bf051b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aff3f3ff198e7511576484dfda7bf051b">SVF::SVFIR::addConstantObjNode</a></div><div class="ttdeci">NodeID addConstantObjNode()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00582">SVFIR.h:582</a></div></div>
135
135
  <div class="ttc" id="classSVF_1_1SVFIR_html_a787dc5aff6f7a7d8ec3a7a23d9f40a7e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a787dc5aff6f7a7d8ec3a7a23d9f40a7e">SVF::SVFIR::addThreadForkPE</a></div><div class="ttdeci">TDForkPE * addThreadForkPE(NodeID src, NodeID dst, const CallBlockNode *cs)</div><div class="ttdoc">Add Thread fork edge for parameter passing. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00269">SVFIR.cpp:269</a></div></div>
136
- <div class="ttc" id="classSVF_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#l00693">SVFVariables.h:693</a></div></div>
136
+ <div class="ttc" id="classSVF_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#l00699">SVFVariables.h:699</a></div></div>
137
137
  <div class="ttc" id="classSVF_1_1SVFIR_html_ae34e5ff2f065ad752c248337d625b2e3"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae34e5ff2f065ad752c248337d625b2e3">SVF::SVFIR::FunToRetMap</a></div><div class="ttdeci">Map&lt; const SVFFunction *, const SVFVar * &gt; FunToRetMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00062">SVFIR.h:62</a></div></div>
138
138
  <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
139
139
  <div class="ttc" id="classSVF_1_1SVFIR_html_af6b4b35214d0e526dee13dadbb6326d0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af6b4b35214d0e526dee13dadbb6326d0">SVF::SVFIR::addPhiStmt</a></div><div class="ttdeci">PhiStmt * addPhiStmt(NodeID res, NodeID opnd)</div><div class="ttdoc">Add phi node information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00087">SVFIR.cpp:87</a></div></div>
@@ -173,6 +173,7 @@ $(function() {
173
173
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a6885064afa211958af7b73f0233284e5"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a6885064afa211958af7b73f0233284e5">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::hasGNode</a></div><div class="ttdeci">bool hasGNode(NodeID id) const</div><div class="ttdoc">Has a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00395">GenericGraph.h:395</a></div></div>
174
174
  <div class="ttc" id="classSVF_1_1SVFIR_html_ad44e1ef13d047f8aea8f6ddf5510bd6c"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad44e1ef13d047f8aea8f6ddf5510bd6c">SVF::SVFIR::isIndirectCallSites</a></div><div class="ttdeci">bool isIndirectCallSites(const CallBlockNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00328">SVFIR.h:328</a></div></div>
175
175
  <div class="ttc" id="classSVF_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#l00687">SVFIR.cpp:687</a></div></div>
176
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a007c86e5d2d541d08815547a5492731e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a007c86e5d2d541d08815547a5492731e">SVF::SVFIR::releaseSVFIR</a></div><div class="ttdeci">static void releaseSVFIR()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00114">SVFIR.h:114</a></div></div>
176
177
  <div class="ttc" id="namespaceSVF_html_ac47d39fb505e8ed8d2c6b6b318be5f4d"><div class="ttname"><a href="namespaceSVF.html#ac47d39fb505e8ed8d2c6b6b318be5f4d">SVF::PAG</a></div><div class="ttdeci">SVFIR PAG</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00665">SVFIR.h:665</a></div></div>
177
178
  <div class="ttc" id="classSVF_1_1SVFIR_html_a8a7156b1182e8d32b3899d510514ae42"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a8a7156b1182e8d32b3899d510514ae42">SVF::SVFIR::CSToRetMap</a></div><div class="ttdeci">Map&lt; const RetBlockNode *, const SVFVar * &gt; CSToRetMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00061">SVFIR.h:61</a></div></div>
178
179
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html">SVF::SVFIRBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00044">SVFIRBuilder.h:44</a></div></div>
@@ -200,12 +201,13 @@ $(function() {
200
201
  <div class="ttc" id="classSVF_1_1ICFG_html_aa33426d57dc150956902945a17a29bcb"><div class="ttname"><a href="classSVF_1_1ICFG.html#aa33426d57dc150956902945a17a29bcb">SVF::ICFG::getFunExitBlockNode</a></div><div class="ttdeci">FunExitBlockNode * getFunExitBlockNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function exit node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00239">ICFG.cpp:239</a></div></div>
201
202
  <div class="ttc" id="IRGraph_8h_html"><div class="ttname"><a href="IRGraph_8h.html">IRGraph.h</a></div></div>
202
203
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a40387a4893ae5caf58d6f786533d2f44"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a40387a4893ae5caf58d6f786533d2f44">SVF::SymbolTableInfo::getModule</a></div><div class="ttdeci">SVFModule * getModule()</div><div class="ttdoc">Module. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00158">SymbolTableInfo.h:158</a></div></div>
204
+ <div class="ttc" id="classSVF_1_1GepObjVar_html"><div class="ttname"><a href="classSVF_1_1GepObjVar.html">SVF::GepObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00451">SVFVariables.h:451</a></div></div>
203
205
  <div class="ttc" id="classSVF_1_1SVFIR_html_a3face8a526a33d82ef7cde7602030bc9"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3face8a526a33d82ef7cde7602030bc9">SVF::SVFIR::addValNode</a></div><div class="ttdeci">NodeID addValNode(const Value *, SVFVar *node, NodeID i)</div><div class="ttdoc">Add a value (pointer) node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00593">SVFIR.h:593</a></div></div>
204
206
  <div class="ttc" id="classSVF_1_1SVFIR_html_a3c8070a1d7a6a705433b05dd633185b1"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3c8070a1d7a6a705433b05dd633185b1">SVF::SVFIR::addCallSiteRets</a></div><div class="ttdeci">void addCallSiteRets(RetBlockNode *retBlockNode, const SVFVar *arg)</div><div class="ttdoc">Add callsite returns. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00514">SVFIR.h:514</a></div></div>
205
207
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00059">SymbolTableInfo.cpp:59</a></div></div>
206
208
  <div class="ttc" id="classSVF_1_1SVFIR_html_a63acb4d86d93ad1e88860ac839a8c654"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a63acb4d86d93ad1e88860ac839a8c654">SVF::SVFIR::hasSVFStmtList</a></div><div class="ttdeci">bool hasSVFStmtList(const ICFGNode *inst) const</div><div class="ttdoc">Whether this instruction has SVFIR Edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00172">SVFIR.h:172</a></div></div>
207
209
  <div class="ttc" id="classSVF_1_1FunExitBlockNode_html"><div class="ttname"><a href="classSVF_1_1FunExitBlockNode.html">SVF::FunExitBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00308">ICFGNode.h:308</a></div></div>
208
- <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a8e40c578ccdd3a108a10a191a309bd18"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a8e40c578ccdd3a108a10a191a309bd18">SVF::SymbolTableInfo::createDummyObj</a></div><div class="ttdeci">const MemObj * createDummyObj(SymID symId, const Type *type)</div><div class="ttdoc">Can only be invoked by SVFIR::addDummyNode() when creaing SVFIR from file. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00473">SymbolTableInfo.cpp:473</a></div></div>
210
+ <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a8e40c578ccdd3a108a10a191a309bd18"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a8e40c578ccdd3a108a10a191a309bd18">SVF::SymbolTableInfo::createDummyObj</a></div><div class="ttdeci">const MemObj * createDummyObj(SymID symId, const Type *type)</div><div class="ttdoc">Can only be invoked by SVFIR::addDummyNode() when creaing SVFIR from file. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00317">SymbolTableInfo.cpp:317</a></div></div>
209
211
  <div class="ttc" id="classSVF_1_1SVFIR_html_a0552d565633ee22abe03085134a871c0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a0552d565633ee22abe03085134a871c0">SVF::SVFIR::hasPTASVFStmtList</a></div><div class="ttdeci">bool hasPTASVFStmtList(const ICFGNode *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00176">SVFIR.h:176</a></div></div>
210
212
  <div class="ttc" id="classSVF_1_1SVFIR_html_ac359813747b4f75920c5f395ba74f410"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac359813747b4f75920c5f395ba74f410">SVF::SVFIR::hasFunArgsList</a></div><div class="ttdeci">bool hasFunArgsList(const SVFFunction *func) const</div><div class="ttdoc">Function has arguments list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00215">SVFIR.h:215</a></div></div>
211
213
  <div class="ttc" id="classSVF_1_1SVFIR_html_aa148e3e14ebad8460e32079f2f44413a"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa148e3e14ebad8460e32079f2f44413a">SVF::SVFIR::getFunArgsList</a></div><div class="ttdeci">const SVFVarList &amp; getFunArgsList(const SVFFunction *func) const</div><div class="ttdoc">Get function arguments list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00225">SVFIR.h:225</a></div></div>
@@ -213,13 +215,13 @@ $(function() {
213
215
  <div class="ttc" id="classSVF_1_1SVFIR_html_a148b51118eeba8117e033fea84b56be8"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a148b51118eeba8117e033fea84b56be8">SVF::SVFIR::GepObjVarMap</a></div><div class="ttdeci">NodeLocationSetMap 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#l00079">SVFIR.h:79</a></div></div>
214
216
  <div class="ttc" id="classSVF_1_1SVFIR_html_a0321197dcaf5b00189b6dec732a799ef"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a0321197dcaf5b00189b6dec732a799ef">SVF::SVFIR::CSToArgsListMap</a></div><div class="ttdeci">Map&lt; const CallBlockNode *, SVFVarList &gt; CSToArgsListMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00060">SVFIR.h:60</a></div></div>
215
217
  <div class="ttc" id="classSVF_1_1SVFIR_html_aaae756185bbd5b7175e96f8928a989c2"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aaae756185bbd5b7175e96f8928a989c2">SVF::SVFIR::icfgNode2PTASVFStmtsMap</a></div><div class="ttdeci">ICFGNode2SVFStmtsMap icfgNode2PTASVFStmtsMap</div><div class="ttdoc">Map an ICFGNode to its PointerAnalysis related SVFStmts. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00077">SVFIR.h:77</a></div></div>
216
- <div class="ttc" id="classSVF_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#l00527">SVFVariables.h:527</a></div></div>
218
+ <div class="ttc" id="classSVF_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#l00533">SVFVariables.h:533</a></div></div>
217
219
  <div class="ttc" id="classSVF_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#l00902">SVFStatements.h:902</a></div></div>
218
220
  <div class="ttc" id="classSVF_1_1SVFIR_html_ad9895f2d075eb402390e3b01ed68e001"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad9895f2d075eb402390e3b01ed68e001">SVF::SVFIR::isBlkObjOrConstantObj</a></div><div class="ttdeci">bool isBlkObjOrConstantObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00400">SVFIR.h:400</a></div></div>
219
221
  <div class="ttc" id="classSVF_1_1SVFIR_html_a5fafbfd6a30b8796b92a3a1f3409767f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5fafbfd6a30b8796b92a3a1f3409767f">SVF::SVFIR::addCallSiteArgs</a></div><div class="ttdeci">void addCallSiteArgs(CallBlockNode *callBlockNode, const SVFVar *arg)</div><div class="ttdoc">Add callsite arguments. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00508">SVFIR.h:508</a></div></div>
220
222
  <div class="ttc" id="classSVF_1_1SVFIR_html_a2a851ff7011e3bd71c36be5c7198a1f4"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2a851ff7011e3bd71c36be5c7198a1f4">SVF::SVFIR::addNormalGepStmt</a></div><div class="ttdeci">NormalGepStmt * addNormalGepStmt(NodeID src, NodeID dst, const LocationSet &amp;ls)</div><div class="ttdoc">Add Offset(Gep) edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00327">SVFIR.cpp:327</a></div></div>
221
223
  <div class="ttc" id="classSVF_1_1SVFIR_html_ae683914bce36e2d387bc0bc97dfcb14d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae683914bce36e2d387bc0bc97dfcb14d">SVF::SVFIR::NodeOffsetMap</a></div><div class="ttdeci">Map&lt; NodeOffset, NodeID &gt; NodeOffsetMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00068">SVFIR.h:68</a></div></div>
222
- <div class="ttc" id="classSVF_1_1RetPN_html"><div class="ttname"><a href="classSVF_1_1RetPN.html">SVF::RetPN</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00574">SVFVariables.h:574</a></div></div>
224
+ <div class="ttc" id="classSVF_1_1RetPN_html"><div class="ttname"><a href="classSVF_1_1RetPN.html">SVF::RetPN</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00580">SVFVariables.h:580</a></div></div>
223
225
  <div class="ttc" id="classSVF_1_1SVFIR_html_a654236d64abc2ca95982da7b4408b52d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a654236d64abc2ca95982da7b4408b52d">SVF::SVFIR::NodeToNodeMap</a></div><div class="ttdeci">Map&lt; NodeID, NodeID &gt; NodeToNodeMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00065">SVFIR.h:65</a></div></div>
224
226
  <div class="ttc" id="classSVF_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#l00458">SVFIR.cpp:458</a></div></div>
225
227
  <div class="ttc" id="classSVF_1_1SVFIR_html_a18388bc282c5329a837c6a273893c4fb"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a18388bc282c5329a837c6a273893c4fb">SVF::SVFIR::addDummyObjNode</a></div><div class="ttdeci">NodeID addDummyObjNode(const Type *type=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00465">SVFIR.h:465</a></div></div>
@@ -234,7 +236,7 @@ $(function() {
234
236
  <div class="ttc" id="classSVF_1_1FunEntryBlockNode_html_ae6ebc073885c5d47f685c61097dadf20"><div class="ttname"><a href="classSVF_1_1FunEntryBlockNode.html#ae6ebc073885c5d47f685c61097dadf20">SVF::FunEntryBlockNode::addFormalParms</a></div><div class="ttdeci">void addFormalParms(const SVFVar *fp)</div><div class="ttdoc">Add formal parameters. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00274">ICFGNode.h:274</a></div></div>
235
237
  <div class="ttc" id="classSVF_1_1SVFIR_html_a9e99fcf29016ef401f53491ec54a4053"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a9e99fcf29016ef401f53491ec54a4053">SVF::SVFIR::addCallPE</a></div><div class="ttdeci">CallPE * addCallPE(NodeID src, NodeID dst, const CallBlockNode *cs)</div><div class="ttdoc">Add Call edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00222">SVFIR.cpp:222</a></div></div>
236
238
  <div class="ttc" id="classSVF_1_1SVFIR_html_a650b3931af337a92ffcb5dad5ab47b22"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a650b3931af337a92ffcb5dad5ab47b22">SVF::SVFIR::getCallSiteRets</a></div><div class="ttdeci">CSToRetMap &amp; getCallSiteRets()</div><div class="ttdoc">Get callsite return. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00249">SVFIR.h:249</a></div></div>
237
- <div class="ttc" id="classSVF_1_1MemObj_html_a3f429b085f749ed0c8269517eb9094ae"><div class="ttname"><a href="classSVF_1_1MemObj.html#a3f429b085f749ed0c8269517eb9094ae">SVF::MemObj::isConstant</a></div><div class="ttdeci">bool isConstant() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00883">SymbolTableInfo.cpp:883</a></div></div>
239
+ <div class="ttc" id="classSVF_1_1MemObj_html_a3f429b085f749ed0c8269517eb9094ae"><div class="ttname"><a href="classSVF_1_1MemObj.html#a3f429b085f749ed0c8269517eb9094ae">SVF::MemObj::isConstant</a></div><div class="ttdeci">bool isConstant() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00715">SymbolTableInfo.cpp:715</a></div></div>
238
240
  <div class="ttc" id="classSVF_1_1SVFIR_html_ac6c537688366e73bb0ae5db49c0b2450"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac6c537688366e73bb0ae5db49c0b2450">SVF::SVFIR::callSiteSet</a></div><div class="ttdeci">CallSiteSet callSiteSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00094">SVFIR.h:94</a></div></div>
239
241
  <div class="ttc" id="classSVF_1_1SVFIR_html_a864c465fbfdbbbdcc7fc8bbe26737903"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a864c465fbfdbbbdcc7fc8bbe26737903">SVF::SVFIR::funArgsListMap</a></div><div class="ttdeci">FunToArgsListMap funArgsListMap</div><div class="ttdoc">Map a function to a list of all its formal parameters. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00083">SVFIR.h:83</a></div></div>
240
242
  <div class="ttc" id="classSVF_1_1SVFIR_html_a77e3c407ea3990413e371589aa468963"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a77e3c407ea3990413e371589aa468963">SVF::SVFIR::getGepObjNodeMap</a></div><div class="ttdeci">NodeLocationSetMap &amp; getGepObjNodeMap()</div><div class="ttdoc">Return GepObjVarMap. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00127">SVFIR.h:127</a></div></div>
@@ -248,14 +250,13 @@ $(function() {
248
250
  <div class="ttc" id="namespaceSVF_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="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
249
251
  <div class="ttc" id="classSVF_1_1NormalGepStmt_html"><div class="ttname"><a href="classSVF_1_1NormalGepStmt.html">SVF::NormalGepStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00709">SVFStatements.h:709</a></div></div>
250
252
  <div class="ttc" id="classSVF_1_1SVFIR_html_a9a702ceb8ba3851daef444f1ece3a2f8"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a9a702ceb8ba3851daef444f1ece3a2f8">SVF::SVFIR::addGepValNode</a></div><div class="ttdeci">NodeID addGepValNode(const Value *curInst, const Value *val, const LocationSet &amp;ls, NodeID i, const Type *type, u32_t fieldidx)</div><div class="ttdoc">Add a temp field value node, this method can only invoked by getGepValVar. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00369">SVFIR.cpp:369</a></div></div>
251
- <div class="ttc" id="classSVF_1_1VarArgPN_html"><div class="ttname"><a href="classSVF_1_1VarArgPN.html">SVF::VarArgPN</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00613">SVFVariables.h:613</a></div></div>
253
+ <div class="ttc" id="classSVF_1_1VarArgPN_html"><div class="ttname"><a href="classSVF_1_1VarArgPN.html">SVF::VarArgPN</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00619">SVFVariables.h:619</a></div></div>
252
254
  <div class="ttc" id="classSVF_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="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00093">SVFIR.h:93</a></div></div>
253
- <div class="ttc" id="classSVF_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#l00451">SymbolTableInfo.h:451</a></div></div>
255
+ <div class="ttc" id="classSVF_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#l00448">SymbolTableInfo.h:448</a></div></div>
254
256
  <div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a2bd3ca30fc9669d9a0327544bdb4557b"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">SVF::NodeIDAllocator::get</a></div><div class="ttdeci">static NodeIDAllocator * get(void)</div><div class="ttdoc">Return (singleton) allocator. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00025">NodeIDAllocator.cpp:25</a></div></div>
255
- <div class="ttc" id="classSVF_1_1GepObjPN_html"><div class="ttname"><a href="classSVF_1_1GepObjPN.html">SVF::GepObjPN</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00451">SVFVariables.h:451</a></div></div>
256
257
  <div class="ttc" id="classSVF_1_1ICFG_html_ae1ef14cdda27a2062c4c454750444108"><div class="ttname"><a href="classSVF_1_1ICFG.html#ae1ef14cdda27a2062c4c454750444108">SVF::ICFG::getFunEntryBlockNode</a></div><div class="ttdeci">FunEntryBlockNode * getFunEntryBlockNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function entry node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00230">ICFG.cpp:230</a></div></div>
257
258
  <div class="ttc" id="classSVF_1_1SVFIR_html_a7eb14738f0cf08cc8b5c623c953db4ba"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7eb14738f0cf08cc8b5c623c953db4ba">SVF::SVFIR::addCmpStmt</a></div><div class="ttdeci">CmpStmt * addCmpStmt(NodeID op1, NodeID op2, NodeID dst, u32_t predict)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00108">SVFIR.cpp:108</a></div></div>
258
- <div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00093">LocationSet.h:93</a></div></div>
259
+ <div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00072">LocationSet.h:72</a></div></div>
259
260
  <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00086">SVFBasicTypes.h:86</a></div></div>
260
261
  <div class="ttc" id="namespaceSVF_html_a3c2bd95727ec0d9c55c631b6617026c8"><div class="ttname"><a href="namespaceSVF.html#a3c2bd95727ec0d9c55c631b6617026c8">SVF::OrderedNodeSet</a></div><div class="ttdeci">OrderedSet&lt; NodeID &gt; OrderedNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00113">SVFBasicTypes.h:113</a></div></div>
261
262
  <div class="ttc" id="classSVF_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#l00185">SVFIR.cpp:185</a></div></div>
@@ -268,7 +269,7 @@ $(function() {
268
269
  <div class="ttc" id="classSVF_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#l00082">SVFIR.h:82</a></div></div>
269
270
  <div class="ttc" id="classSVF_1_1SVFIR_html_a170bef1e9a07ce0449faf66706ae6e61"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a170bef1e9a07ce0449faf66706ae6e61">SVF::SVFIR::callsiteHasRet</a></div><div class="ttdeci">bool callsiteHasRet(const RetBlockNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00260">SVFIR.h:260</a></div></div>
270
271
  <div class="ttc" id="classSVF_1_1SVFIR_html_ae0aab46dbf1e02d7ec6f754970f485f9"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae0aab46dbf1e02d7ec6f754970f485f9">SVF::SVFIR::FunPtrToCallSitesMap</a></div><div class="ttdeci">Map&lt; NodeID, CallSiteSet &gt; FunPtrToCallSitesMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00054">SVFIR.h:54</a></div></div>
271
- <div class="ttc" id="classSVF_1_1DummyValVar_html"><div class="ttname"><a href="classSVF_1_1DummyValVar.html">SVF::DummyValVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00654">SVFVariables.h:654</a></div></div>
272
+ <div class="ttc" id="classSVF_1_1DummyValVar_html"><div class="ttname"><a href="classSVF_1_1DummyValVar.html">SVF::DummyValVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00660">SVFVariables.h:660</a></div></div>
272
273
  <div class="ttc" id="classSVF_1_1IRGraph_html_a3db2c4e2823f16d78c86596da284acd1"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a3db2c4e2823f16d78c86596da284acd1">SVF::IRGraph::KindToSVFStmtSetMap</a></div><div class="ttdeci">SVFStmt::KindToSVFStmtMapTy KindToSVFStmtSetMap</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00055">IRGraph.h:55</a></div></div>
273
274
  <div class="ttc" id="classSVF_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#l00429">SVFStatements.h:429</a></div></div>
274
275
  <div class="ttc" id="classSVF_1_1SVFIR_html_a07716ca7f769f704a80ccee1a6ad7ee2"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a07716ca7f769f704a80ccee1a6ad7ee2">SVF::SVFIR::isNonPointerObj</a></div><div class="ttdeci">bool isNonPointerObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00414">SVFIR.h:414</a></div></div>
@@ -277,7 +278,6 @@ $(function() {
277
278
  <div class="ttc" id="classSVF_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#l00548">SVFIR.cpp:548</a></div></div>
278
279
  <div class="ttc" id="classSVF_1_1CallBlockNode_html"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html">SVF::CallBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00364">ICFGNode.h:364</a></div></div>
279
280
  <div class="ttc" id="classSVF_1_1SVFIR_html_a12fef4ec0537b26947eb0ab10799f29f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a12fef4ec0537b26947eb0ab10799f29f">SVF::SVFIR::addRetPE</a></div><div class="ttdeci">RetPE * addRetPE(NodeID src, NodeID dst, const CallBlockNode *cs)</div><div class="ttdoc">Add Return edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00240">SVFIR.cpp:240</a></div></div>
280
- <div class="ttc" id="classSVF_1_1SVFIR_html_a6dd18b030ae6fee4b4a8260ce9fd97fd"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a6dd18b030ae6fee4b4a8260ce9fd97fd">SVF::SVFIR::releasePAG</a></div><div class="ttdeci">static void releasePAG()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00114">SVFIR.h:114</a></div></div>
281
281
  <div class="ttc" id="classSVF_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#l00387">GenericGraph.h:387</a></div></div>
282
282
  <div class="ttc" id="classSVF_1_1SVFIR_html_a2d2131128ceb3362b5dc89317cfd88a0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0">SVF::SVFIR::getIndirectCallsites</a></div><div class="ttdeci">const CallSiteToFunPtrMap &amp; getIndirectCallsites() const</div><div class="ttdoc">Add/get indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00312">SVFIR.h:312</a></div></div>
283
283
  <div class="ttc" id="classSVF_1_1SVFIR_html_a4f0d318deff3b97a4bd5e7b9d53e42fd"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a4f0d318deff3b97a4bd5e7b9d53e42fd">SVF::SVFIR::addBranchStmt</a></div><div class="ttdeci">BranchStmt * addBranchStmt(NodeID br, NodeID cond, std::vector&lt; const ICFGNode *&gt; succs)</div><div class="ttdoc">Add BranchStmt. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00167">SVFIR.cpp:167</a></div></div>