svf-tools 1.0.321 → 1.0.322

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 (319) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
  4. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +5 -5
  5. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
  6. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
  8. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
  10. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -2
  11. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +3 -3
  12. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +9 -9
  14. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +7 -7
  15. package/SVF-doxygen/html/html/MemRegion_8h_source.html +11 -11
  16. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +9 -9
  17. package/SVF-doxygen/html/html/MemSSA_8h_source.html +11 -11
  18. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +2 -2
  21. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
  22. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
  23. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +2 -2
  24. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +1 -1
  25. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
  26. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +4 -4
  27. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +33 -33
  28. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +31 -31
  29. package/SVF-doxygen/html/html/SVFIR_8h_source.html +32 -32
  30. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +14 -14
  31. package/SVF-doxygen/html/html/SVFStatements_8h.html +11 -11
  32. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +72 -72
  33. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +9 -9
  34. package/SVF-doxygen/html/html/SVFVariables_8h.html +9 -9
  35. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +66 -66
  36. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
  38. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +8 -8
  39. package/SVF-doxygen/html/html/VFGNode_8h_source.html +11 -11
  40. package/SVF-doxygen/html/html/VFG_8cpp_source.html +16 -16
  41. package/SVF-doxygen/html/html/VFG_8h_source.html +21 -21
  42. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
  43. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
  44. package/SVF-doxygen/html/html/annotated.html +21 -21
  45. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +1 -1
  46. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +136 -0
  47. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +498 -0
  48. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.png +0 -0
  49. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode-members.html +1 -1
  50. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +7 -7
  51. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
  52. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +3 -3
  53. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +2 -2
  54. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +154 -0
  55. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +754 -0
  56. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.png +0 -0
  57. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +169 -0
  58. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +537 -0
  59. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.png +0 -0
  60. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +169 -0
  61. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +547 -0
  62. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.png +0 -0
  63. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +172 -0
  64. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +556 -0
  65. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.png +0 -0
  66. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +74 -22
  67. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +477 -93
  68. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.png +0 -0
  69. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
  70. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +5 -5
  71. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  72. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
  73. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +3 -3
  74. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +56 -21
  75. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +251 -89
  76. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.png +0 -0
  77. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode-members.html +1 -1
  78. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +7 -7
  79. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  80. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +8 -8
  81. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +18 -18
  82. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +167 -0
  83. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +531 -0
  84. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.png +0 -0
  85. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +165 -0
  86. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +502 -0
  87. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.png +0 -0
  88. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +167 -0
  89. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +577 -0
  90. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.png +0 -0
  91. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
  92. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +2 -2
  93. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +2 -2
  94. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +3 -3
  95. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +6 -6
  96. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.png +0 -0
  97. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +23 -22
  98. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  99. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN-members.html +4 -4
  100. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +37 -37
  101. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.png +0 -0
  102. package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +56 -22
  103. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +257 -118
  104. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.png +0 -0
  105. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode-members.html +1 -1
  106. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +7 -7
  107. package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +170 -0
  108. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +752 -0
  109. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.png +0 -0
  110. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +3 -3
  111. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +8 -8
  112. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +18 -18
  113. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +8 -8
  114. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +18 -18
  115. package/SVF-doxygen/html/html/classSVF_1_1LoadMU-members.html +3 -3
  116. package/SVF-doxygen/html/html/classSVF_1_1LoadMU.html +20 -20
  117. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +56 -21
  118. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +251 -89
  119. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.png +0 -0
  120. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode-members.html +1 -1
  121. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +7 -7
  122. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +8 -8
  123. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +63 -63
  124. package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +8 -8
  125. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +71 -71
  126. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +3 -3
  127. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.png +0 -0
  128. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt-members.html +141 -0
  129. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +647 -0
  130. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.png +0 -0
  131. package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +165 -0
  132. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +644 -0
  133. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.png +0 -0
  134. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +10 -10
  135. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +2 -2
  136. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +73 -22
  137. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +445 -98
  138. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.png +0 -0
  139. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +8 -8
  140. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +9 -9
  141. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +32 -32
  142. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +9 -9
  143. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +26 -26
  144. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +14 -14
  145. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +142 -142
  146. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +11 -11
  147. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +137 -137
  148. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +7 -7
  149. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.png +0 -0
  150. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +13 -13
  151. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.png +0 -0
  152. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  153. package/SVF-doxygen/html/html/classSVF_1_1StoreCHI-members.html +3 -3
  154. package/SVF-doxygen/html/html/classSVF_1_1StoreCHI.html +20 -20
  155. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +56 -21
  156. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +258 -89
  157. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.png +0 -0
  158. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode-members.html +1 -1
  159. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +7 -7
  160. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +2 -2
  161. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +20 -20
  162. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +146 -0
  163. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +792 -0
  164. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.png +0 -0
  165. package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +9 -9
  166. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +69 -69
  167. package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +163 -0
  168. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +521 -0
  169. package/SVF-doxygen/html/html/classSVF_1_1ValVar.png +0 -0
  170. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt-members.html +138 -0
  171. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +542 -0
  172. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.png +0 -0
  173. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +1 -1
  174. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
  175. package/SVF-doxygen/html/html/classes.html +18 -18
  176. package/SVF-doxygen/html/html/functions_a.html +39 -39
  177. package/SVF-doxygen/html/html/functions_b.html +2 -2
  178. package/SVF-doxygen/html/html/functions_c.html +34 -34
  179. package/SVF-doxygen/html/html/functions_d.html +4 -4
  180. package/SVF-doxygen/html/html/functions_f.html +3 -3
  181. package/SVF-doxygen/html/html/functions_func.html +38 -38
  182. package/SVF-doxygen/html/html/functions_func_b.html +2 -2
  183. package/SVF-doxygen/html/html/functions_func_c.html +30 -30
  184. package/SVF-doxygen/html/html/functions_func_d.html +4 -4
  185. package/SVF-doxygen/html/html/functions_func_f.html +2 -2
  186. package/SVF-doxygen/html/html/functions_func_g.html +49 -49
  187. package/SVF-doxygen/html/html/functions_func_l.html +3 -3
  188. package/SVF-doxygen/html/html/functions_func_n.html +2 -2
  189. package/SVF-doxygen/html/html/functions_func_o.html +15 -15
  190. package/SVF-doxygen/html/html/functions_func_p.html +2 -2
  191. package/SVF-doxygen/html/html/functions_func_s.html +4 -4
  192. package/SVF-doxygen/html/html/functions_func_t.html +20 -20
  193. package/SVF-doxygen/html/html/functions_func_u.html +2 -2
  194. package/SVF-doxygen/html/html/functions_func_v.html +5 -5
  195. package/SVF-doxygen/html/html/functions_g.html +52 -52
  196. package/SVF-doxygen/html/html/functions_i.html +2 -2
  197. package/SVF-doxygen/html/html/functions_l.html +9 -9
  198. package/SVF-doxygen/html/html/functions_m.html +1 -1
  199. package/SVF-doxygen/html/html/functions_n.html +2 -2
  200. package/SVF-doxygen/html/html/functions_o.html +17 -17
  201. package/SVF-doxygen/html/html/functions_p.html +4 -4
  202. package/SVF-doxygen/html/html/functions_s.html +7 -7
  203. package/SVF-doxygen/html/html/functions_t.html +20 -20
  204. package/SVF-doxygen/html/html/functions_type_c.html +1 -1
  205. package/SVF-doxygen/html/html/functions_type_l.html +3 -3
  206. package/SVF-doxygen/html/html/functions_type_p.html +1 -1
  207. package/SVF-doxygen/html/html/functions_type_s.html +3 -3
  208. package/SVF-doxygen/html/html/functions_u.html +2 -2
  209. package/SVF-doxygen/html/html/functions_v.html +5 -5
  210. package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
  211. package/SVF-doxygen/html/html/functions_vars_g.html +1 -1
  212. package/SVF-doxygen/html/html/functions_vars_i.html +2 -2
  213. package/SVF-doxygen/html/html/functions_vars_l.html +2 -2
  214. package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
  215. package/SVF-doxygen/html/html/functions_vars_o.html +3 -3
  216. package/SVF-doxygen/html/html/functions_w.html +5 -9
  217. package/SVF-doxygen/html/html/hierarchy.html +65 -65
  218. package/SVF-doxygen/html/html/namespaceSVF.html +23 -23
  219. package/SVF-doxygen/html/html/search/all_1.js +37 -37
  220. package/SVF-doxygen/html/html/search/all_10.js +2 -2
  221. package/SVF-doxygen/html/html/search/all_13.js +6 -6
  222. package/SVF-doxygen/html/html/search/all_14.js +1 -1
  223. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  224. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  225. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  226. package/SVF-doxygen/html/html/search/all_2.js +1 -1
  227. package/SVF-doxygen/html/html/search/all_3.js +8 -8
  228. package/SVF-doxygen/html/html/search/all_4.js +2 -2
  229. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  230. package/SVF-doxygen/html/html/search/all_7.js +26 -26
  231. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  232. package/SVF-doxygen/html/html/search/all_c.js +7 -7
  233. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  234. package/SVF-doxygen/html/html/search/all_e.js +1 -1
  235. package/SVF-doxygen/html/html/search/all_f.js +3 -3
  236. package/SVF-doxygen/html/html/search/classes_0.js +1 -1
  237. package/SVF-doxygen/html/html/search/classes_1.js +1 -1
  238. package/SVF-doxygen/html/html/search/classes_11.js +1 -1
  239. package/SVF-doxygen/html/html/search/classes_12.js +2 -2
  240. package/SVF-doxygen/html/html/search/classes_2.js +5 -5
  241. package/SVF-doxygen/html/html/search/classes_3.js +2 -2
  242. package/SVF-doxygen/html/html/search/classes_5.js +1 -1
  243. package/SVF-doxygen/html/html/search/classes_6.js +2 -2
  244. package/SVF-doxygen/html/html/search/classes_9.js +1 -1
  245. package/SVF-doxygen/html/html/search/classes_b.js +1 -1
  246. package/SVF-doxygen/html/html/search/classes_c.js +1 -1
  247. package/SVF-doxygen/html/html/search/classes_d.js +1 -1
  248. package/SVF-doxygen/html/html/search/classes_f.js +1 -1
  249. package/SVF-doxygen/html/html/search/functions_0.js +37 -37
  250. package/SVF-doxygen/html/html/search/functions_1.js +1 -1
  251. package/SVF-doxygen/html/html/search/functions_10.js +3 -3
  252. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  253. package/SVF-doxygen/html/html/search/functions_12.js +1 -1
  254. package/SVF-doxygen/html/html/search/functions_13.js +2 -2
  255. package/SVF-doxygen/html/html/search/functions_2.js +7 -7
  256. package/SVF-doxygen/html/html/search/functions_3.js +2 -2
  257. package/SVF-doxygen/html/html/search/functions_5.js +1 -1
  258. package/SVF-doxygen/html/html/search/functions_6.js +25 -25
  259. package/SVF-doxygen/html/html/search/functions_a.js +3 -3
  260. package/SVF-doxygen/html/html/search/functions_c.js +1 -1
  261. package/SVF-doxygen/html/html/search/functions_d.js +2 -2
  262. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  263. package/SVF-doxygen/html/html/search/typedefs_11.js +3 -3
  264. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
  265. package/SVF-doxygen/html/html/search/typedefs_b.js +3 -3
  266. package/SVF-doxygen/html/html/search/typedefs_f.js +1 -1
  267. package/SVF-doxygen/html/html/search/variables_6.js +1 -1
  268. package/SVF-doxygen/html/html/search/variables_7.js +1 -1
  269. package/SVF-doxygen/html/html/search/variables_9.js +1 -1
  270. package/SVF-doxygen/html/html/search/variables_c.js +1 -1
  271. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  272. package/SVF-doxygen/html/html/search/variables_f.js +1 -1
  273. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +2 -2
  274. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  275. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +2 -2
  276. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +1 -1
  277. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +1 -1
  278. package/include/Graphs/ICFGNode.h +1 -1
  279. package/include/Graphs/VFG.h +9 -9
  280. package/include/Graphs/VFGNode.h +6 -6
  281. package/include/MSSA/MSSAMuChi.h +6 -6
  282. package/include/MSSA/MemRegion.h +8 -8
  283. package/include/MSSA/MemSSA.h +10 -10
  284. package/include/MemoryModel/PointerAnalysis.h +1 -1
  285. package/include/MemoryModel/PointerAnalysisImpl.h +2 -2
  286. package/include/MemoryModel/SVFIR.h +28 -28
  287. package/include/MemoryModel/SVFStatements.h +68 -68
  288. package/include/MemoryModel/SVFVariables.h +39 -39
  289. package/include/SVF-FE/SVFIRBuilder.h +22 -22
  290. package/lib/DDA/ContextDDA.cpp +4 -4
  291. package/lib/DDA/DDAStat.cpp +1 -1
  292. package/lib/DDA/FlowDDA.cpp +2 -2
  293. package/lib/Graphs/ConsG.cpp +12 -12
  294. package/lib/Graphs/IRGraph.cpp +15 -15
  295. package/lib/Graphs/OfflineConsG.cpp +8 -8
  296. package/lib/Graphs/SVFG.cpp +8 -8
  297. package/lib/Graphs/ThreadCallGraph.cpp +2 -2
  298. package/lib/Graphs/VFG.cpp +15 -15
  299. package/lib/MSSA/MemRegion.cpp +6 -6
  300. package/lib/MSSA/MemSSA.cpp +6 -6
  301. package/lib/MemoryModel/PAGBuilderFromFile.cpp +3 -3
  302. package/lib/MemoryModel/PointerAnalysis.cpp +9 -9
  303. package/lib/MemoryModel/PointerAnalysisImpl.cpp +2 -2
  304. package/lib/MemoryModel/SVFIR.cpp +44 -44
  305. package/lib/MemoryModel/SVFStatements.cpp +24 -24
  306. package/lib/MemoryModel/SVFVariables.cpp +19 -19
  307. package/lib/SABER/SaberSVFGBuilder.cpp +2 -2
  308. package/lib/SVF-FE/Graph2Json.cpp +1 -1
  309. package/lib/SVF-FE/SVFIRBuilder.cpp +5 -5
  310. package/lib/Util/PTAStat.cpp +1 -1
  311. package/lib/Util/TypeBasedHeapCloning.cpp +19 -19
  312. package/lib/WPA/AndersenSFR.cpp +1 -1
  313. package/lib/WPA/AndersenStat.cpp +3 -3
  314. package/lib/WPA/FlowSensitive.cpp +2 -2
  315. package/lib/WPA/FlowSensitiveStat.cpp +2 -2
  316. package/lib/WPA/FlowSensitiveTBHC.cpp +4 -4
  317. package/lib/WPA/VersionedFlowSensitive.cpp +1 -1
  318. package/lib/WPA/VersionedFlowSensitiveStat.cpp +1 -1
  319. package/package.json +1 -1
@@ -66,22 +66,24 @@ $(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#a896b591a710148fad7705a0d88652976"> 56</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const SVFStmt*&gt; <a class="code" href="classSVF_1_1SVFIR.html#a896b591a710148fad7705a0d88652976">PAGEdgeList</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a64cee36354a14aae6b64f8b9d3edbd96"> 57</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const SVFVar*&gt; <a class="code" href="classSVF_1_1SVFIR.html#a64cee36354a14aae6b64f8b9d3edbd96">PAGNodeList</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a76a5c898ac4b12207cb24c1f68aac786"> 58</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const CopyPE*&gt; <a class="code" href="classSVF_1_1SVFIR.html#a76a5c898ac4b12207cb24c1f68aac786">CopyPEList</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a93148e8b0e21d2b920f53d46493c1f58"> 59</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFVar*,PhiPE*&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a93148e8b0e21d2b920f53d46493c1f58">PHINodeMap</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3a3409f3ac6845e05db7ec8bfd881959"> 60</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*,PAGNodeList&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a3a3409f3ac6845e05db7ec8bfd881959">FunToArgsListMap</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3e8f191a082b8bcdac7473fdfee6909a"> 61</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CallBlockNode*,PAGNodeList&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a3e8f191a082b8bcdac7473fdfee6909a">CSToArgsListMap</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a8a7156b1182e8d32b3899d510514ae42"> 62</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="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ae34e5ff2f065ad752c248337d625b2e3"> 63</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="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a24592d009d5db15ab97e7bf133ac884b"> 64</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*,PAGEdgeSet&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a24592d009d5db15ab97e7bf133ac884b">FunToPAGEdgeSetMap</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a945fd37adc7071bd71d7aff65445544e"> 65</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const ICFGNode*,PAGEdgeList&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a945fd37adc7071bd71d7aff65445544e">Inst2PAGEdgesMap</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a654236d64abc2ca95982da7b4408b52d"> 66</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="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ab0d0aa216dbf7cc8f5b8030d5217e89c"> 67</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="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a323e459ca43e239ddcdc8d00c6a8db6d"> 68</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="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ae683914bce36e2d387bc0bc97dfcb14d"> 69</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="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa5b08d987b37d35e73de88da10a97bc4"> 70</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="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3cf5be37df32cdcd44fa7b1971fae2de"> 71</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#a3cf5be37df32cdcd44fa7b1971fae2de">GepValPNMap</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ab715a8e83a4ec45fb86298fef3eda95a"> 72</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="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a711d8a047ab8db4fdcac9d53aadf561c"> 77</a></span>&#160; Inst2PAGEdgesMap <a class="code" href="classSVF_1_1SVFIR.html#a711d8a047ab8db4fdcac9d53aadf561c">inst2PAGEdgesMap</a>; </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a38366ab3152ad7f6fd649805f7b08d6b"> 78</a></span>&#160; Inst2PAGEdgesMap <a class="code" href="classSVF_1_1SVFIR.html#a38366ab3152ad7f6fd649805f7b08d6b">inst2PTAPAGEdgesMap</a>; </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ae5e06d403091c05df995aeea0a4f773d"> 79</a></span>&#160; GepValPNMap <a class="code" href="classSVF_1_1SVFIR.html#ae5e06d403091c05df995aeea0a4f773d">GepValNodeMap</a>; </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3ab46db0dc6ebab78d431e4a540dcc9e"> 80</a></span>&#160; NodeLocationSetMap <a class="code" href="classSVF_1_1SVFIR.html#a3ab46db0dc6ebab78d431e4a540dcc9e">GepObjNodeMap</a>; </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252"> 81</a></span>&#160; MemObjToFieldsMap <a class="code" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">memToFieldsMap</a>; </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a633fb7a85c90f9b766689b8d2fdf3bac"> 82</a></span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#ae9547730a27575194977b240647e8ce2">PAGEdgeSet</a> <a class="code" href="classSVF_1_1SVFIR.html#a633fb7a85c90f9b766689b8d2fdf3bac">globPAGEdgesSet</a>; </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a41abf665421dbfaef508b1eba0c91fb9"> 83</a></span>&#160; PHINodeMap <a class="code" href="classSVF_1_1SVFIR.html#a41abf665421dbfaef508b1eba0c91fb9">phiNodeMap</a>; </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a864c465fbfdbbbdcc7fc8bbe26737903"> 84</a></span>&#160; FunToArgsListMap <a class="code" href="classSVF_1_1SVFIR.html#a864c465fbfdbbbdcc7fc8bbe26737903">funArgsListMap</a>; </div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa0920f5f967efdb89e23f12d31b112a2"> 85</a></span>&#160; CSToArgsListMap <a class="code" href="classSVF_1_1SVFIR.html#aa0920f5f967efdb89e23f12d31b112a2">callSiteArgsListMap</a>; </div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a11ab07f48c934f45c239393332aa60e1"> 86</a></span>&#160; CSToRetMap <a class="code" href="classSVF_1_1SVFIR.html#a11ab07f48c934f45c239393332aa60e1">callSiteRetMap</a>; </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a4cef56f7fc77b47dc6e65c59c98551c5"> 87</a></span>&#160; FunToRetMap <a class="code" href="classSVF_1_1SVFIR.html#a4cef56f7fc77b47dc6e65c59c98551c5">funRetMap</a>; </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5"> 88</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="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a0a5f88766b7e11f1ea35befcbcea62dc"> 89</a></span>&#160; CallSiteToFunPtrMap <a class="code" href="classSVF_1_1SVFIR.html#a0a5f88766b7e11f1ea35befcbcea62dc">indCallSiteToFunPtrMap</a>; </div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#af9c840e4b82fe9fd9493eabaa2b52bd5"> 90</a></span>&#160; FunPtrToCallSitesMap <a class="code" href="classSVF_1_1SVFIR.html#af9c840e4b82fe9fd9493eabaa2b52bd5">funPtrToCallSitesMap</a>; </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</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="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51"> 94</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="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac6c537688366e73bb0ae5db49c0b2450"> 95</a></span>&#160; CallSiteSet <a class="code" href="classSVF_1_1SVFIR.html#ac6c537688366e73bb0ae5db49c0b2450">callSiteSet</a>; </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</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="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a6834558be6987c91a3732154482c9567">destroy</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362"> 107</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="l00108"></a><span class="lineno"> 108</span>&#160; {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">if</span> (pag == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</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="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6dd18b030ae6fee4b4a8260ce9fd97fd"> 115</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="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">if</span> (pag)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; pag = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</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="l00124"></a><span class="lineno"> 124</span>&#160; {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">memToFieldsMap</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a77e3c407ea3990413e371589aa468963"> 128</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="l00129"></a><span class="lineno"> 129</span>&#160; {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a3ab46db0dc6ebab78d431e4a540dcc9e">GepObjNodeMap</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da"> 133</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="l00134"></a><span class="lineno"> 134</span>&#160; {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51">icfg</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a7990c72dd6d645d713f19ed973841484"> 138</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="l00139"></a><span class="lineno"> 139</span>&#160; {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#abd9f622b55839d6796ca2576f2323498">candidatePointers</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#af6a2c401d5c7582a4a958b1fe40838e5">initialiseCandidatePointers</a>();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3d62b2a06fe1ec531cbde12131fa31df"> 146</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="l00147"></a><span class="lineno"> 147</span>&#160; {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a6834558be6987c91a3732154482c9567">destroy</a>();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</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="l00155"></a><span class="lineno"> 155</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="l00157"></a><span class="lineno"> 157</span>&#160; {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</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="l00159"></a><span class="lineno"> 159</span>&#160; }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">SVFStmt::PAGEdgeSetTy</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#ac2dff0e76e4ee879dc023255e7e6a63e">getEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#a6efd8215ac2484a16a9ab2afbde290b4">PAGEdgeKindToSetMap</a>[kind];</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a9c33009dc1aa3e16adfd34effd4471f6"> 168</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">SVFStmt::PAGEdgeSetTy</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#a9c33009dc1aa3e16adfd34effd4471f6">getPTAEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#a780372b8241dc1c76e31b0340d5d2401">PTAPAGEdgeKindToSetMap</a>[kind];</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; }</div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ade4dc34350ab7d5e05295dfdd5d019c6"> 173</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#ade4dc34350ab7d5e05295dfdd5d019c6">hasPAGEdgeList</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="l00174"></a><span class="lineno"> 174</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> inst2PAGEdgesMap.find(inst)!=inst2PAGEdgesMap.end();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a90f8da69c50f9aa82366ca9b88eb5027"> 177</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a90f8da69c50f9aa82366ca9b88eb5027">hasPTAPAGEdgeList</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="l00178"></a><span class="lineno"> 178</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">return</span> inst2PTAPAGEdgesMap.find(inst)!=inst2PTAPAGEdgesMap.end();</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; }</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#adf344b7cbcebd343b026b9b4b9d72fdb"> 182</a></span>&#160; <span class="keyword">inline</span> PAGEdgeList&amp; <a class="code" href="classSVF_1_1SVFIR.html#adf344b7cbcebd343b026b9b4b9d72fdb">getInstPAGEdgeList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* inst)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">return</span> inst2PAGEdgesMap[inst];</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ad0c6908c3e4ff83d0eb34906826d2a10"> 187</a></span>&#160; <span class="keyword">inline</span> PAGEdgeList&amp; <a class="code" href="classSVF_1_1SVFIR.html#ad0c6908c3e4ff83d0eb34906826d2a10">getInstPTAPAGEdgeList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* inst)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> inst2PTAPAGEdgesMap[inst];</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a7d64f6195fd6d660c5238bdda495ddf0"> 192</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a7d64f6195fd6d660c5238bdda495ddf0">addToInstPAGEdgeList</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="l00193"></a><span class="lineno"> 193</span>&#160; {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#adb92a92f5c878576dff26cb38eab8c8c">setICFGNode</a>(inst);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; inst2PAGEdgesMap[inst].push_back(edge);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</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="l00197"></a><span class="lineno"> 197</span>&#160; inst2PTAPAGEdgesMap[inst].push_back(edge);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac0b7ac004c8c258af81a0d16872f3406"> 200</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1IRGraph.html#ae9547730a27575194977b240647e8ce2">PAGEdgeSet</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#ac0b7ac004c8c258af81a0d16872f3406">getGlobalPAGEdgeSet</a>()</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a633fb7a85c90f9b766689b8d2fdf3bac">globPAGEdgesSet</a>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa530e33657f68fc2e8eae9435ce430cb"> 205</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="l00206"></a><span class="lineno"> 206</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#ac6c537688366e73bb0ae5db49c0b2450">callSiteSet</a>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a5de67390d38bfacd5b63b776a0ecbfff"> 210</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="l00211"></a><span class="lineno"> 211</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> phiNodeMap.find(node) != phiNodeMap.end();</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac359813747b4f75920c5f395ba74f410"> 216</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="l00217"></a><span class="lineno"> 217</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> (funArgsListMap.find(func) != funArgsListMap.end());</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a615c056c876b59d1fd174a2ac9ade27c"> 221</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="l00222"></a><span class="lineno"> 222</span>&#160; {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a864c465fbfdbbbdcc7fc8bbe26737903">funArgsListMap</a>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a1cac93c15fcbf15798c4fe374380f8ae"> 226</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> PAGNodeList&amp; <a class="code" href="classSVF_1_1SVFIR.html#a1cac93c15fcbf15798c4fe374380f8ae">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="l00227"></a><span class="lineno"> 227</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; FunToArgsListMap::const_iterator it = funArgsListMap.find(func);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</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="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2a4185af81e7e10f0db74c39ee220101"> 233</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="l00234"></a><span class="lineno"> 234</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">return</span> (callSiteArgsListMap.find(cs) != callSiteArgsListMap.end());</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a346b9300ad16ef65e3ab4e11f88193a7"> 238</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="l00239"></a><span class="lineno"> 239</span>&#160; {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#aa0920f5f967efdb89e23f12d31b112a2">callSiteArgsListMap</a>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a432e99757dfe844fd8450f2ab4ff4093"> 243</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> PAGNodeList&amp; <a class="code" href="classSVF_1_1SVFIR.html#a432e99757dfe844fd8450f2ab4ff4093">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="l00244"></a><span class="lineno"> 244</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; CSToArgsListMap::const_iterator it = callSiteArgsListMap.find(cs);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</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="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a650b3931af337a92ffcb5dad5ab47b22"> 250</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="l00251"></a><span class="lineno"> 251</span>&#160; {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a11ab07f48c934f45c239393332aa60e1">callSiteRetMap</a>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a70aa4d730ef1d38ef9c46f5014465bdd"> 255</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="l00256"></a><span class="lineno"> 256</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; CSToRetMap::const_iterator it = callSiteRetMap.find(cs);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</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="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a170bef1e9a07ce0449faf66706ae6e61"> 261</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="l00262"></a><span class="lineno"> 262</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">return</span> callSiteRetMap.find(cs) != callSiteRetMap.end();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; }</div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#abd1bb12776dc9a17863a52ce2cd31958"> 266</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="l00267"></a><span class="lineno"> 267</span>&#160; {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a4cef56f7fc77b47dc6e65c59c98551c5">funRetMap</a>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; }</div><div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a34e27b8bcfeaafda190dcdb9169a346f"> 271</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="l00272"></a><span class="lineno"> 272</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; FunToRetMap::const_iterator it = funRetMap.find(func);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</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="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#afe8274c3b7317fccef5314662a182046"> 277</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="l00278"></a><span class="lineno"> 278</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">return</span> funRetMap.find(func) != funRetMap.end();</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a4b4592e3187bb6583aba63b2f374754e"> 285</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="l00286"></a><span class="lineno"> 286</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">return</span> GepValNodeMap.size();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#af7a98a5eb789178594063140c85cd21f"> 289</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="l00290"></a><span class="lineno"> 290</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> GepObjNodeMap.size();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#af37d6fc7f816d235c0a6158d43d6dda5"> 296</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#af37d6fc7f816d235c0a6158d43d6dda5">getGepValNode</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="l00297"></a><span class="lineno"> 297</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; GepValPNMap::const_iterator iter = GepValNodeMap.find(curInst);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span>(iter==GepValNodeMap.end()){</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> UINT_MAX;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; NodeLocationSetMap::const_iterator lit = iter-&gt;second.find(std::make_pair(base, ls));</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">if</span>(lit==iter-&gt;second.end())</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">return</span> UINT_MAX;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">return</span> lit-&gt;second;</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="l00310"></a><span class="lineno"> 310</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0"> 313</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="l00314"></a><span class="lineno"> 314</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a0a5f88766b7e11f1ea35befcbcea62dc">indCallSiteToFunPtrMap</a>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div><div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a533a01d01fab9e45cd1780f9bbd50b0f"> 317</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="l00318"></a><span class="lineno"> 318</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; CallSiteToFunPtrMap::const_iterator it = indCallSiteToFunPtrMap.find(cs);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</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="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; }</div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#abf209739a97b96ae0d1c8451fdc684e8"> 323</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="l00324"></a><span class="lineno"> 324</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; FunPtrToCallSitesMap::const_iterator it = funPtrToCallSitesMap.find(funPtr);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</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="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div><div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ad44e1ef13d047f8aea8f6ddf5510bd6c"> 329</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="l00330"></a><span class="lineno"> 330</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">return</span> (indCallSiteToFunPtrMap.find(cs) != indCallSiteToFunPtrMap.end());</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a9235a60e7332c8416e113e7360441d97"> 333</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="l00334"></a><span class="lineno"> 334</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">return</span> (funPtrToCallSitesMap.find(<span class="keywordtype">id</span>) != funPtrToCallSitesMap.end());</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6f41676ae91ba7fad38cc7387dd1c255"> 340</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="l00341"></a><span class="lineno"> 341</span>&#160; {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</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="l00343"></a><span class="lineno"> 343</span>&#160; }</div><div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac1dbd64071f9822b0404f4ed9c8bd2cd"> 344</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="l00345"></a><span class="lineno"> 345</span>&#160; {</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> edge(src,dst,kind);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">SVFStmt::PAGEdgeSetTy</a>&amp; edgeSet = <a class="code" href="classSVF_1_1SVFIR.html#ac2dff0e76e4ee879dc023255e7e6a63e">getEdgeSet</a>(kind);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; SVFStmt::PAGEdgeSetTy::const_iterator it = edgeSet.find(&amp;edge);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</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="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">return</span> (*it);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1"> 358</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="l00359"></a><span class="lineno"> 359</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</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="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjPN.html">ObjPN</a>* objPN = SVFUtil::dyn_cast&lt;ObjPN&gt;(node))</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</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="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a09e5b8af97c902bf25ff8f1542346138"> 366</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#a09e5b8af97c902bf25ff8f1542346138">getObject</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjPN.html">ObjPN</a>* node)<span class="keyword"> const</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1ObjPN.html#a63ee5624271a63c2dc4f7f3ed2dcefdf">getMemObj</a>();</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a2b80cf884eedb51f77a5e84def7d8793">getGepObjNode</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="l00375"></a><span class="lineno"> 375</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a2b80cf884eedb51f77a5e84def7d8793">getGepObjNode</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="l00377"></a><span class="lineno"> 377</span>&#160;</div><div class="line"><a name="l00378"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a702edc6714da142c16857995778a9f4b"> 378</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#a702edc6714da142c16857995778a9f4b">getFIObjNode</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="l00379"></a><span class="lineno"> 379</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</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="l00381"></a><span class="lineno"> 381</span>&#160; }</div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a44aae3b2a519cdbb704e852e7be9059a"> 382</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#a44aae3b2a519cdbb704e852e7be9059a">getFIObjNode</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="l00383"></a><span class="lineno"> 383</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</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="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;ObjPN&gt;(node) &amp;&amp; <span class="stringliteral">&quot;need an object node&quot;</span>);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="classSVF_1_1ObjPN.html">ObjPN</a>* obj = SVFUtil::cast&lt;ObjPN&gt;(node);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a702edc6714da142c16857995778a9f4b">getFIObjNode</a>(obj-&gt;<a class="code" href="classSVF_1_1ObjPN.html#a63ee5624271a63c2dc4f7f3ed2dcefdf">getMemObj</a>());</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6a71d2716530607d66d9e9035199d997"> 393</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="l00394"></a><span class="lineno"> 394</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</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="l00396"></a><span class="lineno"> 396</span>&#160; }</div><div class="line"><a name="l00397"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a18ca66c199b910b15f1bfa77dcc98c30"> 397</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="l00398"></a><span class="lineno"> 398</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</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="l00400"></a><span class="lineno"> 400</span>&#160; }</div><div class="line"><a name="l00401"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ad9895f2d075eb402390e3b01ed68e001"> 401</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="l00402"></a><span class="lineno"> 402</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</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="l00404"></a><span class="lineno"> 404</span>&#160; }</div><div class="line"><a name="l00405"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a17527c55d35ae5c18f00fd4dabe6acad"> 405</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="l00406"></a><span class="lineno"> 406</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</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="l00408"></a><span class="lineno"> 408</span>&#160; }</div><div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156"> 409</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="l00410"></a><span class="lineno"> 410</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</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="l00412"></a><span class="lineno"> 412</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="l00413"></a><span class="lineno"> 413</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="l00414"></a><span class="lineno"> 414</span>&#160; }</div><div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a07716ca7f769f704a80ccee1a6ad7ee2"> 415</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="l00416"></a><span class="lineno"> 416</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</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="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FIObjPN.html">FIObjPN</a>* fiNode = SVFUtil::dyn_cast&lt;FIObjPN&gt;(node))</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">return</span> (fiNode-&gt;getMemObj()-&gt;hasPtrObj() == <span class="keyword">false</span>);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</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="l00423"></a><span class="lineno"> 423</span>&#160; {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">return</span> (gepNode-&gt;getMemObj()-&gt;isNonPtrFieldObj(gepNode-&gt;getLocationSet()));</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyObjPN&gt;(node))</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</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="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a851075193a0b9a9b594848d6b3ba659e">getBaseValNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</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="l00443"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a4720426ab75f8d07e780995ffad7d51a"> 443</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#a4720426ab75f8d07e780995ffad7d51a">getBaseObjNode</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="l00444"></a><span class="lineno"> 444</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</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="l00446"></a><span class="lineno"> 446</span>&#160; }</div><div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749"> 447</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="l00448"></a><span class="lineno"> 448</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</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="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;ObjPN&gt;(node) &amp;&amp; <span class="stringliteral">&quot;need an object node&quot;</span>);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjPN.html">ObjPN</a>* obj = SVFUtil::cast&lt;ObjPN&gt;(node);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">return</span> obj-&gt;<a class="code" href="classSVF_1_1ObjPN.html#a63ee5624271a63c2dc4f7f3ed2dcefdf">getMemObj</a>();</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</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#a5a635bc1142c388da1db87d9172c03ab">getAllFieldsObjNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#a5a635bc1142c388da1db87d9172c03ab">getAllFieldsObjNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</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="l00462"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0"> 462</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="l00463"></a><span class="lineno"> 463</span>&#160; {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</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="l00465"></a><span class="lineno"> 465</span>&#160; }</div><div class="line"><a name="l00466"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a18388bc282c5329a837c6a273893c4fb"> 466</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="l00467"></a><span class="lineno"> 467</span>&#160; {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</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="l00469"></a><span class="lineno"> 469</span>&#160; }</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</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="l00473"></a><span class="lineno"> 473</span>&#160;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</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="l00476"></a><span class="lineno"> 476</span>&#160;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a236b4fefd16e9c793c5bd6d576290841">print</a>();</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523"> 483</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="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordtype">bool</span> added = <a class="code" href="classSVF_1_1IRGraph.html#a6efd8215ac2484a16a9ab2afbde290b4">PAGEdgeKindToSetMap</a>[edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>()].insert(edge).second;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</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="l00486"></a><span class="lineno"> 486</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="l00487"></a><span class="lineno"> 487</span>&#160; {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a9f68ffe75e3d9457092ac2368aa08a27">totalPTAPAGEdge</a>++;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a780372b8241dc1c76e31b0340d5d2401">PTAPAGEdgeKindToSetMap</a>[edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>()].insert(edge);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</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="l00496"></a><span class="lineno"> 496</span>&#160; {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</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="l00498"></a><span class="lineno"> 498</span>&#160; funEntryBlockNode-&gt;<a class="code" href="classSVF_1_1FunEntryBlockNode.html#ae6ebc073885c5d47f685c61097dadf20">addFormalParms</a>(arg);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; funArgsListMap[fun].push_back(arg);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }</div><div class="line"><a name="l00502"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a53774463f34bb8b528b179b72b48fd69"> 502</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="l00503"></a><span class="lineno"> 503</span>&#160; {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</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="l00505"></a><span class="lineno"> 505</span>&#160; funExitBlockNode-&gt;<a class="code" href="classSVF_1_1FunExitBlockNode.html#ae1499a3ea7d5bb90dccd5d04a8b97dfc">addFormalRet</a>(ret);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; funRetMap[fun] = ret;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="line"><a name="l00509"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a5fafbfd6a30b8796b92a3a1f3409767f"> 509</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="l00510"></a><span class="lineno"> 510</span>&#160; {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; callBlockNode-&gt;<a class="code" href="classSVF_1_1CallBlockNode.html#a6d819186e239e68c117af16ed405da84">addActualParms</a>(arg);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; callSiteArgsListMap[callBlockNode].push_back(arg);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; }</div><div class="line"><a name="l00515"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3c8070a1d7a6a705433b05dd633185b1"> 515</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="l00516"></a><span class="lineno"> 516</span>&#160; {</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; retBlockNode-&gt;<a class="code" href="classSVF_1_1RetBlockNode.html#ad2cd6f6589ce5464d6fbcac49f115714">addActualRet</a>(arg);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; callSiteRetMap[retBlockNode]= arg;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; }</div><div class="line"><a name="l00521"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa91db3ebf92eacf077ae7b4d0735635b"> 521</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="l00522"></a><span class="lineno"> 522</span>&#160; {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordtype">bool</span> added = indCallSiteToFunPtrMap.insert(std::make_pair(cs,funPtr)).second;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; funPtrToCallSitesMap[funPtr].insert(cs);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</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="l00526"></a><span class="lineno"> 526</span>&#160; }</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</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="l00532"></a><span class="lineno"> 532</span>&#160; {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ValPN.html">ValPN</a>(val,i);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</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="l00535"></a><span class="lineno"> 535</span>&#160; }</div><div class="line"><a name="l00537"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d"> 537</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="l00538"></a><span class="lineno"> 538</span>&#160; {</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</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="l00540"></a><span class="lineno"> 540</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="l00541"></a><span class="lineno"> 541</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="l00542"></a><span class="lineno"> 542</span>&#160; }</div><div class="line"><a name="l00544"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a38f6d0c7db935fd4e556761f96f1fa09"> 544</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="l00545"></a><span class="lineno"> 545</span>&#160; {</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</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="l00547"></a><span class="lineno"> 547</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="l00548"></a><span class="lineno"> 548</span>&#160; }</div><div class="line"><a name="l00550"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6ade5bf3edc7b6c3faafc3e5ff3d0538"> 550</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="l00551"></a><span class="lineno"> 551</span>&#160; {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</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="l00553"></a><span class="lineno"> 553</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="l00554"></a><span class="lineno"> 554</span>&#160; }</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</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="l00559"></a><span class="lineno"> 559</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="l00561"></a><span class="lineno"> 561</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="l00563"></a><span class="lineno"> 563</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6b1bb039f068ff2ab486214354df4684"> 566</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="l00567"></a><span class="lineno"> 567</span>&#160; {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</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_1DummyValPN.html">DummyValPN</a>(i), i);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; }</div><div class="line"><a name="l00570"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3071c94ea72048d74a65a409a906af35"> 570</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="l00571"></a><span class="lineno"> 571</span>&#160; {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</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="l00573"></a><span class="lineno"> 573</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_1DummyObjPN.html">DummyObjPN</a>(i,mem), i);</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; }</div><div class="line"><a name="l00575"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a4ee79c74a7a2cea5c063fa598ab89532"> 575</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="l00576"></a><span class="lineno"> 576</span>&#160; {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</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="l00578"></a><span class="lineno"> 578</span>&#160; }</div><div class="line"><a name="l00579"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2b532a5db0197c579b512fbcdb4d6220"> 579</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="l00580"></a><span class="lineno"> 580</span>&#160; {</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</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_1DummyObjPN.html">DummyObjPN</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="l00582"></a><span class="lineno"> 582</span>&#160; }</div><div class="line"><a name="l00583"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aff3f3ff198e7511576484dfda7bf051b"> 583</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="l00584"></a><span class="lineno"> 584</span>&#160; {</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</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_1DummyObjPN.html">DummyObjPN</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="l00586"></a><span class="lineno"> 586</span>&#160; }</div><div class="line"><a name="l00587"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2b1de62f88588b068d4eed125049ed8d"> 587</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="l00588"></a><span class="lineno"> 588</span>&#160; {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</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="l00590"></a><span class="lineno"> 590</span>&#160; }</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;</div><div class="line"><a name="l00594"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3face8a526a33d82ef7cde7602030bc9"> 594</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="l00595"></a><span class="lineno"> 595</span>&#160; {</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</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="l00597"></a><span class="lineno"> 597</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="l00598"></a><span class="lineno"> 598</span>&#160; }</div><div class="line"><a name="l00600"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3a5d8b7f6286ec31b5a9038c88779151"> 600</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="l00601"></a><span class="lineno"> 601</span>&#160; {</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</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="l00603"></a><span class="lineno"> 603</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="l00604"></a><span class="lineno"> 604</span>&#160; }</div><div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a1f63adcd679596996ee2eabf0179462f"> 606</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="l00607"></a><span class="lineno"> 607</span>&#160; {</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</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="l00609"></a><span class="lineno"> 609</span>&#160; }</div><div class="line"><a name="l00611"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a078c01295f47bf12f1a2b8abfab8b28d"> 611</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="l00612"></a><span class="lineno"> 612</span>&#160; {</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</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="l00614"></a><span class="lineno"> 614</span>&#160; }</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;</div><div class="line"><a name="l00617"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a"> 617</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="l00618"></a><span class="lineno"> 618</span>&#160; {</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; globPAGEdgesSet.insert(edge);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; }</div><div class="line"><a name="l00622"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a51f28f03a236b244b636ca88c5511a30"> 622</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="l00623"></a><span class="lineno"> 623</span>&#160; {</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; callSiteSet.insert(call);</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; }</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <a class="code" href="classSVF_1_1AddrPE.html">AddrPE</a>* <a class="code" href="classSVF_1_1SVFIR.html#a247f006b6f168a7d853814339b0a6ed5">addAddrPE</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="l00631"></a><span class="lineno"> 631</span>&#160; <a class="code" href="classSVF_1_1CopyPE.html">CopyPE</a>* <a class="code" href="classSVF_1_1SVFIR.html#a0aefb9f6ac03251dd2893e8d5fa30c30">addCopyPE</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="l00633"></a><span class="lineno"> 633</span>&#160; <a class="code" href="classSVF_1_1PhiPE.html">PhiPE</a>* <a class="code" href="classSVF_1_1SVFIR.html#a3da8a2168e33f49708cdcc79f9e311a4">addPhiNode</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="l00635"></a><span class="lineno"> 635</span>&#160; <a class="code" href="classSVF_1_1CmpPE.html">CmpPE</a>* <a class="code" href="classSVF_1_1SVFIR.html#afbb721dfd574c35e3ddb0a8d26f978c7">addCmpPE</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="l00637"></a><span class="lineno"> 637</span>&#160; <a class="code" href="classSVF_1_1BinaryOPPE.html">BinaryOPPE</a>* <a class="code" href="classSVF_1_1SVFIR.html#a1d6d9dbc5cd43eb8af776f5a1b373507">addBinaryOPPE</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="l00639"></a><span class="lineno"> 639</span>&#160; <a class="code" href="classSVF_1_1UnaryOPPE.html">UnaryOPPE</a>* <a class="code" href="classSVF_1_1SVFIR.html#a30409c96194976713b6b7728c072b8a5">addUnaryOPPE</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="l00641"></a><span class="lineno"> 641</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="l00643"></a><span class="lineno"> 643</span>&#160; <a class="code" href="classSVF_1_1LoadPE.html">LoadPE</a>* <a class="code" href="classSVF_1_1SVFIR.html#a5b89eb728f02a2d235f898dcf555d1a2">addLoadPE</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="l00645"></a><span class="lineno"> 645</span>&#160; <a class="code" href="classSVF_1_1StorePE.html">StorePE</a>* <a class="code" href="classSVF_1_1SVFIR.html#a147a1a57edd4d2eff937b28f677866d2">addStorePE</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="l00647"></a><span class="lineno"> 647</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="l00649"></a><span class="lineno"> 649</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="l00651"></a><span class="lineno"> 651</span>&#160; <a class="code" href="classSVF_1_1GepPE.html">GepPE</a>* <a class="code" href="classSVF_1_1SVFIR.html#ad0977abfd0eda258b5215d351d34c0f5">addGepPE</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="l00653"></a><span class="lineno"> 653</span>&#160; <a class="code" href="classSVF_1_1NormalGepPE.html">NormalGepPE</a>* <a class="code" href="classSVF_1_1SVFIR.html#acd2ba7adf250f1a90b57e51a085b6363">addNormalGepPE</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="l00655"></a><span class="lineno"> 655</span>&#160; <a class="code" href="classSVF_1_1VariantGepPE.html">VariantGepPE</a>* <a class="code" href="classSVF_1_1SVFIR.html#a33d8fad47352f7ca8aac035eb2adb57e">addVariantGepPE</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="l00657"></a><span class="lineno"> 657</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="l00659"></a><span class="lineno"> 659</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="l00661"></a><span class="lineno"> 661</span>&#160;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#aba877353c0eb383bf5ce216e7cb605bc">addBlackHoleAddrPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node);</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"> 665</span>&#160;</div><div class="line"><a name="l00666"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ac47d39fb505e8ed8d2c6b6b318be5f4d"> 666</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="l00667"></a><span class="lineno"> 667</span>&#160;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;} <span class="comment">// End namespace SVF</span></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;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</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#l00070">SVFIR.h:70</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#a896b591a710148fad7705a0d88652976"> 56</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const SVFStmt*&gt; <a class="code" href="classSVF_1_1SVFIR.html#a896b591a710148fad7705a0d88652976">PAGEdgeList</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a64cee36354a14aae6b64f8b9d3edbd96"> 57</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const SVFVar*&gt; <a class="code" href="classSVF_1_1SVFIR.html#a64cee36354a14aae6b64f8b9d3edbd96">PAGNodeList</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3080e37444cacdb0f50f1de88f36b73a"> 58</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const CopyStmt*&gt; <a class="code" href="classSVF_1_1SVFIR.html#a3080e37444cacdb0f50f1de88f36b73a">CopyPEList</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a08a05dfa6b9734936bb92b3969dbce3b"> 59</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="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3a3409f3ac6845e05db7ec8bfd881959"> 60</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*,PAGNodeList&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a3a3409f3ac6845e05db7ec8bfd881959">FunToArgsListMap</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3e8f191a082b8bcdac7473fdfee6909a"> 61</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CallBlockNode*,PAGNodeList&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a3e8f191a082b8bcdac7473fdfee6909a">CSToArgsListMap</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a8a7156b1182e8d32b3899d510514ae42"> 62</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="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ae34e5ff2f065ad752c248337d625b2e3"> 63</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="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a24592d009d5db15ab97e7bf133ac884b"> 64</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*,PAGEdgeSet&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a24592d009d5db15ab97e7bf133ac884b">FunToPAGEdgeSetMap</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a945fd37adc7071bd71d7aff65445544e"> 65</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const ICFGNode*,PAGEdgeList&gt;</a> <a class="code" href="classSVF_1_1SVFIR.html#a945fd37adc7071bd71d7aff65445544e">Inst2PAGEdgesMap</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a654236d64abc2ca95982da7b4408b52d"> 66</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="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ab0d0aa216dbf7cc8f5b8030d5217e89c"> 67</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="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a323e459ca43e239ddcdc8d00c6a8db6d"> 68</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="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ae683914bce36e2d387bc0bc97dfcb14d"> 69</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="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa5b08d987b37d35e73de88da10a97bc4"> 70</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="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3cf5be37df32cdcd44fa7b1971fae2de"> 71</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#a3cf5be37df32cdcd44fa7b1971fae2de">GepValPNMap</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ab715a8e83a4ec45fb86298fef3eda95a"> 72</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="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a711d8a047ab8db4fdcac9d53aadf561c"> 77</a></span>&#160; Inst2PAGEdgesMap <a class="code" href="classSVF_1_1SVFIR.html#a711d8a047ab8db4fdcac9d53aadf561c">inst2PAGEdgesMap</a>; </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a38366ab3152ad7f6fd649805f7b08d6b"> 78</a></span>&#160; Inst2PAGEdgesMap <a class="code" href="classSVF_1_1SVFIR.html#a38366ab3152ad7f6fd649805f7b08d6b">inst2PTAPAGEdgesMap</a>; </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ae5e06d403091c05df995aeea0a4f773d"> 79</a></span>&#160; GepValPNMap <a class="code" href="classSVF_1_1SVFIR.html#ae5e06d403091c05df995aeea0a4f773d">GepValNodeMap</a>; </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3ab46db0dc6ebab78d431e4a540dcc9e"> 80</a></span>&#160; NodeLocationSetMap <a class="code" href="classSVF_1_1SVFIR.html#a3ab46db0dc6ebab78d431e4a540dcc9e">GepObjNodeMap</a>; </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252"> 81</a></span>&#160; MemObjToFieldsMap <a class="code" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">memToFieldsMap</a>; </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a633fb7a85c90f9b766689b8d2fdf3bac"> 82</a></span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#ae9547730a27575194977b240647e8ce2">PAGEdgeSet</a> <a class="code" href="classSVF_1_1SVFIR.html#a633fb7a85c90f9b766689b8d2fdf3bac">globPAGEdgesSet</a>; </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a41abf665421dbfaef508b1eba0c91fb9"> 83</a></span>&#160; PHINodeMap <a class="code" href="classSVF_1_1SVFIR.html#a41abf665421dbfaef508b1eba0c91fb9">phiNodeMap</a>; </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a864c465fbfdbbbdcc7fc8bbe26737903"> 84</a></span>&#160; FunToArgsListMap <a class="code" href="classSVF_1_1SVFIR.html#a864c465fbfdbbbdcc7fc8bbe26737903">funArgsListMap</a>; </div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa0920f5f967efdb89e23f12d31b112a2"> 85</a></span>&#160; CSToArgsListMap <a class="code" href="classSVF_1_1SVFIR.html#aa0920f5f967efdb89e23f12d31b112a2">callSiteArgsListMap</a>; </div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a11ab07f48c934f45c239393332aa60e1"> 86</a></span>&#160; CSToRetMap <a class="code" href="classSVF_1_1SVFIR.html#a11ab07f48c934f45c239393332aa60e1">callSiteRetMap</a>; </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a4cef56f7fc77b47dc6e65c59c98551c5"> 87</a></span>&#160; FunToRetMap <a class="code" href="classSVF_1_1SVFIR.html#a4cef56f7fc77b47dc6e65c59c98551c5">funRetMap</a>; </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5"> 88</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="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a0a5f88766b7e11f1ea35befcbcea62dc"> 89</a></span>&#160; CallSiteToFunPtrMap <a class="code" href="classSVF_1_1SVFIR.html#a0a5f88766b7e11f1ea35befcbcea62dc">indCallSiteToFunPtrMap</a>; </div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#af9c840e4b82fe9fd9493eabaa2b52bd5"> 90</a></span>&#160; FunPtrToCallSitesMap <a class="code" href="classSVF_1_1SVFIR.html#af9c840e4b82fe9fd9493eabaa2b52bd5">funPtrToCallSitesMap</a>; </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</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="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51"> 94</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="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac6c537688366e73bb0ae5db49c0b2450"> 95</a></span>&#160; CallSiteSet <a class="code" href="classSVF_1_1SVFIR.html#ac6c537688366e73bb0ae5db49c0b2450">callSiteSet</a>; </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</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="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a6834558be6987c91a3732154482c9567">destroy</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362"> 107</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="l00108"></a><span class="lineno"> 108</span>&#160; {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">if</span> (pag == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</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="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6dd18b030ae6fee4b4a8260ce9fd97fd"> 115</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="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">if</span> (pag)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">pag</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; pag = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</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="l00124"></a><span class="lineno"> 124</span>&#160; {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">memToFieldsMap</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a77e3c407ea3990413e371589aa468963"> 128</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="l00129"></a><span class="lineno"> 129</span>&#160; {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a3ab46db0dc6ebab78d431e4a540dcc9e">GepObjNodeMap</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da"> 133</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="l00134"></a><span class="lineno"> 134</span>&#160; {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#abe8aa0d325b35dd59ce4a7f302760e51">icfg</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a7990c72dd6d645d713f19ed973841484"> 138</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="l00139"></a><span class="lineno"> 139</span>&#160; {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#abd9f622b55839d6796ca2576f2323498">candidatePointers</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#af6a2c401d5c7582a4a958b1fe40838e5">initialiseCandidatePointers</a>();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3d62b2a06fe1ec531cbde12131fa31df"> 146</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="l00147"></a><span class="lineno"> 147</span>&#160; {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#a6834558be6987c91a3732154482c9567">destroy</a>();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</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="l00155"></a><span class="lineno"> 155</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="l00157"></a><span class="lineno"> 157</span>&#160; {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</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="l00159"></a><span class="lineno"> 159</span>&#160; }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">SVFStmt::PAGEdgeSetTy</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#ac2dff0e76e4ee879dc023255e7e6a63e">getEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#a6efd8215ac2484a16a9ab2afbde290b4">PAGEdgeKindToSetMap</a>[kind];</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a9c33009dc1aa3e16adfd34effd4471f6"> 168</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">SVFStmt::PAGEdgeSetTy</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#a9c33009dc1aa3e16adfd34effd4471f6">getPTAEdgeSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9">SVFStmt::PEDGEK</a> kind)</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IRGraph.html#a780372b8241dc1c76e31b0340d5d2401">PTAPAGEdgeKindToSetMap</a>[kind];</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; }</div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ade4dc34350ab7d5e05295dfdd5d019c6"> 173</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#ade4dc34350ab7d5e05295dfdd5d019c6">hasPAGEdgeList</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="l00174"></a><span class="lineno"> 174</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> inst2PAGEdgesMap.find(inst)!=inst2PAGEdgesMap.end();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a90f8da69c50f9aa82366ca9b88eb5027"> 177</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFIR.html#a90f8da69c50f9aa82366ca9b88eb5027">hasPTAPAGEdgeList</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="l00178"></a><span class="lineno"> 178</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">return</span> inst2PTAPAGEdgesMap.find(inst)!=inst2PTAPAGEdgesMap.end();</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; }</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#adf344b7cbcebd343b026b9b4b9d72fdb"> 182</a></span>&#160; <span class="keyword">inline</span> PAGEdgeList&amp; <a class="code" href="classSVF_1_1SVFIR.html#adf344b7cbcebd343b026b9b4b9d72fdb">getInstPAGEdgeList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* inst)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">return</span> inst2PAGEdgesMap[inst];</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ad0c6908c3e4ff83d0eb34906826d2a10"> 187</a></span>&#160; <span class="keyword">inline</span> PAGEdgeList&amp; <a class="code" href="classSVF_1_1SVFIR.html#ad0c6908c3e4ff83d0eb34906826d2a10">getInstPTAPAGEdgeList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* inst)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> inst2PTAPAGEdgesMap[inst];</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a7d64f6195fd6d660c5238bdda495ddf0"> 192</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a7d64f6195fd6d660c5238bdda495ddf0">addToInstPAGEdgeList</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="l00193"></a><span class="lineno"> 193</span>&#160; {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; edge-&gt;<a class="code" href="classSVF_1_1SVFStmt.html#adb92a92f5c878576dff26cb38eab8c8c">setICFGNode</a>(inst);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; inst2PAGEdgesMap[inst].push_back(edge);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</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="l00197"></a><span class="lineno"> 197</span>&#160; inst2PTAPAGEdgesMap[inst].push_back(edge);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac0b7ac004c8c258af81a0d16872f3406"> 200</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1IRGraph.html#ae9547730a27575194977b240647e8ce2">PAGEdgeSet</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#ac0b7ac004c8c258af81a0d16872f3406">getGlobalPAGEdgeSet</a>()</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a633fb7a85c90f9b766689b8d2fdf3bac">globPAGEdgesSet</a>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa530e33657f68fc2e8eae9435ce430cb"> 205</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="l00206"></a><span class="lineno"> 206</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#ac6c537688366e73bb0ae5db49c0b2450">callSiteSet</a>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a5de67390d38bfacd5b63b776a0ecbfff"> 210</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="l00211"></a><span class="lineno"> 211</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> phiNodeMap.find(node) != phiNodeMap.end();</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac359813747b4f75920c5f395ba74f410"> 216</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="l00217"></a><span class="lineno"> 217</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> (funArgsListMap.find(func) != funArgsListMap.end());</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a615c056c876b59d1fd174a2ac9ade27c"> 221</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="l00222"></a><span class="lineno"> 222</span>&#160; {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a864c465fbfdbbbdcc7fc8bbe26737903">funArgsListMap</a>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a1cac93c15fcbf15798c4fe374380f8ae"> 226</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> PAGNodeList&amp; <a class="code" href="classSVF_1_1SVFIR.html#a1cac93c15fcbf15798c4fe374380f8ae">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="l00227"></a><span class="lineno"> 227</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; FunToArgsListMap::const_iterator it = funArgsListMap.find(func);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</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="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2a4185af81e7e10f0db74c39ee220101"> 233</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="l00234"></a><span class="lineno"> 234</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">return</span> (callSiteArgsListMap.find(cs) != callSiteArgsListMap.end());</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a346b9300ad16ef65e3ab4e11f88193a7"> 238</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="l00239"></a><span class="lineno"> 239</span>&#160; {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#aa0920f5f967efdb89e23f12d31b112a2">callSiteArgsListMap</a>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a432e99757dfe844fd8450f2ab4ff4093"> 243</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> PAGNodeList&amp; <a class="code" href="classSVF_1_1SVFIR.html#a432e99757dfe844fd8450f2ab4ff4093">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="l00244"></a><span class="lineno"> 244</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; CSToArgsListMap::const_iterator it = callSiteArgsListMap.find(cs);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</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="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a650b3931af337a92ffcb5dad5ab47b22"> 250</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="l00251"></a><span class="lineno"> 251</span>&#160; {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a11ab07f48c934f45c239393332aa60e1">callSiteRetMap</a>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a70aa4d730ef1d38ef9c46f5014465bdd"> 255</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="l00256"></a><span class="lineno"> 256</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; CSToRetMap::const_iterator it = callSiteRetMap.find(cs);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</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="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a170bef1e9a07ce0449faf66706ae6e61"> 261</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="l00262"></a><span class="lineno"> 262</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">return</span> callSiteRetMap.find(cs) != callSiteRetMap.end();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; }</div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#abd1bb12776dc9a17863a52ce2cd31958"> 266</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="l00267"></a><span class="lineno"> 267</span>&#160; {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a4cef56f7fc77b47dc6e65c59c98551c5">funRetMap</a>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; }</div><div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a34e27b8bcfeaafda190dcdb9169a346f"> 271</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="l00272"></a><span class="lineno"> 272</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; FunToRetMap::const_iterator it = funRetMap.find(func);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</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="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#afe8274c3b7317fccef5314662a182046"> 277</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="l00278"></a><span class="lineno"> 278</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">return</span> funRetMap.find(func) != funRetMap.end();</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a4b4592e3187bb6583aba63b2f374754e"> 285</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="l00286"></a><span class="lineno"> 286</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">return</span> GepValNodeMap.size();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#af7a98a5eb789178594063140c85cd21f"> 289</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="l00290"></a><span class="lineno"> 290</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> GepObjNodeMap.size();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#af37d6fc7f816d235c0a6158d43d6dda5"> 296</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#af37d6fc7f816d235c0a6158d43d6dda5">getGepValNode</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="l00297"></a><span class="lineno"> 297</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; GepValPNMap::const_iterator iter = GepValNodeMap.find(curInst);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span>(iter==GepValNodeMap.end()){</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> UINT_MAX;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; NodeLocationSetMap::const_iterator lit = iter-&gt;second.find(std::make_pair(base, ls));</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">if</span>(lit==iter-&gt;second.end())</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">return</span> UINT_MAX;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">return</span> lit-&gt;second;</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="l00310"></a><span class="lineno"> 310</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0"> 313</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="l00314"></a><span class="lineno"> 314</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a0a5f88766b7e11f1ea35befcbcea62dc">indCallSiteToFunPtrMap</a>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div><div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a533a01d01fab9e45cd1780f9bbd50b0f"> 317</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="l00318"></a><span class="lineno"> 318</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; CallSiteToFunPtrMap::const_iterator it = indCallSiteToFunPtrMap.find(cs);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</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="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; }</div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#abf209739a97b96ae0d1c8451fdc684e8"> 323</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="l00324"></a><span class="lineno"> 324</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; FunPtrToCallSitesMap::const_iterator it = funPtrToCallSitesMap.find(funPtr);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</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="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div><div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ad44e1ef13d047f8aea8f6ddf5510bd6c"> 329</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="l00330"></a><span class="lineno"> 330</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">return</span> (indCallSiteToFunPtrMap.find(cs) != indCallSiteToFunPtrMap.end());</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a9235a60e7332c8416e113e7360441d97"> 333</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="l00334"></a><span class="lineno"> 334</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">return</span> (funPtrToCallSitesMap.find(<span class="keywordtype">id</span>) != funPtrToCallSitesMap.end());</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6f41676ae91ba7fad38cc7387dd1c255"> 340</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="l00341"></a><span class="lineno"> 341</span>&#160; {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</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="l00343"></a><span class="lineno"> 343</span>&#160; }</div><div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ac1dbd64071f9822b0404f4ed9c8bd2cd"> 344</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="l00345"></a><span class="lineno"> 345</span>&#160; {</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> edge(src,dst,kind);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">SVFStmt::PAGEdgeSetTy</a>&amp; edgeSet = <a class="code" href="classSVF_1_1SVFIR.html#ac2dff0e76e4ee879dc023255e7e6a63e">getEdgeSet</a>(kind);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; SVFStmt::PAGEdgeSetTy::const_iterator it = edgeSet.find(&amp;edge);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</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="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">return</span> (*it);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1"> 358</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="l00359"></a><span class="lineno"> 359</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</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="l00361"></a><span class="lineno"> 361</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="l00362"></a><span class="lineno"> 362</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="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a25b86c16d11b4d50ccc28ead525687ae"> 366</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="l00367"></a><span class="lineno"> 367</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</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="l00369"></a><span class="lineno"> 369</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a2b80cf884eedb51f77a5e84def7d8793">getGepObjNode</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="l00375"></a><span class="lineno"> 375</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a2b80cf884eedb51f77a5e84def7d8793">getGepObjNode</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="l00377"></a><span class="lineno"> 377</span>&#160;</div><div class="line"><a name="l00378"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a702edc6714da142c16857995778a9f4b"> 378</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#a702edc6714da142c16857995778a9f4b">getFIObjNode</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="l00379"></a><span class="lineno"> 379</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</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="l00381"></a><span class="lineno"> 381</span>&#160; }</div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a44aae3b2a519cdbb704e852e7be9059a"> 382</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#a44aae3b2a519cdbb704e852e7be9059a">getFIObjNode</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="l00383"></a><span class="lineno"> 383</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</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="l00385"></a><span class="lineno"> 385</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="l00386"></a><span class="lineno"> 386</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="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a702edc6714da142c16857995778a9f4b">getFIObjNode</a>(obj-&gt;<a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>());</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6a71d2716530607d66d9e9035199d997"> 393</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="l00394"></a><span class="lineno"> 394</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</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="l00396"></a><span class="lineno"> 396</span>&#160; }</div><div class="line"><a name="l00397"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a18ca66c199b910b15f1bfa77dcc98c30"> 397</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="l00398"></a><span class="lineno"> 398</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</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="l00400"></a><span class="lineno"> 400</span>&#160; }</div><div class="line"><a name="l00401"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ad9895f2d075eb402390e3b01ed68e001"> 401</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="l00402"></a><span class="lineno"> 402</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</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="l00404"></a><span class="lineno"> 404</span>&#160; }</div><div class="line"><a name="l00405"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a17527c55d35ae5c18f00fd4dabe6acad"> 405</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="l00406"></a><span class="lineno"> 406</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</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="l00408"></a><span class="lineno"> 408</span>&#160; }</div><div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156"> 409</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="l00410"></a><span class="lineno"> 410</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</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="l00412"></a><span class="lineno"> 412</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="l00413"></a><span class="lineno"> 413</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="l00414"></a><span class="lineno"> 414</span>&#160; }</div><div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a07716ca7f769f704a80ccee1a6ad7ee2"> 415</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="l00416"></a><span class="lineno"> 416</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</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="l00418"></a><span class="lineno"> 418</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="l00419"></a><span class="lineno"> 419</span>&#160; {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">return</span> (fiNode-&gt;getMemObj()-&gt;hasPtrObj() == <span class="keyword">false</span>);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</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="l00423"></a><span class="lineno"> 423</span>&#160; {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">return</span> (gepNode-&gt;getMemObj()-&gt;isNonPtrFieldObj(gepNode-&gt;getLocationSet()));</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyObjVar&gt;(node))</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</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="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1SVFIR.html#a851075193a0b9a9b594848d6b3ba659e">getBaseValNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</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="l00443"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a4720426ab75f8d07e780995ffad7d51a"> 443</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#a4720426ab75f8d07e780995ffad7d51a">getBaseObjNode</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="l00444"></a><span class="lineno"> 444</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</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="l00446"></a><span class="lineno"> 446</span>&#160; }</div><div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749"> 447</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="l00448"></a><span class="lineno"> 448</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</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="l00450"></a><span class="lineno"> 450</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="l00451"></a><span class="lineno"> 451</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="l00452"></a><span class="lineno"> 452</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="l00453"></a><span class="lineno"> 453</span>&#160; }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</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#a5a635bc1142c388da1db87d9172c03ab">getAllFieldsObjNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1SVFIR.html#a5a635bc1142c388da1db87d9172c03ab">getAllFieldsObjNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</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="l00462"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0"> 462</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="l00463"></a><span class="lineno"> 463</span>&#160; {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</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="l00465"></a><span class="lineno"> 465</span>&#160; }</div><div class="line"><a name="l00466"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a18388bc282c5329a837c6a273893c4fb"> 466</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="l00467"></a><span class="lineno"> 467</span>&#160; {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</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="l00469"></a><span class="lineno"> 469</span>&#160; }</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</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="l00473"></a><span class="lineno"> 473</span>&#160;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</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="l00476"></a><span class="lineno"> 476</span>&#160;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR.html#a236b4fefd16e9c793c5bd6d576290841">print</a>();</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523"> 483</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="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordtype">bool</span> added = <a class="code" href="classSVF_1_1IRGraph.html#a6efd8215ac2484a16a9ab2afbde290b4">PAGEdgeKindToSetMap</a>[edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>()].insert(edge).second;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</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="l00486"></a><span class="lineno"> 486</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="l00487"></a><span class="lineno"> 487</span>&#160; {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a9f68ffe75e3d9457092ac2368aa08a27">totalPTAPAGEdge</a>++;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="classSVF_1_1IRGraph.html#a780372b8241dc1c76e31b0340d5d2401">PTAPAGEdgeKindToSetMap</a>[edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>()].insert(edge);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</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="l00496"></a><span class="lineno"> 496</span>&#160; {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</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="l00498"></a><span class="lineno"> 498</span>&#160; funEntryBlockNode-&gt;<a class="code" href="classSVF_1_1FunEntryBlockNode.html#ae6ebc073885c5d47f685c61097dadf20">addFormalParms</a>(arg);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; funArgsListMap[fun].push_back(arg);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }</div><div class="line"><a name="l00502"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a53774463f34bb8b528b179b72b48fd69"> 502</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="l00503"></a><span class="lineno"> 503</span>&#160; {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</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="l00505"></a><span class="lineno"> 505</span>&#160; funExitBlockNode-&gt;<a class="code" href="classSVF_1_1FunExitBlockNode.html#ae1499a3ea7d5bb90dccd5d04a8b97dfc">addFormalRet</a>(ret);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; funRetMap[fun] = ret;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="line"><a name="l00509"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a5fafbfd6a30b8796b92a3a1f3409767f"> 509</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="l00510"></a><span class="lineno"> 510</span>&#160; {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; callBlockNode-&gt;<a class="code" href="classSVF_1_1CallBlockNode.html#a6d819186e239e68c117af16ed405da84">addActualParms</a>(arg);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; callSiteArgsListMap[callBlockNode].push_back(arg);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; }</div><div class="line"><a name="l00515"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3c8070a1d7a6a705433b05dd633185b1"> 515</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="l00516"></a><span class="lineno"> 516</span>&#160; {</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; retBlockNode-&gt;<a class="code" href="classSVF_1_1RetBlockNode.html#ad2cd6f6589ce5464d6fbcac49f115714">addActualRet</a>(arg);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; callSiteRetMap[retBlockNode]= arg;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; }</div><div class="line"><a name="l00521"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aa91db3ebf92eacf077ae7b4d0735635b"> 521</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="l00522"></a><span class="lineno"> 522</span>&#160; {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordtype">bool</span> added = indCallSiteToFunPtrMap.insert(std::make_pair(cs,funPtr)).second;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; funPtrToCallSitesMap[funPtr].insert(cs);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</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="l00526"></a><span class="lineno"> 526</span>&#160; }</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</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="l00532"></a><span class="lineno"> 532</span>&#160; {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</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="l00534"></a><span class="lineno"> 534</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="l00535"></a><span class="lineno"> 535</span>&#160; }</div><div class="line"><a name="l00537"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d"> 537</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="l00538"></a><span class="lineno"> 538</span>&#160; {</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</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="l00540"></a><span class="lineno"> 540</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="l00541"></a><span class="lineno"> 541</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="l00542"></a><span class="lineno"> 542</span>&#160; }</div><div class="line"><a name="l00544"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a38f6d0c7db935fd4e556761f96f1fa09"> 544</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="l00545"></a><span class="lineno"> 545</span>&#160; {</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</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="l00547"></a><span class="lineno"> 547</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="l00548"></a><span class="lineno"> 548</span>&#160; }</div><div class="line"><a name="l00550"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6ade5bf3edc7b6c3faafc3e5ff3d0538"> 550</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="l00551"></a><span class="lineno"> 551</span>&#160; {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</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="l00553"></a><span class="lineno"> 553</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="l00554"></a><span class="lineno"> 554</span>&#160; }</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</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="l00559"></a><span class="lineno"> 559</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="l00561"></a><span class="lineno"> 561</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="l00563"></a><span class="lineno"> 563</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a6b1bb039f068ff2ab486214354df4684"> 566</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="l00567"></a><span class="lineno"> 567</span>&#160; {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</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="l00569"></a><span class="lineno"> 569</span>&#160; }</div><div class="line"><a name="l00570"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3071c94ea72048d74a65a409a906af35"> 570</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="l00571"></a><span class="lineno"> 571</span>&#160; {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</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="l00573"></a><span class="lineno"> 573</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="l00574"></a><span class="lineno"> 574</span>&#160; }</div><div class="line"><a name="l00575"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a4ee79c74a7a2cea5c063fa598ab89532"> 575</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="l00576"></a><span class="lineno"> 576</span>&#160; {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</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="l00578"></a><span class="lineno"> 578</span>&#160; }</div><div class="line"><a name="l00579"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2b532a5db0197c579b512fbcdb4d6220"> 579</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="l00580"></a><span class="lineno"> 580</span>&#160; {</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</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="l00582"></a><span class="lineno"> 582</span>&#160; }</div><div class="line"><a name="l00583"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#aff3f3ff198e7511576484dfda7bf051b"> 583</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="l00584"></a><span class="lineno"> 584</span>&#160; {</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</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="l00586"></a><span class="lineno"> 586</span>&#160; }</div><div class="line"><a name="l00587"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a2b1de62f88588b068d4eed125049ed8d"> 587</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="l00588"></a><span class="lineno"> 588</span>&#160; {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</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="l00590"></a><span class="lineno"> 590</span>&#160; }</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;</div><div class="line"><a name="l00594"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3face8a526a33d82ef7cde7602030bc9"> 594</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="l00595"></a><span class="lineno"> 595</span>&#160; {</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</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="l00597"></a><span class="lineno"> 597</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="l00598"></a><span class="lineno"> 598</span>&#160; }</div><div class="line"><a name="l00600"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a3a5d8b7f6286ec31b5a9038c88779151"> 600</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="l00601"></a><span class="lineno"> 601</span>&#160; {</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</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="l00603"></a><span class="lineno"> 603</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="l00604"></a><span class="lineno"> 604</span>&#160; }</div><div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a1f63adcd679596996ee2eabf0179462f"> 606</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="l00607"></a><span class="lineno"> 607</span>&#160; {</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</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="l00609"></a><span class="lineno"> 609</span>&#160; }</div><div class="line"><a name="l00611"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a078c01295f47bf12f1a2b8abfab8b28d"> 611</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="l00612"></a><span class="lineno"> 612</span>&#160; {</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</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="l00614"></a><span class="lineno"> 614</span>&#160; }</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;</div><div class="line"><a name="l00617"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a"> 617</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="l00618"></a><span class="lineno"> 618</span>&#160; {</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; globPAGEdgesSet.insert(edge);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; }</div><div class="line"><a name="l00622"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR.html#a51f28f03a236b244b636ca88c5511a30"> 622</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="l00623"></a><span class="lineno"> 623</span>&#160; {</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; callSiteSet.insert(call);</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; }</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a14fa2b06b44d89a8743373c8c69b160d">addAddrPE</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="l00631"></a><span class="lineno"> 631</span>&#160; <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#aa2ff7b368e9aa9c2abc979084a19e68b">addCopyPE</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="l00633"></a><span class="lineno"> 633</span>&#160; <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a1399b1a61d2c9afba49129427b13115d">addPhiNode</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="l00635"></a><span class="lineno"> 635</span>&#160; <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#aa1c1b20773bc547697323fe11b0dc5d5">addCmpPE</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="l00637"></a><span class="lineno"> 637</span>&#160; <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a9de8fffb3587d41844fc109bd0cfed4b">addBinaryOPPE</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="l00639"></a><span class="lineno"> 639</span>&#160; <a class="code" href="classSVF_1_1UnaryOPStmt.html">UnaryOPStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#af2f469e83e719b55161d2e4e5aac8741">addUnaryOPPE</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="l00641"></a><span class="lineno"> 641</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="l00643"></a><span class="lineno"> 643</span>&#160; <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#ad1217f1669f3507aa4da772d87934a04">addLoadPE</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="l00645"></a><span class="lineno"> 645</span>&#160; <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a80dd2807513a608b8f01d2325c0c0748">addStorePE</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="l00647"></a><span class="lineno"> 647</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="l00649"></a><span class="lineno"> 649</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="l00651"></a><span class="lineno"> 651</span>&#160; <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#ad68d676d6922a2eb29eeb5b5437bc323">addGepPE</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="l00653"></a><span class="lineno"> 653</span>&#160; <a class="code" href="classSVF_1_1NormalGepStmt.html">NormalGepStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#adf0cde3268365cff3c7054e4433d8c23">addNormalGepPE</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="l00655"></a><span class="lineno"> 655</span>&#160; <a class="code" href="classSVF_1_1VariantGepStmt.html">VariantGepStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#a82db2560583d6ff1d61d9512d142fa10">addVariantGepPE</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="l00657"></a><span class="lineno"> 657</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="l00659"></a><span class="lineno"> 659</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="l00661"></a><span class="lineno"> 661</span>&#160;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* <a class="code" href="classSVF_1_1SVFIR.html#aba877353c0eb383bf5ce216e7cb605bc">addBlackHoleAddrPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node);</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"> 665</span>&#160;</div><div class="line"><a name="l00666"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ac47d39fb505e8ed8d2c6b6b318be5f4d"> 666</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="l00667"></a><span class="lineno"> 667</span>&#160;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;} <span class="comment">// End namespace SVF</span></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;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</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#l00070">SVFIR.h:70</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
- <div class="ttc" id="classSVF_1_1SVFIR_html_a147a1a57edd4d2eff937b28f677866d2"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a147a1a57edd4d2eff937b28f677866d2">SVF::SVFIR::addStorePE</a></div><div class="ttdeci">StorePE * addStorePE(NodeID src, NodeID dst, const IntraBlockNode *val)</div><div class="ttdoc">Add Store edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00204">SVFIR.cpp:204</a></div></div>
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#l00196">SVFStatements.h:196</a></div></div>
72
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a80dd2807513a608b8f01d2325c0c0748"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a80dd2807513a608b8f01d2325c0c0748">SVF::SVFIR::addStorePE</a></div><div class="ttdeci">StoreStmt * addStorePE(NodeID src, NodeID dst, const IntraBlockNode *val)</div><div class="ttdoc">Add Store edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00204">SVFIR.cpp:204</a></div></div>
73
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a9de8fffb3587d41844fc109bd0cfed4b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a9de8fffb3587d41844fc109bd0cfed4b">SVF::SVFIR::addBinaryOPPE</a></div><div class="ttdeci">BinaryOPStmt * addBinaryOPPE(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00129">SVFIR.cpp:129</a></div></div>
72
74
  <div class="ttc" id="classSVF_1_1SVFStmt_html_adb92a92f5c878576dff26cb38eab8c8c"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#adb92a92f5c878576dff26cb38eab8c8c">SVF::SVFStmt::setICFGNode</a></div><div class="ttdeci">void setICFGNode(ICFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00128">SVFStatements.h:128</a></div></div>
73
75
  <div class="ttc" id="classSVF_1_1SVFIR_html_aba877353c0eb383bf5ce216e7cb605bc"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aba877353c0eb383bf5ce216e7cb605bc">SVF::SVFIR::addBlackHoleAddrPE</a></div><div class="ttdeci">SVFStmt * addBlackHoleAddrPE(NodeID node)</div><div class="ttdoc">Set a pointer points-to black hole (e.g. int2ptr) </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00258">SVFIR.cpp:258</a></div></div>
74
- <div class="ttc" id="classSVF_1_1SVFIR_html_a76a5c898ac4b12207cb24c1f68aac786"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a76a5c898ac4b12207cb24c1f68aac786">SVF::SVFIR::CopyPEList</a></div><div class="ttdeci">std::vector&lt; const CopyPE * &gt; CopyPEList</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00058">SVFIR.h:58</a></div></div>
75
76
  <div class="ttc" id="classSVF_1_1SVFIR_html_ab715a8e83a4ec45fb86298fef3eda95a"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ab715a8e83a4ec45fb86298fef3eda95a">SVF::SVFIR::NodePairSetMap</a></div><div class="ttdeci">Map&lt; NodePair, NodeID &gt; NodePairSetMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00072">SVFIR.h:72</a></div></div>
76
- <div class="ttc" id="classSVF_1_1SVFIR_html_a0aefb9f6ac03251dd2893e8d5fa30c30"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a0aefb9f6ac03251dd2893e8d5fa30c30">SVF::SVFIR::addCopyPE</a></div><div class="ttdeci">CopyPE * addCopyPE(NodeID src, NodeID dst)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00069">SVFIR.cpp:69</a></div></div>
77
77
  <div class="ttc" id="classSVF_1_1SVFIR_html_a6f46446d667258b32ddc1ccab48f651c"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a6f46446d667258b32ddc1ccab48f651c">SVF::SVFIR::getMemToFieldsMap</a></div><div class="ttdeci">MemObjToFieldsMap &amp; getMemToFieldsMap()</div><div class="ttdoc">Return memToFieldsMap. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00123">SVFIR.h:123</a></div></div>
78
78
  <div class="ttc" id="classSVF_1_1SVFIR_html_a3c014227661d8976714772205611c252"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3c014227661d8976714772205611c252">SVF::SVFIR::memToFieldsMap</a></div><div class="ttdeci">MemObjToFieldsMap memToFieldsMap</div><div class="ttdoc">Map a mem object id to all its fields. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00081">SVFIR.h:81</a></div></div>
79
79
  <div class="ttc" id="classSVF_1_1GenericEdge_html_abe8525c542def8162b094c169a01993b"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">SVF::GenericEdge::getEdgeKind</a></div><div class="ttdeci">GEdgeKind getEdgeKind() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00081">GenericGraph.h:81</a></div></div>
80
80
  <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#l00397">SVFIR.h:397</a></div></div>
81
81
  <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>
82
82
  <div class="ttc" id="classSVF_1_1IRGraph_html_ae9547730a27575194977b240647e8ce2"><div class="ttname"><a href="classSVF_1_1IRGraph.html#ae9547730a27575194977b240647e8ce2">SVF::IRGraph::PAGEdgeSet</a></div><div class="ttdeci">Set&lt; const SVFStmt * &gt; PAGEdgeSet</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00051">IRGraph.h:51</a></div></div>
83
+ <div class="ttc" id="classSVF_1_1SVFIR_html_ad1217f1669f3507aa4da772d87934a04"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad1217f1669f3507aa4da772d87934a04">SVF::SVFIR::addLoadPE</a></div><div class="ttdeci">LoadStmt * addLoadPE(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>
83
84
  <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>
84
85
  <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>
86
+ <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>
85
87
  <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#l00845">SVFStatements.h:845</a></div></div>
86
88
  <div class="ttc" id="classSVF_1_1SVFIR_html_aaf86146b5e765d1f278b6d812bf913f5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aaf86146b5e765d1f278b6d812bf913f5">SVF::SVFIR::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">Singleton pattern here to enable instance of SVFIR can only be created once. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00088">SVFIR.h:88</a></div></div>
87
89
  <div class="ttc" id="classSVF_1_1SVFIR_html_a078c01295f47bf12f1a2b8abfab8b28d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a078c01295f47bf12f1a2b8abfab8b28d">SVF::SVFIR::addVarargNode</a></div><div class="ttdeci">NodeID addVarargNode(const SVFFunction *, SVFVar *node, NodeID i)</div><div class="ttdoc">Add a unique vararg node for a procedure. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00611">SVFIR.h:611</a></div></div>
@@ -89,10 +91,11 @@ $(function() {
89
91
  <div class="ttc" id="classSVF_1_1SVFIR_html_a3d62b2a06fe1ec531cbde12131fa31df"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3d62b2a06fe1ec531cbde12131fa31df">SVF::SVFIR::~SVFIR</a></div><div class="ttdeci">virtual ~SVFIR()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00146">SVFIR.h:146</a></div></div>
90
92
  <div class="ttc" id="classSVF_1_1SVFIR_html_aa7e98cd2fd599aedefa4c2e6fb659da0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa7e98cd2fd599aedefa4c2e6fb659da0">SVF::SVFIR::addDummyValNode</a></div><div class="ttdeci">NodeID addDummyValNode()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00462">SVFIR.h:462</a></div></div>
91
93
  <div class="ttc" id="classSVF_1_1SVFIR_html_abd9f622b55839d6796ca2576f2323498"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abd9f622b55839d6796ca2576f2323498">SVF::SVFIR::candidatePointers</a></div><div class="ttdeci">OrderedNodeSet candidatePointers</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00093">SVFIR.h:93</a></div></div>
94
+ <div class="ttc" id="classSVF_1_1SVFIR_html_adf0cde3268365cff3c7054e4433d8c23"><div class="ttname"><a href="classSVF_1_1SVFIR.html#adf0cde3268365cff3c7054e4433d8c23">SVF::SVFIR::addNormalGepPE</a></div><div class="ttdeci">NormalGepStmt * addNormalGepPE(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>
92
95
  <div class="ttc" id="classSVF_1_1SVFIR_html_a11ab07f48c934f45c239393332aa60e1"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a11ab07f48c934f45c239393332aa60e1">SVF::SVFIR::callSiteRetMap</a></div><div class="ttdeci">CSToRetMap callSiteRetMap</div><div class="ttdoc">Map a callsite to its callsite returns PAGNodes. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00086">SVFIR.h:86</a></div></div>
93
96
  <div class="ttc" id="classSVF_1_1SVFIR_html_a2b1de62f88588b068d4eed125049ed8d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2b1de62f88588b068d4eed125049ed8d">SVF::SVFIR::addBlackholePtrNode</a></div><div class="ttdeci">NodeID addBlackholePtrNode()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00587">SVFIR.h:587</a></div></div>
94
97
  <div class="ttc" id="classSVF_1_1SVFIR_html_a4b4592e3187bb6583aba63b2f374754e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a4b4592e3187bb6583aba63b2f374754e">SVF::SVFIR::getFieldValNodeNum</a></div><div class="ttdeci">Size_t getFieldValNodeNum() const</div><div class="ttdoc">Node and edge statistics. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00285">SVFIR.h:285</a></div></div>
95
- <div class="ttc" id="classSVF_1_1ObjPN_html_a63ee5624271a63c2dc4f7f3ed2dcefdf"><div class="ttname"><a href="classSVF_1_1ObjPN.html#a63ee5624271a63c2dc4f7f3ed2dcefdf">SVF::ObjPN::getMemObj</a></div><div class="ttdeci">const MemObj * getMemObj() const</div><div class="ttdoc">Return memory object. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00357">SVFVariables.h:357</a></div></div>
98
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a14fa2b06b44d89a8743373c8c69b160d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a14fa2b06b44d89a8743373c8c69b160d">SVF::SVFIR::addAddrPE</a></div><div class="ttdeci">AddrStmt * addAddrPE(NodeID src, NodeID dst)</div><div class="ttdoc">Add an edge into SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00051">SVFIR.cpp:51</a></div></div>
96
99
  <div class="ttc" id="classSVF_1_1SVFIR_html_af37d6fc7f816d235c0a6158d43d6dda5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af37d6fc7f816d235c0a6158d43d6dda5">SVF::SVFIR::getGepValNode</a></div><div class="ttdeci">NodeID getGepValNode(const Value *curInst, NodeID base, const LocationSet &amp;ls) const</div><div class="ttdoc">Due to constaint expression, curInst is used to distinguish different instructions (e...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00296">SVFIR.h:296</a></div></div>
97
100
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
98
101
  <div class="ttc" id="classSVF_1_1IRGraph_html"><div class="ttname"><a href="classSVF_1_1IRGraph.html">SVF::IRGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00048">IRGraph.h:48</a></div></div>
@@ -104,10 +107,11 @@ $(function() {
104
107
  <div class="ttc" id="classSVF_1_1SVFIR_html_a70aa4d730ef1d38ef9c46f5014465bdd"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a70aa4d730ef1d38ef9c46f5014465bdd">SVF::SVFIR::getCallSiteRet</a></div><div class="ttdeci">const SVFVar * getCallSiteRet(const RetBlockNode *cs) const</div><div class="ttdoc">Get callsite return. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00255">SVFIR.h:255</a></div></div>
105
108
  <div class="ttc" id="classSVF_1_1SVFIR_html_a1f63adcd679596996ee2eabf0179462f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a1f63adcd679596996ee2eabf0179462f">SVF::SVFIR::addRetNode</a></div><div class="ttdeci">NodeID addRetNode(const SVFFunction *, SVFVar *node, NodeID i)</div><div class="ttdoc">Add a unique return node for a procedure. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00606">SVFIR.h:606</a></div></div>
106
109
  <div class="ttc" id="classSVF_1_1SVFIR_html_a38f6d0c7db935fd4e556761f96f1fa09"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a38f6d0c7db935fd4e556761f96f1fa09">SVF::SVFIR::addRetNode</a></div><div class="ttdeci">NodeID addRetNode(const SVFFunction *val, NodeID i)</div><div class="ttdoc">Add a unique return node for a procedure. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00544">SVFIR.h:544</a></div></div>
107
- <div class="ttc" id="classSVF_1_1SVFIR_html_a93148e8b0e21d2b920f53d46493c1f58"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a93148e8b0e21d2b920f53d46493c1f58">SVF::SVFIR::PHINodeMap</a></div><div class="ttdeci">Map&lt; const SVFVar *, PhiPE * &gt; PHINodeMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00059">SVFIR.h:59</a></div></div>
110
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a3080e37444cacdb0f50f1de88f36b73a"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3080e37444cacdb0f50f1de88f36b73a">SVF::SVFIR::CopyPEList</a></div><div class="ttdeci">std::vector&lt; const CopyStmt * &gt; CopyPEList</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00058">SVFIR.h:58</a></div></div>
111
+ <div class="ttc" id="classSVF_1_1SVFIR_html_aa2ff7b368e9aa9c2abc979084a19e68b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa2ff7b368e9aa9c2abc979084a19e68b">SVF::SVFIR::addCopyPE</a></div><div class="ttdeci">CopyStmt * addCopyPE(NodeID src, NodeID dst)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00069">SVFIR.cpp:69</a></div></div>
108
112
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
109
- <div class="ttc" id="classSVF_1_1UnaryOPPE_html"><div class="ttname"><a href="classSVF_1_1UnaryOPPE.html">SVF::UnaryOPPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00474">SVFStatements.h:474</a></div></div>
110
113
  <div class="ttc" id="classSVF_1_1SVFIR_html_af76a55c3b8255a81a566bdce35ffc749"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">SVF::SVFIR::getBaseObj</a></div><div class="ttdeci">const MemObj * getBaseObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00447">SVFIR.h:447</a></div></div>
114
+ <div class="ttc" id="classSVF_1_1GepStmt_html"><div class="ttname"><a href="classSVF_1_1GepStmt.html">SVF::GepStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00664">SVFStatements.h:664</a></div></div>
111
115
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_ad095e4a569d399cadc03ce864f61c394"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#ad095e4a569d399cadc03ce864f61c394">SVF::SymbolTableInfo::isNullPtr</a></div><div class="ttdeci">static bool isNullPtr(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00194">SymbolTableInfo.h:194</a></div></div>
112
116
  <div class="ttc" id="classSVF_1_1SVFIR_html_a2a4185af81e7e10f0db74c39ee220101"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2a4185af81e7e10f0db74c39ee220101">SVF::SVFIR::hasCallSiteArgsMap</a></div><div class="ttdeci">bool hasCallSiteArgsMap(const CallBlockNode *cs) const</div><div class="ttdoc">Callsite has argument list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00233">SVFIR.h:233</a></div></div>
113
117
  <div class="ttc" id="classSVF_1_1IRGraph_html_aafe9544b07a8c40bf915613df11df48e"><div class="ttname"><a href="classSVF_1_1IRGraph.html#aafe9544b07a8c40bf915613df11df48e">SVF::IRGraph::getBlackHoleObj</a></div><div class="ttdeci">const MemObj * getBlackHoleObj() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00160">IRGraph.h:160</a></div></div>
@@ -117,22 +121,26 @@ $(function() {
117
121
  <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00233">BasicTypes.h:233</a></div></div>
118
122
  <div class="ttc" id="classSVF_1_1SVFIR_html_a3cf5be37df32cdcd44fa7b1971fae2de"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3cf5be37df32cdcd44fa7b1971fae2de">SVF::SVFIR::GepValPNMap</a></div><div class="ttdeci">Map&lt; const Value *, NodeLocationSetMap &gt; GepValPNMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00071">SVFIR.h:71</a></div></div>
119
123
  <div class="ttc" id="classSVF_1_1SVFIR_html_a6f41676ae91ba7fad38cc7387dd1c255"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a6f41676ae91ba7fad38cc7387dd1c255">SVF::SVFIR::getIntraPAGEdge</a></div><div class="ttdeci">SVFStmt * getIntraPAGEdge(NodeID src, NodeID dst, SVFStmt::PEDGEK kind)</div><div class="ttdoc">Get an edge according to src, dst and kind. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00340">SVFIR.h:340</a></div></div>
120
- <div class="ttc" id="classSVF_1_1StorePE_html"><div class="ttname"><a href="classSVF_1_1StorePE.html">SVF::StorePE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00591">SVFStatements.h:591</a></div></div>
121
124
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a704b917b1e1dbaf9cd758fa9acc1083b"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a704b917b1e1dbaf9cd758fa9acc1083b">SVF::SymbolTableInfo::isConstantObj</a></div><div class="ttdeci">static bool isConstantObj(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00202">SymbolTableInfo.h:202</a></div></div>
122
125
  <div class="ttc" id="classSVF_1_1IRGraph_html_a9f68ffe75e3d9457092ac2368aa08a27"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a9f68ffe75e3d9457092ac2368aa08a27">SVF::IRGraph::totalPTAPAGEdge</a></div><div class="ttdeci">u32_t totalPTAPAGEdge</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00059">IRGraph.h:59</a></div></div>
126
+ <div class="ttc" id="classSVF_1_1VariantGepStmt_html"><div class="ttname"><a href="classSVF_1_1VariantGepStmt.html">SVF::VariantGepStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00754">SVFStatements.h:754</a></div></div>
127
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a82db2560583d6ff1d61d9512d142fa10"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a82db2560583d6ff1d61d9512d142fa10">SVF::SVFIR::addVariantGepPE</a></div><div class="ttdeci">VariantGepStmt * addVariantGepPE(NodeID src, NodeID dst)</div><div class="ttdoc">Add Variant(Gep) edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00347">SVFIR.cpp:347</a></div></div>
123
128
  <div class="ttc" id="classSVF_1_1SVFIR_html_a432e99757dfe844fd8450f2ab4ff4093"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a432e99757dfe844fd8450f2ab4ff4093">SVF::SVFIR::getCallSiteArgsList</a></div><div class="ttdeci">const PAGNodeList &amp; getCallSiteArgsList(const CallBlockNode *cs) const</div><div class="ttdoc">Get callsite argument list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00243">SVFIR.h:243</a></div></div>
124
129
  <div class="ttc" id="classSVF_1_1SVFIR_html_a323e459ca43e239ddcdc8d00c6a8db6d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a323e459ca43e239ddcdc8d00c6a8db6d">SVF::SVFIR::NodeLocationSet</a></div><div class="ttdeci">std::pair&lt; NodeID, LocationSet &gt; NodeLocationSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00068">SVFIR.h:68</a></div></div>
125
130
  <div class="ttc" id="classSVF_1_1SVFIR_html_a615c056c876b59d1fd174a2ac9ade27c"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a615c056c876b59d1fd174a2ac9ade27c">SVF::SVFIR::getFunArgsMap</a></div><div class="ttdeci">FunToArgsListMap &amp; getFunArgsMap()</div><div class="ttdoc">Get function arguments list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00221">SVFIR.h:221</a></div></div>
126
131
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
127
132
  <div class="ttc" id="classSVF_1_1SVFIR_html_ac1dbd64071f9822b0404f4ed9c8bd2cd"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac1dbd64071f9822b0404f4ed9c8bd2cd">SVF::SVFIR::getIntraPAGEdge</a></div><div class="ttdeci">SVFStmt * getIntraPAGEdge(SVFVar *src, SVFVar *dst, SVFStmt::PEDGEK kind)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00344">SVFIR.h:344</a></div></div>
133
+ <div class="ttc" id="classSVF_1_1ObjVar_html"><div class="ttname"><a href="classSVF_1_1ObjVar.html">SVF::ObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00317">SVFVariables.h:317</a></div></div>
128
134
  <div class="ttc" id="classSVF_1_1SVFIR_html_a346b9300ad16ef65e3ab4e11f88193a7"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a346b9300ad16ef65e3ab4e11f88193a7">SVF::SVFIR::getCallSiteArgsMap</a></div><div class="ttdeci">CSToArgsListMap &amp; getCallSiteArgsMap()</div><div class="ttdoc">Get callsite argument list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00238">SVFIR.h:238</a></div></div>
129
135
  <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#l00107">SVFIR.h:107</a></div></div>
130
136
  <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#l00583">SVFIR.h:583</a></div></div>
131
137
  <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>
138
+ <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>
132
139
  <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#l00063">SVFIR.h:63</a></div></div>
133
- <div class="ttc" id="classSVF_1_1SVFIR_html_a33d8fad47352f7ca8aac035eb2adb57e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a33d8fad47352f7ca8aac035eb2adb57e">SVF::SVFIR::addVariantGepPE</a></div><div class="ttdeci">VariantGepPE * addVariantGepPE(NodeID src, NodeID dst)</div><div class="ttdoc">Add Variant(Gep) edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00347">SVFIR.cpp:347</a></div></div>
134
140
  <div class="ttc" id="classSVF_1_1SVFIR_html_a711d8a047ab8db4fdcac9d53aadf561c"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a711d8a047ab8db4fdcac9d53aadf561c">SVF::SVFIR::inst2PAGEdgesMap</a></div><div class="ttdeci">Inst2PAGEdgesMap inst2PAGEdgesMap</div><div class="ttdoc">Map a instruction to its PAGEdges. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00077">SVFIR.h:77</a></div></div>
135
141
  <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>
142
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a08a05dfa6b9734936bb92b3969dbce3b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a08a05dfa6b9734936bb92b3969dbce3b">SVF::SVFIR::PHINodeMap</a></div><div class="ttdeci">Map&lt; const SVFVar *, PhiStmt * &gt; PHINodeMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00059">SVFIR.h:59</a></div></div>
143
+ <div class="ttc" id="classSVF_1_1ObjVar_html_a6a4feb73b54e602407e35eeb09f55930"><div class="ttname"><a href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">SVF::ObjVar::getMemObj</a></div><div class="ttdeci">const MemObj * getMemObj() const</div><div class="ttdoc">Return memory object. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00357">SVFVariables.h:357</a></div></div>
136
144
  <div class="ttc" id="classSVF_1_1SVFIR_html_a294bb5e174030882a385c790ab835bb3"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a294bb5e174030882a385c790ab835bb3">SVF::SVFIR::ExternalPAG</a></div><div class="ttdeci">friend class ExternalPAG</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00047">SVFIR.h:47</a></div></div>
137
145
  <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00100">SVFBasicTypes.h:100</a></div></div>
138
146
  <div class="ttc" id="classSVF_1_1SVFIR_html_ab4c2e6d44c679a9ba117843f2234784b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ab4c2e6d44c679a9ba117843f2234784b">SVF::SVFIR::CallSiteSet</a></div><div class="ttdeci">Set&lt; const CallBlockNode * &gt; CallSiteSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00052">SVFIR.h:52</a></div></div>
@@ -147,19 +155,20 @@ $(function() {
147
155
  <div class="ttc" id="classSVF_1_1SVFIR_html_a53774463f34bb8b528b179b72b48fd69"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a53774463f34bb8b528b179b72b48fd69">SVF::SVFIR::addFunRet</a></div><div class="ttdeci">void addFunRet(const SVFFunction *fun, const SVFVar *ret)</div><div class="ttdoc">Add function returns. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00502">SVFIR.h:502</a></div></div>
148
156
  <div class="ttc" id="classSVF_1_1SVFIR_html_a3a5d8b7f6286ec31b5a9038c88779151"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3a5d8b7f6286ec31b5a9038c88779151">SVF::SVFIR::addObjNode</a></div><div class="ttdeci">NodeID addObjNode(const Value *, SVFVar *node, NodeID i)</div><div class="ttdoc">Add a memory obj node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00600">SVFIR.h:600</a></div></div>
149
157
  <div class="ttc" id="classSVF_1_1SVFIR_html_a9235a60e7332c8416e113e7360441d97"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a9235a60e7332c8416e113e7360441d97">SVF::SVFIR::isFunPtr</a></div><div class="ttdeci">bool isFunPtr(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00333">SVFIR.h:333</a></div></div>
158
+ <div class="ttc" id="classSVF_1_1SVFIR_html_ad68d676d6922a2eb29eeb5b5437bc323"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad68d676d6922a2eb29eeb5b5437bc323">SVF::SVFIR::addGepPE</a></div><div class="ttdeci">GepStmt * addGepPE(NodeID src, NodeID dst, const LocationSet &amp;ls, bool constGep)</div><div class="ttdoc">Add Gep edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00308">SVFIR.cpp:308</a></div></div>
150
159
  <div class="ttc" id="classSVF_1_1SVFIR_html_a1ac1e7752e98abff7054f4caa709260d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a1ac1e7752e98abff7054f4caa709260d">SVF::SVFIR::addGepObjNode</a></div><div class="ttdeci">NodeID addGepObjNode(const MemObj *obj, const LocationSet &amp;ls)</div><div class="ttdoc">Add a field obj node, this method can only invoked by getGepObjNode. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00429">SVFIR.cpp:429</a></div></div>
151
160
  <div class="ttc" id="classSVF_1_1SVFIR_html_aa530e33657f68fc2e8eae9435ce430cb"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa530e33657f68fc2e8eae9435ce430cb">SVF::SVFIR::getCallSiteSet</a></div><div class="ttdeci">const CallSiteSet &amp; getCallSiteSet() const</div><div class="ttdoc">Get all callsites. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00205">SVFIR.h:205</a></div></div>
152
161
  <div class="ttc" id="classSVF_1_1SVFIR_html_a38366ab3152ad7f6fd649805f7b08d6b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a38366ab3152ad7f6fd649805f7b08d6b">SVF::SVFIR::inst2PTAPAGEdgesMap</a></div><div class="ttdeci">Inst2PAGEdgesMap inst2PTAPAGEdgesMap</div><div class="ttdoc">Map a instruction to its PointerAnalysis related PAGEdges. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00078">SVFIR.h:78</a></div></div>
153
- <div class="ttc" id="classSVF_1_1SVFIR_html_a09e5b8af97c902bf25ff8f1542346138"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a09e5b8af97c902bf25ff8f1542346138">SVF::SVFIR::getObject</a></div><div class="ttdeci">const MemObj * getObject(const ObjPN *node) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00366">SVFIR.h:366</a></div></div>
154
162
  <div class="ttc" id="classSVF_1_1IRGraph_html_a4f5792216c6f38c32dac5074862ffc50"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a4f5792216c6f38c32dac5074862ffc50">SVF::IRGraph::getMemObj</a></div><div class="ttdeci">const MemObj * getMemObj(const Value *val) const</div><div class="ttdoc">get MemObj according to LLVM value </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00089">IRGraph.h:89</a></div></div>
155
163
  <div class="ttc" id="classSVF_1_1SVFIR_html_a93bc14960cdd4eb345c64e9b79757ccf"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a93bc14960cdd4eb345c64e9b79757ccf">SVF::SVFIR::addValNode</a></div><div class="ttdeci">NodeID addValNode(const Value *val, NodeID i)</div><div class="ttdoc">add node into SVFIR </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00531">SVFIR.h:531</a></div></div>
156
164
  <div class="ttc" id="classSVF_1_1CallPE_html"><div class="ttname"><a href="classSVF_1_1CallPE.html">SVF::CallPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00793">SVFStatements.h:793</a></div></div>
165
+ <div class="ttc" id="classSVF_1_1UnaryOPStmt_html"><div class="ttname"><a href="classSVF_1_1UnaryOPStmt.html">SVF::UnaryOPStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00474">SVFStatements.h:474</a></div></div>
157
166
  <div class="ttc" id="classSVF_1_1FunEntryBlockNode_html"><div class="ttname"><a href="classSVF_1_1FunEntryBlockNode.html">SVF::FunEntryBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00251">ICFGNode.h:251</a></div></div>
167
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a1399b1a61d2c9afba49129427b13115d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a1399b1a61d2c9afba49129427b13115d">SVF::SVFIR::addPhiNode</a></div><div class="ttdeci">PhiStmt * addPhiNode(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>
158
168
  <div class="ttc" id="classSVF_1_1SVFIR_html_a83bc8ecf4c5d10af10af3c8c44b9882d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a83bc8ecf4c5d10af10af3c8c44b9882d">SVF::SVFIR::addObjNode</a></div><div class="ttdeci">NodeID addObjNode(const Value *val, NodeID i)</div><div class="ttdoc">Add a memory obj node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00537">SVFIR.h:537</a></div></div>
159
169
  <div class="ttc" id="classSVF_1_1SVFIR_html_a7990c72dd6d645d713f19ed973841484"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7990c72dd6d645d713f19ed973841484">SVF::SVFIR::getAllValidPtrs</a></div><div class="ttdeci">OrderedNodeSet &amp; getAllValidPtrs()</div><div class="ttdoc">Return valid pointers. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00138">SVFIR.h:138</a></div></div>
160
170
  <div class="ttc" id="classSVF_1_1SVFIR_html_ab0d0aa216dbf7cc8f5b8030d5217e89c"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ab0d0aa216dbf7cc8f5b8030d5217e89c">SVF::SVFIR::NodeOffset</a></div><div class="ttdeci">std::pair&lt; NodeID, Size_t &gt; NodeOffset</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00067">SVFIR.h:67</a></div></div>
161
171
  <div class="ttc" id="classSVF_1_1SVFIR_html_a51f28f03a236b244b636ca88c5511a30"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a51f28f03a236b244b636ca88c5511a30">SVF::SVFIR::addCallSite</a></div><div class="ttdeci">void addCallSite(const CallBlockNode *call)</div><div class="ttdoc">Add callsites. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00622">SVFIR.h:622</a></div></div>
162
- <div class="ttc" id="classSVF_1_1FIObjPN_html"><div class="ttname"><a href="classSVF_1_1FIObjPN.html">SVF::FIObjPN</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00527">SVFVariables.h:527</a></div></div>
163
172
  <div class="ttc" id="classSVF_1_1SVFIR_html_abd1bb12776dc9a17863a52ce2cd31958"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abd1bb12776dc9a17863a52ce2cd31958">SVF::SVFIR::getFunRets</a></div><div class="ttdeci">FunToRetMap &amp; getFunRets()</div><div class="ttdoc">Get function return list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00266">SVFIR.h:266</a></div></div>
164
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>
165
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#l00329">SVFIR.h:329</a></div></div>
@@ -170,7 +179,6 @@ $(function() {
170
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>
171
180
  <div class="ttc" id="classSVF_1_1SVFIR_html_a90f8da69c50f9aa82366ca9b88eb5027"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a90f8da69c50f9aa82366ca9b88eb5027">SVF::SVFIR::hasPTAPAGEdgeList</a></div><div class="ttdeci">bool hasPTAPAGEdgeList(const ICFGNode *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00177">SVFIR.h:177</a></div></div>
172
181
  <div class="ttc" id="classSVF_1_1SVFIR_html_a945fd37adc7071bd71d7aff65445544e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a945fd37adc7071bd71d7aff65445544e">SVF::SVFIR::Inst2PAGEdgesMap</a></div><div class="ttdeci">Map&lt; const ICFGNode *, PAGEdgeList &gt; Inst2PAGEdgesMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00065">SVFIR.h:65</a></div></div>
173
- <div class="ttc" id="classSVF_1_1VariantGepPE_html"><div class="ttname"><a href="classSVF_1_1VariantGepPE.html">SVF::VariantGepPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00754">SVFStatements.h:754</a></div></div>
174
182
  <div class="ttc" id="classSVF_1_1SVFIR_html_ab6abb822445c9b3f5cb2b7206042e940"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ab6abb822445c9b3f5cb2b7206042e940">SVF::SVFIR::MemObjToFieldsMap</a></div><div class="ttdeci">Map&lt; NodeID, NodeBS &gt; MemObjToFieldsMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00055">SVFIR.h:55</a></div></div>
175
183
  <div class="ttc" id="classSVF_1_1SVFIR_html_af9c840e4b82fe9fd9493eabaa2b52bd5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af9c840e4b82fe9fd9493eabaa2b52bd5">SVF::SVFIR::funPtrToCallSitesMap</a></div><div class="ttdeci">FunPtrToCallSitesMap funPtrToCallSitesMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00090">SVFIR.h:90</a></div></div>
176
184
  <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
@@ -181,13 +189,15 @@ $(function() {
181
189
  <div class="ttc" id="classSVF_1_1SVFIR_html_ad0c6908c3e4ff83d0eb34906826d2a10"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad0c6908c3e4ff83d0eb34906826d2a10">SVF::SVFIR::getInstPTAPAGEdgeList</a></div><div class="ttdeci">PAGEdgeList &amp; getInstPTAPAGEdgeList(const ICFGNode *inst)</div><div class="ttdoc">Given an instruction, get all its PTA PAGEdges. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00187">SVFIR.h:187</a></div></div>
182
190
  <div class="ttc" id="namespaceSVF_html_a2db29836a72e8d86e9baa6d8d55d2978"><div class="ttname"><a href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">SVF::Size_t</a></div><div class="ttdeci">signed long Size_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00078">SVFBasicTypes.h:78</a></div></div>
183
191
  <div class="ttc" id="classSVF_1_1SVFIR_html_ae3d9b4acb63a7dbe316e87bad4e3987a"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae3d9b4acb63a7dbe316e87bad4e3987a">SVF::SVFIR::addGlobalPAGEdge</a></div><div class="ttdeci">void addGlobalPAGEdge(const SVFStmt *edge)</div><div class="ttdoc">Add global PAGEdges (not in a procedure) </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00617">SVFIR.h:617</a></div></div>
184
- <div class="ttc" id="classSVF_1_1NormalGepPE_html"><div class="ttname"><a href="classSVF_1_1NormalGepPE.html">SVF::NormalGepPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00704">SVFStatements.h:704</a></div></div>
192
+ <div class="ttc" id="classSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00628">SVFStatements.h:628</a></div></div>
185
193
  <div class="ttc" id="classSVF_1_1BranchStmt_html"><div class="ttname"><a href="classSVF_1_1BranchStmt.html">SVF::BranchStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00528">SVFStatements.h:528</a></div></div>
186
194
  <div class="ttc" id="classSVF_1_1RetBlockNode_html"><div class="ttname"><a href="classSVF_1_1RetBlockNode.html">SVF::RetBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00459">ICFGNode.h:459</a></div></div>
187
195
  <div class="ttc" id="classSVF_1_1IRGraph_html_aceae1e4e49a1d2e63ef3d71a7e5ef3eb"><div class="ttname"><a href="classSVF_1_1IRGraph.html#aceae1e4e49a1d2e63ef3d71a7e5ef3eb">SVF::IRGraph::getConstantObj</a></div><div class="ttdeci">const MemObj * getConstantObj() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00164">IRGraph.h:164</a></div></div>
188
196
  <div class="ttc" id="classSVF_1_1SVFIR_html_a533a01d01fab9e45cd1780f9bbd50b0f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a533a01d01fab9e45cd1780f9bbd50b0f">SVF::SVFIR::getFunPtr</a></div><div class="ttdeci">NodeID getFunPtr(const CallBlockNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00317">SVFIR.h:317</a></div></div>
197
+ <div class="ttc" id="classSVF_1_1PhiStmt_html"><div class="ttname"><a href="classSVF_1_1PhiStmt.html">SVF::PhiStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00328">SVFStatements.h:328</a></div></div>
189
198
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_acba43b6e9cdf07afaf3d30351aa8df7c"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#acba43b6e9cdf07afaf3d30351aa8df7c">SVF::SymbolTableInfo::isBlkPtr</a></div><div class="ttdeci">static bool isBlkPtr(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00190">SymbolTableInfo.h:190</a></div></div>
190
199
  <div class="ttc" id="classSVF_1_1SVFIR_html_ac2dff0e76e4ee879dc023255e7e6a63e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac2dff0e76e4ee879dc023255e7e6a63e">SVF::SVFIR::getEdgeSet</a></div><div class="ttdeci">SVFStmt::PAGEdgeSetTy &amp; getEdgeSet(SVFStmt::PEDGEK kind)</div><div class="ttdoc">Get/set methods to get SVFStmts based on their kinds and ICFGNodes. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00163">SVFIR.h:163</a></div></div>
200
+ <div class="ttc" id="classSVF_1_1SVFIR_html_af2f469e83e719b55161d2e4e5aac8741"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af2f469e83e719b55161d2e4e5aac8741">SVF::SVFIR::addUnaryOPPE</a></div><div class="ttdeci">UnaryOPStmt * addUnaryOPPE(NodeID src, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Unary edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00149">SVFIR.cpp:149</a></div></div>
191
201
  <div class="ttc" id="classSVF_1_1SVFIR_html_a0f5732647f3f44ec12617029354fca11"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a0f5732647f3f44ec12617029354fca11">SVF::SVFIR::CallSiteToFunPtrMap</a></div><div class="ttdeci">OrderedMap&lt; const CallBlockNode *, NodeID &gt; CallSiteToFunPtrMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00053">SVFIR.h:53</a></div></div>
192
202
  <div class="ttc" id="classSVF_1_1SVFIR_html_a5de67390d38bfacd5b63b776a0ecbfff"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5de67390d38bfacd5b63b776a0ecbfff">SVF::SVFIR::isPhiNode</a></div><div class="ttdeci">bool isPhiNode(const SVFVar *node) const</div><div class="ttdoc">Whether this SVFVar is a result operand a of phi node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00210">SVFIR.h:210</a></div></div>
193
203
  <div class="ttc" id="classSVF_1_1SVFIR_html_addc84dae75be8e8b9deccdb4360736d3"><div class="ttname"><a href="classSVF_1_1SVFIR.html#addc84dae75be8e8b9deccdb4360736d3">SVF::SVFIR::isValidPointer</a></div><div class="ttdeci">bool isValidPointer(NodeID nodeId) const</div><div class="ttdoc">Whether a node is a valid pointer. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00662">SVFIR.cpp:662</a></div></div>
@@ -195,20 +205,16 @@ $(function() {
195
205
  <div class="ttc" id="IRGraph_8h_html"><div class="ttname"><a href="IRGraph_8h.html">IRGraph.h</a></div></div>
196
206
  <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>
197
207
  <div class="ttc" id="classSVF_1_1SVFIR_html_a702edc6714da142c16857995778a9f4b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a702edc6714da142c16857995778a9f4b">SVF::SVFIR::getFIObjNode</a></div><div class="ttdeci">NodeID getFIObjNode(const MemObj *obj) const</div><div class="ttdoc">Get a field-insensitive obj SVFIR node according to a mem obj. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00378">SVFIR.h:378</a></div></div>
198
- <div class="ttc" id="classSVF_1_1GepPE_html"><div class="ttname"><a href="classSVF_1_1GepPE.html">SVF::GepPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00664">SVFStatements.h:664</a></div></div>
199
208
  <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#l00594">SVFIR.h:594</a></div></div>
200
209
  <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#l00515">SVFIR.h:515</a></div></div>
201
210
  <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>
202
- <div class="ttc" id="classSVF_1_1CmpPE_html"><div class="ttname"><a href="classSVF_1_1CmpPE.html">SVF::CmpPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00374">SVFStatements.h:374</a></div></div>
203
- <div class="ttc" id="classSVF_1_1ObjPN_html"><div class="ttname"><a href="classSVF_1_1ObjPN.html">SVF::ObjPN</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00317">SVFVariables.h:317</a></div></div>
204
211
  <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>
205
212
  <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>
206
213
  <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#l00216">SVFIR.h:216</a></div></div>
207
- <div class="ttc" id="classSVF_1_1SVFIR_html_a30409c96194976713b6b7728c072b8a5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a30409c96194976713b6b7728c072b8a5">SVF::SVFIR::addUnaryOPPE</a></div><div class="ttdeci">UnaryOPPE * addUnaryOPPE(NodeID src, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Unary edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00149">SVFIR.cpp:149</a></div></div>
208
- <div class="ttc" id="classSVF_1_1SVFIR_html_a5b89eb728f02a2d235f898dcf555d1a2"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5b89eb728f02a2d235f898dcf555d1a2">SVF::SVFIR::addLoadPE</a></div><div class="ttdeci">LoadPE * addLoadPE(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>
209
214
  <div class="ttc" id="classSVF_1_1SVFIR_html_a3ab46db0dc6ebab78d431e4a540dcc9e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3ab46db0dc6ebab78d431e4a540dcc9e">SVF::SVFIR::GepObjNodeMap</a></div><div class="ttdeci">NodeLocationSetMap GepObjNodeMap</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#l00080">SVFIR.h:80</a></div></div>
210
215
  <div class="ttc" id="classSVF_1_1SVFIR_html_a633fb7a85c90f9b766689b8d2fdf3bac"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a633fb7a85c90f9b766689b8d2fdf3bac">SVF::SVFIR::globPAGEdgesSet</a></div><div class="ttdeci">PAGEdgeSet globPAGEdgesSet</div><div class="ttdoc">Global PAGEdges without control flow information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00082">SVFIR.h:82</a></div></div>
211
216
  <div class="ttc" id="classSVF_1_1SVFIR_html_ac0b7ac004c8c258af81a0d16872f3406"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac0b7ac004c8c258af81a0d16872f3406">SVF::SVFIR::getGlobalPAGEdgeSet</a></div><div class="ttdeci">PAGEdgeSet &amp; getGlobalPAGEdgeSet()</div><div class="ttdoc">Get global PAGEdges (not in a procedure) </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00200">SVFIR.h:200</a></div></div>
217
+ <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>
212
218
  <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#l00897">SVFStatements.h:897</a></div></div>
213
219
  <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#l00401">SVFIR.h:401</a></div></div>
214
220
  <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#l00509">SVFIR.h:509</a></div></div>
@@ -219,8 +225,6 @@ $(function() {
219
225
  <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#l00466">SVFIR.h:466</a></div></div>
220
226
  <div class="ttc" id="classSVF_1_1SVFIR_html_a236b4fefd16e9c793c5bd6d576290841"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a236b4fefd16e9c793c5bd6d576290841">SVF::SVFIR::print</a></div><div class="ttdeci">void print()</div><div class="ttdoc">Print SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00557">SVFIR.cpp:557</a></div></div>
221
227
  <div class="ttc" id="classSVF_1_1ICFG_html"><div class="ttname"><a href="classSVF_1_1ICFG.html">SVF::ICFG</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00046">ICFG.h:46</a></div></div>
222
- <div class="ttc" id="classSVF_1_1DummyObjPN_html"><div class="ttname"><a href="classSVF_1_1DummyObjPN.html">SVF::DummyObjPN</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00693">SVFVariables.h:693</a></div></div>
223
- <div class="ttc" id="classSVF_1_1LoadPE_html"><div class="ttname"><a href="classSVF_1_1LoadPE.html">SVF::LoadPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00628">SVFStatements.h:628</a></div></div>
224
228
  <div class="ttc" id="classSVF_1_1IntraBlockNode_html"><div class="ttname"><a href="classSVF_1_1IntraBlockNode.html">SVF::IntraBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00175">ICFGNode.h:175</a></div></div>
225
229
  <div class="ttc" id="classSVF_1_1SVFIR_html_afe8274c3b7317fccef5314662a182046"><div class="ttname"><a href="classSVF_1_1SVFIR.html#afe8274c3b7317fccef5314662a182046">SVF::SVFIR::funHasRet</a></div><div class="ttdeci">bool funHasRet(const SVFFunction *func) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00277">SVFIR.h:277</a></div></div>
226
230
  <div class="ttc" id="classSVF_1_1SVFIR_html_a1cac93c15fcbf15798c4fe374380f8ae"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a1cac93c15fcbf15798c4fe374380f8ae">SVF::SVFIR::getFunArgsList</a></div><div class="ttdeci">const PAGNodeList &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#l00226">SVFIR.h:226</a></div></div>
@@ -240,11 +244,12 @@ $(function() {
240
244
  <div class="ttc" id="classSVF_1_1SVFIR_html_a2b80cf884eedb51f77a5e84def7d8793"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2b80cf884eedb51f77a5e84def7d8793">SVF::SVFIR::getGepObjNode</a></div><div class="ttdeci">NodeID getGepObjNode(const MemObj *obj, const LocationSet &amp;ls)</div><div class="ttdoc">Get a field SVFIR Object node according to base mem obj and offset. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00405">SVFIR.cpp:405</a></div></div>
241
245
  <div class="ttc" id="classSVF_1_1SVFIR_html_a2b532a5db0197c579b512fbcdb4d6220"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2b532a5db0197c579b512fbcdb4d6220">SVF::SVFIR::addBlackholeObjNode</a></div><div class="ttdeci">NodeID addBlackholeObjNode()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00579">SVFIR.h:579</a></div></div>
242
246
  <div class="ttc" id="classSVF_1_1SVFIR_html_a34e27b8bcfeaafda190dcdb9169a346f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a34e27b8bcfeaafda190dcdb9169a346f">SVF::SVFIR::getFunRet</a></div><div class="ttdeci">const SVFVar * getFunRet(const SVFFunction *func) const</div><div class="ttdoc">Get function return list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00271">SVFIR.h:271</a></div></div>
247
+ <div class="ttc" id="classSVF_1_1CmpStmt_html"><div class="ttname"><a href="classSVF_1_1CmpStmt.html">SVF::CmpStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00374">SVFStatements.h:374</a></div></div>
243
248
  <div class="ttc" id="classSVF_1_1IRGraph_html_a780372b8241dc1c76e31b0340d5d2401"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a780372b8241dc1c76e31b0340d5d2401">SVF::IRGraph::PTAPAGEdgeKindToSetMap</a></div><div class="ttdeci">SVFStmt::PAGKindToEdgeSetMapTy PTAPAGEdgeKindToSetMap</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00056">IRGraph.h:56</a></div></div>
244
249
  <div class="ttc" id="classSVF_1_1SVFIR_html_a851075193a0b9a9b594848d6b3ba659e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a851075193a0b9a9b594848d6b3ba659e">SVF::SVFIR::getBaseValNode</a></div><div class="ttdeci">NodeID getBaseValNode(NodeID nodeId)</div><div class="ttdoc">Base and Offset methods for Value and Object node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00500">SVFIR.cpp:500</a></div></div>
245
250
  <div class="ttc" id="classSVF_1_1IRGraph_html_a685f1a8a35aa5dc9c298e3b0e2ccf007"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a685f1a8a35aa5dc9c298e3b0e2ccf007">SVF::IRGraph::addNode</a></div><div class="ttdeci">NodeID addNode(SVFVar *node, NodeID i)</div><div class="ttdoc">Add a node into the graph. </div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00064">IRGraph.h:64</a></div></div>
246
251
  <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>
247
- <div class="ttc" id="classSVF_1_1BinaryOPPE_html"><div class="ttname"><a href="classSVF_1_1BinaryOPPE.html">SVF::BinaryOPPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00424">SVFStatements.h:424</a></div></div>
252
+ <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#l00704">SVFStatements.h:704</a></div></div>
248
253
  <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 getGepValNode. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00369">SVFIR.cpp:369</a></div></div>
249
254
  <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>
250
255
  <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#l00094">SVFIR.h:94</a></div></div>
@@ -254,24 +259,21 @@ $(function() {
254
259
  <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>
255
260
  <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>
256
261
  <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>
257
- <div class="ttc" id="classSVF_1_1SVFIR_html_a3da8a2168e33f49708cdcc79f9e311a4"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3da8a2168e33f49708cdcc79f9e311a4">SVF::SVFIR::addPhiNode</a></div><div class="ttdeci">PhiPE * addPhiNode(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>
258
262
  <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>
259
263
  <div class="ttc" id="classSVF_1_1IRGraph_html_ac5da3a0cbe040a45d719b6f6a23aed91"><div class="ttname"><a href="classSVF_1_1IRGraph.html#ac5da3a0cbe040a45d719b6f6a23aed91">SVF::IRGraph::getConstantNode</a></div><div class="ttdeci">NodeID getConstantNode() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00148">IRGraph.h:148</a></div></div>
260
264
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0b6c03af568b70903da6b200ac86c951"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">SVF::SVFStmt::isPTAEdge</a></div><div class="ttdeci">bool isPTAEdge() const</div><div class="ttdoc">Whether src and dst nodes are both of pointer type. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00056">SVFStatements.cpp:56</a></div></div>
261
- <div class="ttc" id="classSVF_1_1AddrPE_html"><div class="ttname"><a href="classSVF_1_1AddrPE.html">SVF::AddrPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00196">SVFStatements.h:196</a></div></div>
262
265
  <div class="ttc" id="classSVF_1_1SVFIR_html_a292b5a477c1f87777730b591c271e523"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a292b5a477c1f87777730b591c271e523">SVF::SVFIR::addToStmt2TypeMap</a></div><div class="ttdeci">void addToStmt2TypeMap(SVFStmt *edge)</div><div class="ttdoc">Map a SVFStatement type to a set of corresponding SVF statements. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00483">SVFIR.h:483</a></div></div>
263
- <div class="ttc" id="classSVF_1_1SVFIR_html_a1d6d9dbc5cd43eb8af776f5a1b373507"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a1d6d9dbc5cd43eb8af776f5a1b373507">SVF::SVFIR::addBinaryOPPE</a></div><div class="ttdeci">BinaryOPPE * addBinaryOPPE(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00129">SVFIR.cpp:129</a></div></div>
266
+ <div class="ttc" id="classSVF_1_1SVFIR_html_aa1c1b20773bc547697323fe11b0dc5d5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1c1b20773bc547697323fe11b0dc5d5">SVF::SVFIR::addCmpPE</a></div><div class="ttdeci">CmpStmt * addCmpPE(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)</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>
267
+ <div class="ttc" id="classSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00591">SVFStatements.h:591</a></div></div>
264
268
  <div class="ttc" id="classSVF_1_1SVFStmt_html_af02857ff13e61f81d332d83eb376bdb4"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#af02857ff13e61f81d332d83eb376bdb4">SVF::SVFStmt::PAGEdgeSetTy</a></div><div class="ttdeci">GenericNode&lt; SVFVar, SVFStmt &gt;::GEdgeSetTy PAGEdgeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00178">SVFStatements.h:178</a></div></div>
265
269
  <div class="ttc" id="classSVF_1_1SVFIR_html_ad6e18f520f6b559f2304002792f6b701"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad6e18f520f6b559f2304002792f6b701">SVF::SVFIR::getModule</a></div><div class="ttdeci">SVFModule * getModule()</div><div class="ttdoc">Get LLVM Module. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00156">SVFIR.h:156</a></div></div>
266
- <div class="ttc" id="classSVF_1_1SVFIR_html_a247f006b6f168a7d853814339b0a6ed5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a247f006b6f168a7d853814339b0a6ed5">SVF::SVFIR::addAddrPE</a></div><div class="ttdeci">AddrPE * addAddrPE(NodeID src, NodeID dst)</div><div class="ttdoc">Add an edge into SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00051">SVFIR.cpp:51</a></div></div>
267
- <div class="ttc" id="classSVF_1_1ValPN_html"><div class="ttname"><a href="classSVF_1_1ValPN.html">SVF::ValPN</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00273">SVFVariables.h:273</a></div></div>
268
- <div class="ttc" id="classSVF_1_1SVFIR_html_ad0977abfd0eda258b5215d351d34c0f5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad0977abfd0eda258b5215d351d34c0f5">SVF::SVFIR::addGepPE</a></div><div class="ttdeci">GepPE * addGepPE(NodeID src, NodeID dst, const LocationSet &amp;ls, bool constGep)</div><div class="ttdoc">Add Gep edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00308">SVFIR.cpp:308</a></div></div>
269
270
  <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#l00083">SVFIR.h:83</a></div></div>
270
271
  <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#l00261">SVFIR.h:261</a></div></div>
271
272
  <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>
273
+ <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>
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#l00424">SVFStatements.h:424</a></div></div>
272
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#l00415">SVFIR.h:415</a></div></div>
273
276
  <div class="ttc" id="classSVF_1_1SVFIR_html_adf344b7cbcebd343b026b9b4b9d72fdb"><div class="ttname"><a href="classSVF_1_1SVFIR.html#adf344b7cbcebd343b026b9b4b9d72fdb">SVF::SVFIR::getInstPAGEdgeList</a></div><div class="ttdeci">PAGEdgeList &amp; getInstPAGEdgeList(const ICFGNode *inst)</div><div class="ttdoc">Given an instruction, get all its PAGEdges. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00182">SVFIR.h:182</a></div></div>
274
- <div class="ttc" id="classSVF_1_1DummyValPN_html"><div class="ttname"><a href="classSVF_1_1DummyValPN.html">SVF::DummyValPN</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00654">SVFVariables.h:654</a></div></div>
275
277
  <div class="ttc" id="classSVF_1_1SVFIR_html_a06465449e58e14bfb1c3eee2c97d3242"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a06465449e58e14bfb1c3eee2c97d3242">SVF::SVFIR::addFIObjNode</a></div><div class="ttdeci">NodeID addFIObjNode(const MemObj *obj)</div><div class="ttdoc">Add a field-insensitive node, this method can only invoked by getFIGepObjNode. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00446">SVFIR.cpp:446</a></div></div>
276
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>
277
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>
@@ -281,7 +283,6 @@ $(function() {
281
283
  <div class="ttc" id="classSVF_1_1IRGraph_html_a6efd8215ac2484a16a9ab2afbde290b4"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a6efd8215ac2484a16a9ab2afbde290b4">SVF::IRGraph::PAGEdgeKindToSetMap</a></div><div class="ttdeci">SVFStmt::PAGKindToEdgeSetMapTy PAGEdgeKindToSetMap</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00055">IRGraph.h:55</a></div></div>
282
284
  <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#l00313">SVFIR.h:313</a></div></div>
283
285
  <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>
284
- <div class="ttc" id="classSVF_1_1CopyPE_html"><div class="ttname"><a href="classSVF_1_1CopyPE.html">SVF::CopyPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00231">SVFStatements.h:231</a></div></div>
285
286
  <div class="ttc" id="classSVF_1_1SVFIR_html_a7d64f6195fd6d660c5238bdda495ddf0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7d64f6195fd6d660c5238bdda495ddf0">SVF::SVFIR::addToInstPAGEdgeList</a></div><div class="ttdeci">void addToInstPAGEdgeList(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#l00192">SVFIR.h:192</a></div></div>
286
287
  <div class="ttc" id="classSVF_1_1SVFIR_html_abf209739a97b96ae0d1c8451fdc684e8"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abf209739a97b96ae0d1c8451fdc684e8">SVF::SVFIR::getIndCallSites</a></div><div class="ttdeci">const CallSiteSet &amp; getIndCallSites(NodeID funPtr) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00323">SVFIR.h:323</a></div></div>
287
288
  <div class="ttc" id="classSVF_1_1SVFIR_html_a6ade5bf3edc7b6c3faafc3e5ff3d0538"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a6ade5bf3edc7b6c3faafc3e5ff3d0538">SVF::SVFIR::addVarargNode</a></div><div class="ttdeci">NodeID addVarargNode(const SVFFunction *val, NodeID i)</div><div class="ttdoc">Add a unique vararg node for a procedure. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00550">SVFIR.h:550</a></div></div>
@@ -289,9 +290,6 @@ $(function() {
289
290
  <div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00133">SVFIR.h:133</a></div></div>
290
291
  <div class="ttc" id="classSVF_1_1SVFIR_html_a42d1e2f0213fb6e54c56cc0695b57cb0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a42d1e2f0213fb6e54c56cc0695b57cb0">SVF::SVFIR::getFieldsAfterCollapse</a></div><div class="ttdeci">NodeBS getFieldsAfterCollapse(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00480">SVFIR.cpp:480</a></div></div>
291
292
  <div class="ttc" id="classSVF_1_1SVFIR_html_a24592d009d5db15ab97e7bf133ac884b"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a24592d009d5db15ab97e7bf133ac884b">SVF::SVFIR::FunToPAGEdgeSetMap</a></div><div class="ttdeci">Map&lt; const SVFFunction *, PAGEdgeSet &gt; FunToPAGEdgeSetMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00064">SVFIR.h:64</a></div></div>
292
- <div class="ttc" id="classSVF_1_1SVFIR_html_afbb721dfd574c35e3ddb0a8d26f978c7"><div class="ttname"><a href="classSVF_1_1SVFIR.html#afbb721dfd574c35e3ddb0a8d26f978c7">SVF::SVFIR::addCmpPE</a></div><div class="ttdeci">CmpPE * addCmpPE(NodeID op1, NodeID op2, NodeID dst, u32_t opcode)</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>
293
- <div class="ttc" id="classSVF_1_1PhiPE_html"><div class="ttname"><a href="classSVF_1_1PhiPE.html">SVF::PhiPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00328">SVFStatements.h:328</a></div></div>
294
- <div class="ttc" id="classSVF_1_1SVFIR_html_acd2ba7adf250f1a90b57e51a085b6363"><div class="ttname"><a href="classSVF_1_1SVFIR.html#acd2ba7adf250f1a90b57e51a085b6363">SVF::SVFIR::addNormalGepPE</a></div><div class="ttdeci">NormalGepPE * addNormalGepPE(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>
295
293
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00078">BasicTypes.h:78</a></div></div>
296
294
  <div class="ttc" id="classSVF_1_1SVFIR_html_a4f64a1a266838ac72b66cca138ec57ca"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a4f64a1a266838ac72b66cca138ec57ca">SVF::SVFIR::addThreadJoinPE</a></div><div class="ttdeci">TDJoinPE * addThreadJoinPE(NodeID src, NodeID dst, const CallBlockNode *cs)</div><div class="ttdoc">Add Thread join edge for parameter passing. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00287">SVFIR.cpp:287</a></div></div>
297
295
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html">SVF::TypeBasedHeapCloning</a></div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8h_source.html#l00021">TypeBasedHeapCloning.h:21</a></div></div>
@@ -299,6 +297,8 @@ $(function() {
299
297
  <div class="ttc" id="classSVF_1_1SVFIR_html_a4720426ab75f8d07e780995ffad7d51a"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a4720426ab75f8d07e780995ffad7d51a">SVF::SVFIR::getBaseObjNode</a></div><div class="ttdeci">NodeID getBaseObjNode(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00443">SVFIR.h:443</a></div></div>
300
298
  <div class="ttc" id="classSVF_1_1SVFIR_html_a44aae3b2a519cdbb704e852e7be9059a"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a44aae3b2a519cdbb704e852e7be9059a">SVF::SVFIR::getFIObjNode</a></div><div class="ttdeci">NodeID getFIObjNode(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00382">SVFIR.h:382</a></div></div>
301
299
  <div class="ttc" id="classSVF_1_1SVFIR_html_a64cee36354a14aae6b64f8b9d3edbd96"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a64cee36354a14aae6b64f8b9d3edbd96">SVF::SVFIR::PAGNodeList</a></div><div class="ttdeci">std::vector&lt; const SVFVar * &gt; PAGNodeList</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00057">SVFIR.h:57</a></div></div>
300
+ <div class="ttc" id="classSVF_1_1CopyStmt_html"><div class="ttname"><a href="classSVF_1_1CopyStmt.html">SVF::CopyStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00231">SVFStatements.h:231</a></div></div>
301
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a25b86c16d11b4d50ccc28ead525687ae"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a25b86c16d11b4d50ccc28ead525687ae">SVF::SVFIR::getObject</a></div><div class="ttdeci">const MemObj * getObject(const ObjVar *node) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00366">SVFIR.h:366</a></div></div>
302
302
  <div class="ttc" id="classSVF_1_1SVFStmt_html"><div class="ttname"><a href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00047">SVFStatements.h:47</a></div></div>
303
303
  <div class="ttc" id="classSVF_1_1SVFIR_html_a4ee79c74a7a2cea5c063fa598ab89532"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a4ee79c74a7a2cea5c063fa598ab89532">SVF::SVFIR::addDummyMemObj</a></div><div class="ttdeci">const MemObj * addDummyMemObj(NodeID i, const Type *type)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00575">SVFIR.h:575</a></div></div>
304
304
  <div class="ttc" id="namespaceSVF_html_aedf0d6718ca176e0b9e17ab4b30729c6"><div class="ttname"><a href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">SVF::OrderedMap</a></div><div class="ttdeci">std::map&lt; Key, Value, Compare, Allocator &gt; OrderedMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00107">SVFBasicTypes.h:107</a></div></div>