svf-tools 1.0.372 → 1.0.376

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 (254) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +3 -3
  2. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +5 -6
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +10 -10
  4. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/Conditions_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +1 -1
  7. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -3
  8. package/SVF-doxygen/html/html/ConsG_8h_source.html +7 -7
  9. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
  10. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
  11. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  12. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +15 -15
  14. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
  15. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +7 -7
  16. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +7 -7
  17. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -10
  20. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
  21. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +6 -6
  22. package/SVF-doxygen/html/html/IRGraph_8h_source.html +2 -2
  23. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  24. package/SVF-doxygen/html/html/LLVMUtil_8h.html +3 -3
  25. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +2 -2
  26. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +11 -11
  28. package/SVF-doxygen/html/html/LocationSet_8h_source.html +10 -11
  29. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +10 -10
  30. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/html/Options_8cpp_source.html +22 -21
  32. package/SVF-doxygen/html/html/Options_8h_source.html +22 -21
  33. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
  34. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +17 -17
  35. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +1 -1
  36. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +8 -8
  37. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
  38. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +11 -11
  39. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +14 -14
  40. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +2 -2
  41. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +8 -10
  42. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +72 -73
  43. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +37 -35
  44. package/SVF-doxygen/html/html/SVFIR_8h_source.html +66 -68
  45. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +5 -5
  48. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -1
  49. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +18 -19
  50. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +121 -127
  51. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +6 -6
  52. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +1 -1
  53. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +39 -30
  54. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +10 -7
  55. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +93 -53
  56. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +82 -85
  57. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +5 -5
  58. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  59. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +17 -16
  60. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +1 -1
  61. package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
  62. package/SVF-doxygen/html/html/VFG_8cpp_source.html +7 -7
  63. package/SVF-doxygen/html/html/VFG_8h_source.html +2 -2
  64. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
  65. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +4 -4
  66. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +5 -5
  67. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
  68. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
  69. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
  70. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +8 -8
  71. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +8 -8
  72. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +4 -4
  73. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +5 -6
  74. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +3 -3
  75. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +12 -13
  76. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +3 -3
  77. package/SVF-doxygen/html/html/classSVF_1_1BranchCondManager.html +2 -2
  78. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
  79. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +1 -1
  80. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +22 -25
  81. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +16 -25
  82. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +22 -25
  83. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +17 -26
  84. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +23 -26
  85. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +17 -26
  86. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +3 -3
  87. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
  88. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +5 -5
  89. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +6 -6
  90. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +2 -2
  91. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
  92. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +12 -12
  93. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +22 -25
  94. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +18 -27
  95. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +21 -24
  96. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +18 -27
  97. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +22 -25
  98. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +19 -28
  99. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
  100. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +10 -10
  101. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +8 -8
  102. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +17 -17
  103. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
  104. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
  105. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  106. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +24 -27
  107. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +42 -51
  108. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +12 -12
  109. package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +30 -35
  110. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +34 -106
  111. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +1 -1
  112. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +3 -3
  113. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  114. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +2 -2
  115. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
  116. package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +15 -16
  117. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +47 -81
  118. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +12 -12
  119. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +87 -87
  120. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +1 -1
  121. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
  122. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo-members.html +7 -8
  123. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +162 -211
  124. package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +22 -25
  125. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +23 -32
  126. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +1 -1
  127. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +55 -54
  128. package/SVF-doxygen/html/html/classSVF_1_1Options.html +47 -21
  129. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +3 -3
  130. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +4 -4
  131. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +18 -18
  132. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +1 -1
  133. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +30 -30
  134. package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +22 -25
  135. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +18 -27
  136. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +1 -1
  137. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +4 -4
  138. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +214 -227
  139. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +82 -83
  140. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +582 -529
  141. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
  142. package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +23 -26
  143. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +54 -151
  144. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +6 -6
  145. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
  146. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +43 -43
  147. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder-members.html +10 -7
  148. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +182 -72
  149. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +9 -11
  150. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +131 -162
  151. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +5 -5
  152. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
  153. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +26 -25
  154. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
  155. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +8 -8
  156. package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +21 -24
  157. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +16 -25
  158. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +22 -25
  159. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +18 -27
  160. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +7 -7
  161. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +5 -5
  162. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +12 -12
  163. package/SVF-doxygen/html/html/functions_a.html +24 -24
  164. package/SVF-doxygen/html/html/functions_c.html +1 -1
  165. package/SVF-doxygen/html/html/functions_f.html +19 -22
  166. package/SVF-doxygen/html/html/functions_func.html +24 -24
  167. package/SVF-doxygen/html/html/functions_func_c.html +1 -1
  168. package/SVF-doxygen/html/html/functions_func_g.html +20 -23
  169. package/SVF-doxygen/html/html/functions_func_h.html +1 -1
  170. package/SVF-doxygen/html/html/functions_func_i.html +11 -17
  171. package/SVF-doxygen/html/html/functions_func_l.html +2 -2
  172. package/SVF-doxygen/html/html/functions_func_o.html +4 -4
  173. package/SVF-doxygen/html/html/functions_func_r.html +5 -2
  174. package/SVF-doxygen/html/html/functions_g.html +18 -21
  175. package/SVF-doxygen/html/html/functions_h.html +1 -1
  176. package/SVF-doxygen/html/html/functions_i.html +12 -21
  177. package/SVF-doxygen/html/html/functions_l.html +8 -8
  178. package/SVF-doxygen/html/html/functions_m.html +4 -1
  179. package/SVF-doxygen/html/html/functions_o.html +22 -18
  180. package/SVF-doxygen/html/html/functions_p.html +3 -3
  181. package/SVF-doxygen/html/html/functions_r.html +5 -2
  182. package/SVF-doxygen/html/html/functions_rela.html +2 -1
  183. package/SVF-doxygen/html/html/functions_s.html +6 -5
  184. package/SVF-doxygen/html/html/functions_t.html +4 -4
  185. package/SVF-doxygen/html/html/functions_v.html +3 -3
  186. package/SVF-doxygen/html/html/functions_vars_f.html +0 -3
  187. package/SVF-doxygen/html/html/functions_vars_i.html +3 -6
  188. package/SVF-doxygen/html/html/functions_vars_m.html +3 -0
  189. package/SVF-doxygen/html/html/namespaceSVF.html +1 -1
  190. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +8 -8
  191. package/SVF-doxygen/html/html/namespacemembers_func.html +1 -1
  192. package/SVF-doxygen/html/html/namespacemembers_s.html +1 -1
  193. package/SVF-doxygen/html/html/search/all_1.js +22 -22
  194. package/SVF-doxygen/html/html/search/all_10.js +4 -4
  195. package/SVF-doxygen/html/html/search/all_12.js +5 -4
  196. package/SVF-doxygen/html/html/search/all_13.js +6 -6
  197. package/SVF-doxygen/html/html/search/all_14.js +4 -4
  198. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  199. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  200. package/SVF-doxygen/html/html/search/all_3.js +1 -1
  201. package/SVF-doxygen/html/html/search/all_6.js +0 -1
  202. package/SVF-doxygen/html/html/search/all_7.js +9 -9
  203. package/SVF-doxygen/html/html/search/all_8.js +1 -1
  204. package/SVF-doxygen/html/html/search/all_9.js +2 -5
  205. package/SVF-doxygen/html/html/search/all_c.js +4 -4
  206. package/SVF-doxygen/html/html/search/all_d.js +1 -0
  207. package/SVF-doxygen/html/html/search/all_e.js +3 -3
  208. package/SVF-doxygen/html/html/search/all_f.js +3 -3
  209. package/SVF-doxygen/html/html/search/functions_0.js +22 -22
  210. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  211. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  212. package/SVF-doxygen/html/html/search/functions_6.js +9 -9
  213. package/SVF-doxygen/html/html/search/functions_7.js +1 -1
  214. package/SVF-doxygen/html/html/search/functions_8.js +1 -3
  215. package/SVF-doxygen/html/html/search/functions_a.js +1 -1
  216. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  217. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  218. package/SVF-doxygen/html/html/search/functions_f.js +1 -0
  219. package/SVF-doxygen/html/html/search/related_9.js +1 -1
  220. package/SVF-doxygen/html/html/search/variables_14.js +2 -2
  221. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  222. package/SVF-doxygen/html/html/search/variables_6.js +0 -1
  223. package/SVF-doxygen/html/html/search/variables_9.js +1 -2
  224. package/SVF-doxygen/html/html/search/variables_d.js +1 -0
  225. package/SVF-doxygen/html/html/search/variables_e.js +2 -2
  226. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  227. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +7 -21
  228. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +3 -3
  229. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
  230. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +4 -4
  231. package/SVF-doxygen/html/html/svf-ex_8cpp.html +2 -2
  232. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +2 -2
  233. package/include/MemoryModel/LocationSet.h +0 -6
  234. package/include/MemoryModel/SVFIR.h +5 -37
  235. package/include/MemoryModel/SVFStatements.h +1 -1
  236. package/include/MemoryModel/SVFVariables.h +4 -21
  237. package/include/MemoryModel/SymbolTableInfo.h +8 -24
  238. package/include/SVF-FE/LLVMUtil.h +1 -1
  239. package/include/SVF-FE/SVFIRBuilder.h +91 -108
  240. package/include/SVF-FE/SymbolTableBuilder.h +9 -2
  241. package/include/Util/Options.h +1 -0
  242. package/lib/Graphs/ICFG.cpp +1 -47
  243. package/lib/MemoryModel/LocationSet.cpp +7 -3
  244. package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
  245. package/lib/MemoryModel/SVFIR.cpp +61 -19
  246. package/lib/MemoryModel/SVFVariables.cpp +6 -13
  247. package/lib/MemoryModel/SymbolTableInfo.cpp +57 -68
  248. package/lib/SVF-FE/LLVMUtil.cpp +3 -3
  249. package/lib/SVF-FE/SVFIRBuilder.cpp +83 -136
  250. package/lib/SVF-FE/SymbolTableBuilder.cpp +81 -23
  251. package/lib/Util/Options.cpp +6 -0
  252. package/lib/Util/TypeBasedHeapCloning.cpp +1 -1
  253. package/lib/WPA/AndersenStat.cpp +1 -1
  254. package/package.json +1 -1
@@ -66,11 +66,11 @@ $(function() {
66
66
  <div class="title">PointerAnalysis.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="PointerAnalysis_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">//===- PointerAnalysis.h -- Base class of pointer analyses--------------------//</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-2017&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"> * PointerAnalysis.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: Nov 12, 2013</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 POINTERANALYSIS_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define POINTERANALYSIS_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 &lt;unistd.h&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &lt;signal.h&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFIR_8h.html">MemoryModel/SVFIR.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ConditionalPT_8h.html">MemoryModel/ConditionalPT.h</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="AbstractPointsToDS_8h.html">MemoryModel/AbstractPointsToDS.h</a>&quot;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="MutablePointsToDS_8h.html">MemoryModel/MutablePointsToDS.h</a>&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PersistentPointsToDS_8h.html">MemoryModel/PersistentPointsToDS.h</a>&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PTACallGraph_8h.html">Graphs/PTACallGraph.h</a>&quot;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SCC_8h.html">Util/SCC.h</a>&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></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;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">class </span>CommonCHGraph;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">class </span>TypeSystem;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">class </span>SVFModule;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keyword">class </span>ICFG;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="keyword">class </span>PTAStat;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> * Pointer Analysis Base Class</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html"> 57</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;{</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85"> 62</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="comment">// Whole program analysis</span></div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49"> 65</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49">Andersen_BASE</a>, </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6"> 66</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6">Andersen_WPA</a>, </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac7c033efd59e2b5fcded79fc3ebdb9d4"> 67</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac7c033efd59e2b5fcded79fc3ebdb9d4">AndersenLCD_WPA</a>, </div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a46f5e74d5f4b0a2d134e68d262079c3f"> 68</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a46f5e74d5f4b0a2d134e68d262079c3f">AndersenHCD_WPA</a>, </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a99d50c1712075e4c3278fc4fa4c9cd2f"> 69</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a99d50c1712075e4c3278fc4fa4c9cd2f">AndersenHLCD_WPA</a>, </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1"> 70</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1">AndersenSCD_WPA</a>, </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b"> 71</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b">AndersenSFR_WPA</a>, </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2"> 72</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">AndersenWaveDiff_WPA</a>, </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac581e279a4bd69c059b0e5987f839a1f"> 73</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac581e279a4bd69c059b0e5987f839a1f">AndersenWaveDiffWithType_WPA</a>, </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a"> 74</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a">Steensgaard_WPA</a>, </div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac9e931f254fa3471f5f5337cbca1de09"> 75</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac9e931f254fa3471f5f5337cbca1de09">CSCallString_WPA</a>, </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85adf8fe4349f84779601a0b41659ca8e27"> 76</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85adf8fe4349f84779601a0b41659ca8e27">CSSummary_WPA</a>, </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a62281bc39fea50a88e55edf605620322"> 77</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a62281bc39fea50a88e55edf605620322">FSDATAFLOW_WPA</a>, </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad6ccf1ce66083278349c5c3111172d78"> 78</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad6ccf1ce66083278349c5c3111172d78">FSSPARSE_WPA</a>, </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a088dda60195ab259693977af8414f203"> 79</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a088dda60195ab259693977af8414f203">FSTBHC_WPA</a>, </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9"> 80</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9">VFS_WPA</a>, </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a43837619e78e03dc95ec6e88959faf82"> 81</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a43837619e78e03dc95ec6e88959faf82">FSCS_WPA</a>, </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a30826fb1ddb602fd4439ca84eb73e8f4"> 82</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a30826fb1ddb602fd4439ca84eb73e8f4">FSCSPS_WPA</a>, </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a859290ec941a06029f84ef249a5d2fda"> 83</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a859290ec941a06029f84ef249a5d2fda">ADAPTFSCS_WPA</a>, </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a42d52c9444028e72ea8e6dc0c8c08ada"> 84</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a42d52c9444028e72ea8e6dc0c8c08ada">ADAPTFSCSPS_WPA</a>, </div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3"> 85</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">TypeCPP_WPA</a>, </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="comment">// Demand driven analysis</span></div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abe1d8104c77bfe4bbc201a64410c7f61"> 88</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abe1d8104c77bfe4bbc201a64410c7f61">FieldS_DDA</a>, </div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85aa43c83e2f0df003c158d4b1325b50b18"> 89</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85aa43c83e2f0df003c158d4b1325b50b18">FlowS_DDA</a>, </div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acaf0c0774025005647deaf59582b9d58"> 90</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acaf0c0774025005647deaf59582b9d58">PathS_DDA</a>, </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a0ab6564c48897595c9d23382a026e0a8"> 91</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a0ab6564c48897595c9d23382a026e0a8">Cxt_DDA</a>, </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85adb3d4cbd8c38c1c498bc51198626a790"> 94</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85adb3d4cbd8c38c1c498bc51198626a790">Default_PTA</a> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; };</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"><a class="line" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4d"> 98</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4d">PTAImplTy</a></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da66b132e5ab8c8746eb22e58d199b4c2a"> 100</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da66b132e5ab8c8746eb22e58d199b4c2a">BaseImpl</a>, </div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da84705167ea3a7162ecb9470a8a77b5d8"> 101</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da84705167ea3a7162ecb9470a8a77b5d8">BVDataImpl</a>, </div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da88380bb05f60a1349e192364ba6c5292"> 102</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da88380bb05f60a1349e192364ba6c5292">CondImpl</a>, </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; };</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_1PointerAnalysis.html#ac87eb408daafd5d556ecd8633f7d4f1f"> 107</a></span>&#160; <span class="keyword">typedef</span> llvm::AliasAnalysis <a class="code" href="classSVF_1_1PointerAnalysis.html#ac87eb408daafd5d556ecd8633f7d4f1f">AliasAnalysis</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a5583b5fc0db461a0138b1f2f1c9a89a0"> 108</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const CallICFGNode*&gt;</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#a5583b5fc0db461a0138b1f2f1c9a89a0">CallSiteSet</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585"> 109</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SVFIR.html#a51bf00bfd1d32ea8a4a280cf99725d7d">SVFIR::CallSiteToFunPtrMap</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">CallSiteToFunPtrMap</a>;</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ac1422cd8b449fdb4a1f7c539364e4c41"> 110</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const SVFFunction*&gt;</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac1422cd8b449fdb4a1f7c539364e4c41">FunctionSet</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062"> 111</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;const CallICFGNode*, FunctionSet&gt;</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ac4ad73782f42f90ad7ac9c66edb27c69"> 112</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SCCDetection.html">SCCDetection&lt;PTACallGraph*&gt;</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac4ad73782f42f90ad7ac9c66edb27c69">CallGraphSCC</a>;</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#af46f4b99fc2d5061c9266a7f45aafaca"> 113</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const GlobalValue*&gt;</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#af46f4b99fc2d5061c9266a7f45aafaca">VTableSet</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#aa7f15c74eb438be78fcc028534477478"> 114</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const SVFFunction*&gt;</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#aa7f15c74eb438be78fcc028534477478">VFunSet</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"><a class="line" href="classSVF_1_1PointerAnalysis.html#a7648a0358e2c0798db1c547ec7aa7c64"> 117</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#a7648a0358e2c0798db1c547ec7aa7c64">aliasTestMayAlias</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a13ce6b930a35877f17bffd4b89e22654"> 118</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#a13ce6b930a35877f17bffd4b89e22654">aliasTestMayAliasMangled</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ac353221cc7aced590dcf3550a24b1570"> 119</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#ac353221cc7aced590dcf3550a24b1570">aliasTestNoAlias</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0e68883e2ee328315af29e59bb2008cd"> 120</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#a0e68883e2ee328315af29e59bb2008cd">aliasTestNoAliasMangled</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a83b0a51d88fa7aadff6e9267765d07a5"> 121</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#a83b0a51d88fa7aadff6e9267765d07a5">aliasTestPartialAlias</a>;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#acbb517523fd30708ed1a93f306cd3545"> 122</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#acbb517523fd30708ed1a93f306cd3545">aliasTestPartialAliasMangled</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a7477a4301d548b93958e57df389cbba0"> 123</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#a7477a4301d548b93958e57df389cbba0">aliasTestMustAlias</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#aec884481726cfaf19c4ab8ec8d9195b7"> 124</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#aec884481726cfaf19c4ab8ec8d9195b7">aliasTestMustAliasMangled</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a32c6f12ce8bc0554dbb6aafa36f9a235"> 125</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#a32c6f12ce8bc0554dbb6aafa36f9a235">aliasTestFailMayAlias</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a651cc82379c2d18cc2f69f25b2ae08db"> 126</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#a651cc82379c2d18cc2f69f25b2ae08db">aliasTestFailMayAliasMangled</a>;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a18347e41bc66b16e3f42c7c52811ad42"> 127</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#a18347e41bc66b16e3f42c7c52811ad42">aliasTestFailNoAlias</a>;</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#aefd4e9ea66da5ad84a45efead823eb22"> 128</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#aefd4e9ea66da5ad84a45efead823eb22">aliasTestFailNoAliasMangled</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="keyword">private</span>:</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a03dadb5429e2b84f88713a83153979a8">destroy</a>();</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a3550ea3f087ec557a6fe076bc443b05d">print_stat</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#aac1a133d478bd14c74309d9c4eaf0c8e"> 141</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#aac1a133d478bd14c74309d9c4eaf0c8e">alias_validation</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#afc320fbf269404fe128e69c98e6f9cac"> 143</a></span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#afc320fbf269404fe128e69c98e6f9cac">OnTheFlyIterBudgetForStat</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3"> 147</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>;</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a7e8b3f6843e5ea75fd189162d2cd60a5"> 149</a></span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#a7e8b3f6843e5ea75fd189162d2cd60a5">svfMod</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4"> 151</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a>;</div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a5d3c3094e263bf16a4f312a118c1bd36"> 153</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4d">PTAImplTy</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#a5d3c3094e263bf16a4f312a118c1bd36">ptaImplTy</a>;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f"> 155</a></span>&#160; <a class="code" href="classSVF_1_1PTAStat.html">PTAStat</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>;</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ad47b39252e02c68dfb466d4f42dc7ebe"> 157</a></span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#ad47b39252e02c68dfb466d4f42dc7ebe">ptaCallGraph</a>;</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ae3b651799345d9d92b6d736dafb03f63"> 159</a></span>&#160; CallGraphSCC* <a class="code" href="classSVF_1_1PointerAnalysis.html#ae3b651799345d9d92b6d736dafb03f63">callGraphSCC</a>;</div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a962cc91e4d68b25ce201072c384d8fc2"> 161</a></span>&#160; <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#a962cc91e4d68b25ce201072c384d8fc2">icfg</a>;</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33"> 163</a></span>&#160; <a class="code" href="classSVF_1_1CommonCHGraph.html">CommonCHGraph</a> *<a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a219baed92b811d5519b056ad393fceed"> 165</a></span>&#160; TypeSystem *<a class="code" href="classSVF_1_1PointerAnalysis.html#a219baed92b811d5519b056ad393fceed">typeSystem</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e"> 169</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e">getICFG</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">return</span> pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>();</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_1PointerAnalysis.html#ad2c8654a6672472f9bf17681aa9b60bb"> 173</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad2c8654a6672472f9bf17681aa9b60bb">getNumOfResolvedIndCallEdge</a>()<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> <a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a12c899013f8a9ddd895bfb5027a84d4c">getNumOfResolvedIndCallEdge</a>();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df"> 178</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad47b39252e02c68dfb466d4f42dc7ebe">ptaCallGraph</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0bddf297a2d8cd59ce9a232f0229f248"> 183</a></span>&#160; <span class="keyword">inline</span> CallGraphSCC* <a class="code" href="classSVF_1_1PointerAnalysis.html#a0bddf297a2d8cd59ce9a232f0229f248">getCallGraphSCC</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ae3b651799345d9d92b6d736dafb03f63">callGraphSCC</a>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a14e2a209cb594f91a24ef09b12f82f3f">PointerAnalysis</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> ty = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85adb3d4cbd8c38c1c498bc51198626a790">Default_PTA</a>, <span class="keywordtype">bool</span> alias_check = <span class="keyword">true</span>);</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_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3"> 192</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ac0f821cfe4fb9c9c8816e7a1b1bc0c5e"> 198</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4d">PTAImplTy</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac0f821cfe4fb9c9c8816e7a1b1bc0c5e">getImplTy</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a5d3c3094e263bf16a4f312a118c1bd36">ptaImplTy</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;</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b"> 205</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</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_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</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"> 210</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0ebf1138011aa526d92470c1931313ad"> 212</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PTAStat.html">PTAStat</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#a0ebf1138011aa526d92470c1931313ad">getStat</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433"> 217</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a7e8b3f6843e5ea75fd189162d2cd60a5">svfMod</a>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc"> 222</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a3c2bd95727ec0d9c55c631b6617026c8">OrderedNodeSet</a>&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">getAllValidPtrs</a>()</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">return</span> pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a7990c72dd6d645d713f19ed973841484">getAllValidPtrs</a>();</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a4aeca84393c5586eea7a480737daf17c">~PointerAnalysis</a>();</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a431ec4f85eb0f029e5740b92fd9ceb32">initialize</a>();</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a118dabc50024b5cd91095814ade47166">finalize</a>();</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ae1e217dc18be0ce70bee5ad930cb54c6">analyze</a>() = 0;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0bb90b398ef85504bcd816ae57bee01d"> 240</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0bb90b398ef85504bcd816ae57bee01d">computeDDAPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</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"> 243</span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#ae941b2925716d8ebe14bf190aa8dfd06">AliasResult</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#abd9da46106d820721a24201caaa164e1">alias</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a339bbddac9d9dffd5ef602200d34c403">MemoryLocation</a> &amp;LocA,</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a339bbddac9d9dffd5ef602200d34c403">MemoryLocation</a> &amp;LocB) = 0;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#ae941b2925716d8ebe14bf190aa8dfd06">AliasResult</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#abd9da46106d820721a24201caaa164e1">alias</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V1,</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V2) = 0;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#ae941b2925716d8ebe14bf190aa8dfd06">AliasResult</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#abd9da46106d820721a24201caaa164e1">alias</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node1, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node2) = 0;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">getPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptr) = 0;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">NodeSet</a>&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#ad9af9655a13f3faeaf265ba370d1f280">getRevPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId) = 0;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a3f78f60e1947a6d6fbcd3a0ee11e262a"> 261</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a3f78f60e1947a6d6fbcd3a0ee11e262a">clearPts</a>()</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</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"> 266</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a062f1f2d6d47694caa9ac64a9e68c7b3">printIndCSTargets</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> FunctionSet&amp; targets);</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="comment">// Debug purpose</span></div><div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a627bdc95485fd65e8846fcaa5e89559f"> 270</a></span>&#160;<span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a627bdc95485fd65e8846fcaa5e89559f">dumpTopLevelPtsTo</a>() {}</div><div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a861554c2fdeaa406131c2c920b4c7908"> 271</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a861554c2fdeaa406131c2c920b4c7908">dumpAllPts</a>() {}</div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ad409cbf61271743394b9e5868f3fd197"> 272</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad409cbf61271743394b9e5868f3fd197">dumpCPts</a>() {}</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a1a6cee7e690ccb3e53cdc4c3e67b386d">dumpPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptr, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a062f1f2d6d47694caa9ac64a9e68c7b3">printIndCSTargets</a>();</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a08399de593c073b6dd848a8d849dad27">dumpAllTypes</a>();</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a9d3e7753643166465b0d647a75bc145a"> 280</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CallSiteToFunPtrMap&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#a9d3e7753643166465b0d647a75bc145a">getIndirectCallsites</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0">getIndirectCallsites</a>();</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div><div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#adbceaf90526e44192c2fa4aac5468f5f"> 285</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#adbceaf90526e44192c2fa4aac5468f5f">getFunPtr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<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> pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a17c5d9fa7c0bd3cd03c06b5ff0906eb6">getFunPtr</a>(cs);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0454332c89e60729956bb7d69a1a24df">validateTests</a>();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a7accf4e4db4001716e53d98ce5217ac8">validateSuccessTests</a>(std::string fun);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ab982e6bbd99a2f9a0a3abbebeeb00dcc">validateExpectedFailureTests</a>(std::string fun);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a73fb8e595473e0c7df1dd0de4968ad13">resetObjFieldSensitive</a>();</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ab83b827ea42d3a61aad20b1a1485d866">dumpStat</a>();</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a56368369bc37e37b13f19e5eb1890063"> 305</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a56368369bc37e37b13f19e5eb1890063">containBlackHoleNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts)</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">return</span> pts.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3ce34b9fcb651689bce44ab48fbcdff0">getBlackHoleNode</a>());</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"><a class="line" href="classSVF_1_1PointerAnalysis.html#afa7d9f6209904acd7893ae583e28dafd"> 309</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#afa7d9f6209904acd7893ae583e28dafd">containConstantNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts)</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">return</span> pts.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#ac5da3a0cbe040a45d719b6f6a23aed91">getConstantNode</a>());</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_1PointerAnalysis.html#a45462312a746339fff8b990a093d9a1b"> 313</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a45462312a746339fff8b990a093d9a1b">isBlkObjOrConstantObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptd)<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> pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ad9895f2d075eb402390e3b01ed68e001">isBlkObjOrConstantObj</a>(ptd);</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_1PointerAnalysis.html#a9d3b20c9883d734537fb98b57b5372b9"> 317</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a9d3b20c9883d734537fb98b57b5372b9">isNonPointerObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptd)<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; <span class="keywordflow">return</span> pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a07716ca7f769f704a80ccee1a6ad7ee2">isNonPointerObj</a>(ptd);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ae6ea391ac44dffeb6899bb44323c5361"> 325</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ae6ea391ac44dffeb6899bb44323c5361">isHeapMemObj</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="l00326"></a><span class="lineno"> 326</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(mem &amp;&amp; <span class="stringliteral">&quot;memory object is null??&quot;</span>);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">return</span> mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a898c5bb3956402578266a6fb142e02b1">isHeap</a>();</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a89dfeedf8e3e91603a1e9c73e3608a73"> 332</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a89dfeedf8e3e91603a1e9c73e3608a73">isArrayMemObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(mem &amp;&amp; <span class="stringliteral">&quot;memory object is null??&quot;</span>);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">return</span> mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#aeba6eeed4843a1a90cf1d4b7deb197af">isArray</a>();</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#af90d2ccb01402c5ca9d7a059f345c816"> 342</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#af90d2ccb01402c5ca9d7a059f345c816">isFIObjNode</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="l00343"></a><span class="lineno"> 343</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">return</span> (SVFUtil::isa&lt;FIObjVar&gt;(pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>)));</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"><a class="line" href="classSVF_1_1PointerAnalysis.html#a9f1c599cb9f6e2ae83e29bb84ef6831c"> 346</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#a9f1c599cb9f6e2ae83e29bb84ef6831c">getBaseObjVar</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">return</span> pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">getBaseObjVar</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a68b05bc02c5473c1e0d39ac4f4454bac"> 350</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#a68b05bc02c5473c1e0d39ac4f4454bac">getFIObjVar</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span> pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354">getFIObjVar</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#acbbc0934af9bc0145389dc41430c6d8b"> 354</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#acbbc0934af9bc0145389dc41430c6d8b">getGepObjVar</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls)</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">getGepObjVar</a>(<span class="keywordtype">id</span>,ls);</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_1PointerAnalysis.html#a5dddd53b4ca9d7cc23d88ed9f3de9fde"> 358</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#a5dddd53b4ca9d7cc23d88ed9f3de9fde">getAllFieldsObjVars</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">return</span> pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">getAllFieldsObjVars</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ac5683fe2e24b393ccc5cb6d8bc92cf2b"> 362</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac5683fe2e24b393ccc5cb6d8bc92cf2b">setObjFieldInsensitive</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1MemObj.html">MemObj</a>*<span class="keyword">&gt;</span>(pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(<span class="keywordtype">id</span>));</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#ab9637ea9acd1f8ae4933b4ab2b997e5c">setFieldInsensitive</a>();</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe"> 367</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">isFieldInsensitive</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="l00368"></a><span class="lineno"> 368</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">return</span> mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>();</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;</div><div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a4880571f57542afc50da506dfe273183"> 375</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a4880571f57542afc50da506dfe273183">printStat</a>()</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a3550ea3f087ec557a6fe076bc443b05d">print_stat</a>;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; }</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#af44b14fed89918847c0228c1100c56d2"> 381</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#af44b14fed89918847c0228c1100c56d2">disablePrintStat</a>()</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; print_stat = <span class="keyword">false</span>;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;</div><div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe"> 388</a></span>&#160; <span class="keyword">inline</span> CallEdgeMap&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">getIndCallMap</a>()</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>();</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#abdacd060691add054839aa183babe095"> 392</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#abdacd060691add054839aa183babe095">hasIndCSCallees</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a71a63c53a093ea8e450fb53fd60c9424">hasIndCSCallees</a>(cs);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div><div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ae0efd57376195eacded85d58abee5b46"> 396</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> FunctionSet&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#ae0efd57376195eacded85d58abee5b46">getIndCSCallees</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ac106536778c829d6925d6ed2149aeb44">getIndCSCallees</a>(cs);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#aa0a14fd11d7e69b2a3f91a3862f172cd">resolveIndCalls</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; target, CallEdgeMap&amp; newEdges,<a class="code" href="namespaceSVF.html#a6c559fdb6e0c4e84c4e5b05a5cf90052">LLVMCallGraph</a>* callgraph = <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ab541df6fc703c0b21c2c308584c0b7ff">matchArgs</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;</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"> 409</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#aafa5df4aa576a144476e547b1da35795">callGraphSCCDetection</a>()</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">if</span>(callGraphSCC==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; callGraphSCC = <span class="keyword">new</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac4ad73782f42f90ad7ac9c66edb27c69">CallGraphSCC</a>(ptaCallGraph);</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"> 415</span>&#160; callGraphSCC-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">find</a>();</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; }</div><div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ae8190ce12fb0c6360953f4b05047fbe8"> 418</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#ae8190ce12fb0c6360953f4b05047fbe8">getCallGraphSCCRepNode</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="l00419"></a><span class="lineno"> 419</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">return</span> callGraphSCC-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">repNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; }</div><div class="line"><a name="l00423"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ae58c2b25494ec51e714c83c6cfd5dd67"> 423</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ae58c2b25494ec51e714c83c6cfd5dd67">inSameCallGraphSCC</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun1,<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun2)</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* src = ptaCallGraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(fun1);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* dst = ptaCallGraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(fun2);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#ae8190ce12fb0c6360953f4b05047fbe8">getCallGraphSCCRepNode</a>(src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) == <a class="code" href="classSVF_1_1PointerAnalysis.html#ae8190ce12fb0c6360953f4b05047fbe8">getCallGraphSCCRepNode</a>(dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()));</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; }</div><div class="line"><a name="l00429"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#aa725a0c9426e8615cbc078c88561f66a"> 429</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#aa725a0c9426e8615cbc078c88561f66a">isInRecursion</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">return</span> callGraphSCC-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a5d699af73b1e7ad4e3a5f6d26b8b6d15">isInCycle</a>(ptaCallGraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(fun)-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a108380f6f0b67654bb7c7676686096c8">isLocalVarInRecursiveFun</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="l00436"></a><span class="lineno"> 436</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#aed4e5066f6ddef83afaf60adbcc11de0"> 438</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#aed4e5066f6ddef83afaf60adbcc11de0">PTAName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Pointer Analysis&quot;</span>;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;</div><div class="line"><a name="l00444"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ae2cc7cd0803dbd90639140e71b06b1b5"> 444</a></span>&#160; <a class="code" href="classSVF_1_1CommonCHGraph.html">CommonCHGraph</a> *<a class="code" href="classSVF_1_1PointerAnalysis.html#ae2cc7cd0803dbd90639140e71b06b1b5">getCHGraph</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a>;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ade41f3562704d56c7490dcfc941b3437">getVFnsFromCHA</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, VFunSet &amp;vfns);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a011b8401f5ed5fdb6cd507053465a7a2">getVFnsFromPts</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;target, VFunSet &amp;vfns);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a6a5dec067fa2a1babc83f36daa8afcc3">connectVCallToVFns</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> VFunSet &amp;vfns, CallEdgeMap&amp; newEdges);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac04b64a5884710508b304f93da88c7ba">resolveCPPIndCalls</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs,</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; target,</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; CallEdgeMap&amp; newEdges);</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"><a class="line" href="classSVF_1_1PointerAnalysis.html#ae615dd279fbf681e3c15e7209e3adfbe"> 457</a></span>&#160; <span class="keyword">const</span> TypeSystem *<a class="code" href="classSVF_1_1PointerAnalysis.html#ae615dd279fbf681e3c15e7209e3adfbe">getTypeSystem</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a219baed92b811d5519b056ad393fceed">typeSystem</a>;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;};</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* POINTERANALYSIS_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a9d3e7753643166465b0d647a75bc145a"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a9d3e7753643166465b0d647a75bc145a">SVF::PointerAnalysis::getIndirectCallsites</a></div><div class="ttdeci">const CallSiteToFunPtrMap &amp; getIndirectCallsites() const</div><div class="ttdoc">Return all indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00280">PointerAnalysis.h:280</a></div></div>
69
+ <a href="PointerAnalysis_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">//===- PointerAnalysis.h -- Base class of pointer analyses--------------------//</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-2017&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"> * PointerAnalysis.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: Nov 12, 2013</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 POINTERANALYSIS_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define POINTERANALYSIS_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 &lt;unistd.h&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &lt;signal.h&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFIR_8h.html">MemoryModel/SVFIR.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ConditionalPT_8h.html">MemoryModel/ConditionalPT.h</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="AbstractPointsToDS_8h.html">MemoryModel/AbstractPointsToDS.h</a>&quot;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="MutablePointsToDS_8h.html">MemoryModel/MutablePointsToDS.h</a>&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PersistentPointsToDS_8h.html">MemoryModel/PersistentPointsToDS.h</a>&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PTACallGraph_8h.html">Graphs/PTACallGraph.h</a>&quot;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SCC_8h.html">Util/SCC.h</a>&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></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;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">class </span>CommonCHGraph;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">class </span>TypeSystem;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">class </span>SVFModule;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keyword">class </span>ICFG;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="keyword">class </span>PTAStat;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> * Pointer Analysis Base Class</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html"> 57</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;{</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85"> 62</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="comment">// Whole program analysis</span></div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49"> 65</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49">Andersen_BASE</a>, </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6"> 66</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6">Andersen_WPA</a>, </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac7c033efd59e2b5fcded79fc3ebdb9d4"> 67</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac7c033efd59e2b5fcded79fc3ebdb9d4">AndersenLCD_WPA</a>, </div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a46f5e74d5f4b0a2d134e68d262079c3f"> 68</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a46f5e74d5f4b0a2d134e68d262079c3f">AndersenHCD_WPA</a>, </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a99d50c1712075e4c3278fc4fa4c9cd2f"> 69</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a99d50c1712075e4c3278fc4fa4c9cd2f">AndersenHLCD_WPA</a>, </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1"> 70</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1">AndersenSCD_WPA</a>, </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b"> 71</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b">AndersenSFR_WPA</a>, </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2"> 72</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">AndersenWaveDiff_WPA</a>, </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac581e279a4bd69c059b0e5987f839a1f"> 73</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac581e279a4bd69c059b0e5987f839a1f">AndersenWaveDiffWithType_WPA</a>, </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a"> 74</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a">Steensgaard_WPA</a>, </div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac9e931f254fa3471f5f5337cbca1de09"> 75</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac9e931f254fa3471f5f5337cbca1de09">CSCallString_WPA</a>, </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85adf8fe4349f84779601a0b41659ca8e27"> 76</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85adf8fe4349f84779601a0b41659ca8e27">CSSummary_WPA</a>, </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a62281bc39fea50a88e55edf605620322"> 77</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a62281bc39fea50a88e55edf605620322">FSDATAFLOW_WPA</a>, </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad6ccf1ce66083278349c5c3111172d78"> 78</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad6ccf1ce66083278349c5c3111172d78">FSSPARSE_WPA</a>, </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a088dda60195ab259693977af8414f203"> 79</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a088dda60195ab259693977af8414f203">FSTBHC_WPA</a>, </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9"> 80</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9">VFS_WPA</a>, </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a43837619e78e03dc95ec6e88959faf82"> 81</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a43837619e78e03dc95ec6e88959faf82">FSCS_WPA</a>, </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a30826fb1ddb602fd4439ca84eb73e8f4"> 82</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a30826fb1ddb602fd4439ca84eb73e8f4">FSCSPS_WPA</a>, </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a859290ec941a06029f84ef249a5d2fda"> 83</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a859290ec941a06029f84ef249a5d2fda">ADAPTFSCS_WPA</a>, </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a42d52c9444028e72ea8e6dc0c8c08ada"> 84</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a42d52c9444028e72ea8e6dc0c8c08ada">ADAPTFSCSPS_WPA</a>, </div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3"> 85</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">TypeCPP_WPA</a>, </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="comment">// Demand driven analysis</span></div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abe1d8104c77bfe4bbc201a64410c7f61"> 88</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abe1d8104c77bfe4bbc201a64410c7f61">FieldS_DDA</a>, </div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85aa43c83e2f0df003c158d4b1325b50b18"> 89</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85aa43c83e2f0df003c158d4b1325b50b18">FlowS_DDA</a>, </div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acaf0c0774025005647deaf59582b9d58"> 90</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acaf0c0774025005647deaf59582b9d58">PathS_DDA</a>, </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a0ab6564c48897595c9d23382a026e0a8"> 91</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a0ab6564c48897595c9d23382a026e0a8">Cxt_DDA</a>, </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85adb3d4cbd8c38c1c498bc51198626a790"> 94</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85adb3d4cbd8c38c1c498bc51198626a790">Default_PTA</a> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; };</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"><a class="line" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4d"> 98</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4d">PTAImplTy</a></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da66b132e5ab8c8746eb22e58d199b4c2a"> 100</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da66b132e5ab8c8746eb22e58d199b4c2a">BaseImpl</a>, </div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da84705167ea3a7162ecb9470a8a77b5d8"> 101</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da84705167ea3a7162ecb9470a8a77b5d8">BVDataImpl</a>, </div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da88380bb05f60a1349e192364ba6c5292"> 102</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da88380bb05f60a1349e192364ba6c5292">CondImpl</a>, </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; };</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_1PointerAnalysis.html#ac87eb408daafd5d556ecd8633f7d4f1f"> 107</a></span>&#160; <span class="keyword">typedef</span> llvm::AliasAnalysis <a class="code" href="classSVF_1_1PointerAnalysis.html#ac87eb408daafd5d556ecd8633f7d4f1f">AliasAnalysis</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a5583b5fc0db461a0138b1f2f1c9a89a0"> 108</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const CallICFGNode*&gt;</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#a5583b5fc0db461a0138b1f2f1c9a89a0">CallSiteSet</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585"> 109</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SVFIR.html#a51bf00bfd1d32ea8a4a280cf99725d7d">SVFIR::CallSiteToFunPtrMap</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">CallSiteToFunPtrMap</a>;</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ac1422cd8b449fdb4a1f7c539364e4c41"> 110</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const SVFFunction*&gt;</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac1422cd8b449fdb4a1f7c539364e4c41">FunctionSet</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062"> 111</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;const CallICFGNode*, FunctionSet&gt;</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ac4ad73782f42f90ad7ac9c66edb27c69"> 112</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SCCDetection.html">SCCDetection&lt;PTACallGraph*&gt;</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac4ad73782f42f90ad7ac9c66edb27c69">CallGraphSCC</a>;</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#af46f4b99fc2d5061c9266a7f45aafaca"> 113</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const GlobalValue*&gt;</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#af46f4b99fc2d5061c9266a7f45aafaca">VTableSet</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#aa7f15c74eb438be78fcc028534477478"> 114</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const SVFFunction*&gt;</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#aa7f15c74eb438be78fcc028534477478">VFunSet</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"><a class="line" href="classSVF_1_1PointerAnalysis.html#a7648a0358e2c0798db1c547ec7aa7c64"> 117</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#a7648a0358e2c0798db1c547ec7aa7c64">aliasTestMayAlias</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a13ce6b930a35877f17bffd4b89e22654"> 118</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#a13ce6b930a35877f17bffd4b89e22654">aliasTestMayAliasMangled</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ac353221cc7aced590dcf3550a24b1570"> 119</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#ac353221cc7aced590dcf3550a24b1570">aliasTestNoAlias</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0e68883e2ee328315af29e59bb2008cd"> 120</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#a0e68883e2ee328315af29e59bb2008cd">aliasTestNoAliasMangled</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a83b0a51d88fa7aadff6e9267765d07a5"> 121</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#a83b0a51d88fa7aadff6e9267765d07a5">aliasTestPartialAlias</a>;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#acbb517523fd30708ed1a93f306cd3545"> 122</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#acbb517523fd30708ed1a93f306cd3545">aliasTestPartialAliasMangled</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a7477a4301d548b93958e57df389cbba0"> 123</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#a7477a4301d548b93958e57df389cbba0">aliasTestMustAlias</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#aec884481726cfaf19c4ab8ec8d9195b7"> 124</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#aec884481726cfaf19c4ab8ec8d9195b7">aliasTestMustAliasMangled</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a32c6f12ce8bc0554dbb6aafa36f9a235"> 125</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#a32c6f12ce8bc0554dbb6aafa36f9a235">aliasTestFailMayAlias</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a651cc82379c2d18cc2f69f25b2ae08db"> 126</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#a651cc82379c2d18cc2f69f25b2ae08db">aliasTestFailMayAliasMangled</a>;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a18347e41bc66b16e3f42c7c52811ad42"> 127</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#a18347e41bc66b16e3f42c7c52811ad42">aliasTestFailNoAlias</a>;</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#aefd4e9ea66da5ad84a45efead823eb22"> 128</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#aefd4e9ea66da5ad84a45efead823eb22">aliasTestFailNoAliasMangled</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="keyword">private</span>:</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a03dadb5429e2b84f88713a83153979a8">destroy</a>();</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a3550ea3f087ec557a6fe076bc443b05d">print_stat</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#aac1a133d478bd14c74309d9c4eaf0c8e"> 141</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#aac1a133d478bd14c74309d9c4eaf0c8e">alias_validation</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#afc320fbf269404fe128e69c98e6f9cac"> 143</a></span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#afc320fbf269404fe128e69c98e6f9cac">OnTheFlyIterBudgetForStat</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3"> 147</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>;</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a7e8b3f6843e5ea75fd189162d2cd60a5"> 149</a></span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#a7e8b3f6843e5ea75fd189162d2cd60a5">svfMod</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4"> 151</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a>;</div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a5d3c3094e263bf16a4f312a118c1bd36"> 153</a></span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4d">PTAImplTy</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#a5d3c3094e263bf16a4f312a118c1bd36">ptaImplTy</a>;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f"> 155</a></span>&#160; <a class="code" href="classSVF_1_1PTAStat.html">PTAStat</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>;</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ad47b39252e02c68dfb466d4f42dc7ebe"> 157</a></span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#ad47b39252e02c68dfb466d4f42dc7ebe">ptaCallGraph</a>;</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ae3b651799345d9d92b6d736dafb03f63"> 159</a></span>&#160; CallGraphSCC* <a class="code" href="classSVF_1_1PointerAnalysis.html#ae3b651799345d9d92b6d736dafb03f63">callGraphSCC</a>;</div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a962cc91e4d68b25ce201072c384d8fc2"> 161</a></span>&#160; <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#a962cc91e4d68b25ce201072c384d8fc2">icfg</a>;</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33"> 163</a></span>&#160; <a class="code" href="classSVF_1_1CommonCHGraph.html">CommonCHGraph</a> *<a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a219baed92b811d5519b056ad393fceed"> 165</a></span>&#160; TypeSystem *<a class="code" href="classSVF_1_1PointerAnalysis.html#a219baed92b811d5519b056ad393fceed">typeSystem</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e"> 169</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e">getICFG</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">return</span> pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>();</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_1PointerAnalysis.html#ad2c8654a6672472f9bf17681aa9b60bb"> 173</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad2c8654a6672472f9bf17681aa9b60bb">getNumOfResolvedIndCallEdge</a>()<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> <a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a12c899013f8a9ddd895bfb5027a84d4c">getNumOfResolvedIndCallEdge</a>();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df"> 178</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad47b39252e02c68dfb466d4f42dc7ebe">ptaCallGraph</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0bddf297a2d8cd59ce9a232f0229f248"> 183</a></span>&#160; <span class="keyword">inline</span> CallGraphSCC* <a class="code" href="classSVF_1_1PointerAnalysis.html#a0bddf297a2d8cd59ce9a232f0229f248">getCallGraphSCC</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ae3b651799345d9d92b6d736dafb03f63">callGraphSCC</a>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a14e2a209cb594f91a24ef09b12f82f3f">PointerAnalysis</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> ty = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85adb3d4cbd8c38c1c498bc51198626a790">Default_PTA</a>, <span class="keywordtype">bool</span> alias_check = <span class="keyword">true</span>);</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_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3"> 192</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">ptaTy</a>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ac0f821cfe4fb9c9c8816e7a1b1bc0c5e"> 198</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4d">PTAImplTy</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac0f821cfe4fb9c9c8816e7a1b1bc0c5e">getImplTy</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a5d3c3094e263bf16a4f312a118c1bd36">ptaImplTy</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;</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b"> 205</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</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_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</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"> 210</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0ebf1138011aa526d92470c1931313ad"> 212</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PTAStat.html">PTAStat</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#a0ebf1138011aa526d92470c1931313ad">getStat</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433"> 217</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a7e8b3f6843e5ea75fd189162d2cd60a5">svfMod</a>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc"> 222</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a3c2bd95727ec0d9c55c631b6617026c8">OrderedNodeSet</a>&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">getAllValidPtrs</a>()</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">return</span> pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a7990c72dd6d645d713f19ed973841484">getAllValidPtrs</a>();</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a4aeca84393c5586eea7a480737daf17c">~PointerAnalysis</a>();</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a431ec4f85eb0f029e5740b92fd9ceb32">initialize</a>();</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a118dabc50024b5cd91095814ade47166">finalize</a>();</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ae1e217dc18be0ce70bee5ad930cb54c6">analyze</a>() = 0;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0bb90b398ef85504bcd816ae57bee01d"> 240</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0bb90b398ef85504bcd816ae57bee01d">computeDDAPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</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"> 243</span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#ae941b2925716d8ebe14bf190aa8dfd06">AliasResult</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#abd9da46106d820721a24201caaa164e1">alias</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a339bbddac9d9dffd5ef602200d34c403">MemoryLocation</a> &amp;LocA,</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a339bbddac9d9dffd5ef602200d34c403">MemoryLocation</a> &amp;LocB) = 0;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#ae941b2925716d8ebe14bf190aa8dfd06">AliasResult</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#abd9da46106d820721a24201caaa164e1">alias</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V1,</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V2) = 0;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#ae941b2925716d8ebe14bf190aa8dfd06">AliasResult</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#abd9da46106d820721a24201caaa164e1">alias</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node1, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node2) = 0;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">getPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptr) = 0;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">NodeSet</a>&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#ad9af9655a13f3faeaf265ba370d1f280">getRevPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId) = 0;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a3f78f60e1947a6d6fbcd3a0ee11e262a"> 261</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a3f78f60e1947a6d6fbcd3a0ee11e262a">clearPts</a>()</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</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"> 266</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a062f1f2d6d47694caa9ac64a9e68c7b3">printIndCSTargets</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> FunctionSet&amp; targets);</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="comment">// Debug purpose</span></div><div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a627bdc95485fd65e8846fcaa5e89559f"> 270</a></span>&#160;<span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a627bdc95485fd65e8846fcaa5e89559f">dumpTopLevelPtsTo</a>() {}</div><div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a861554c2fdeaa406131c2c920b4c7908"> 271</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a861554c2fdeaa406131c2c920b4c7908">dumpAllPts</a>() {}</div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ad409cbf61271743394b9e5868f3fd197"> 272</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad409cbf61271743394b9e5868f3fd197">dumpCPts</a>() {}</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a1a6cee7e690ccb3e53cdc4c3e67b386d">dumpPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptr, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a062f1f2d6d47694caa9ac64a9e68c7b3">printIndCSTargets</a>();</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a08399de593c073b6dd848a8d849dad27">dumpAllTypes</a>();</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a9d3e7753643166465b0d647a75bc145a"> 280</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CallSiteToFunPtrMap&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#a9d3e7753643166465b0d647a75bc145a">getIndirectCallsites</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0">getIndirectCallsites</a>();</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div><div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#adbceaf90526e44192c2fa4aac5468f5f"> 285</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#adbceaf90526e44192c2fa4aac5468f5f">getFunPtr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<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> pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a17c5d9fa7c0bd3cd03c06b5ff0906eb6">getFunPtr</a>(cs);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0454332c89e60729956bb7d69a1a24df">validateTests</a>();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a7accf4e4db4001716e53d98ce5217ac8">validateSuccessTests</a>(std::string fun);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ab982e6bbd99a2f9a0a3abbebeeb00dcc">validateExpectedFailureTests</a>(std::string fun);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a73fb8e595473e0c7df1dd0de4968ad13">resetObjFieldSensitive</a>();</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ab83b827ea42d3a61aad20b1a1485d866">dumpStat</a>();</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a56368369bc37e37b13f19e5eb1890063"> 305</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a56368369bc37e37b13f19e5eb1890063">containBlackHoleNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts)</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">return</span> pts.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3ce34b9fcb651689bce44ab48fbcdff0">getBlackHoleNode</a>());</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"><a class="line" href="classSVF_1_1PointerAnalysis.html#afa7d9f6209904acd7893ae583e28dafd"> 309</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#afa7d9f6209904acd7893ae583e28dafd">containConstantNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts)</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">return</span> pts.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#ac5da3a0cbe040a45d719b6f6a23aed91">getConstantNode</a>());</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_1PointerAnalysis.html#a45462312a746339fff8b990a093d9a1b"> 313</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a45462312a746339fff8b990a093d9a1b">isBlkObjOrConstantObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptd)<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> pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ad9895f2d075eb402390e3b01ed68e001">isBlkObjOrConstantObj</a>(ptd);</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_1PointerAnalysis.html#a9d3b20c9883d734537fb98b57b5372b9"> 317</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a9d3b20c9883d734537fb98b57b5372b9">isNonPointerObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptd)<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; <span class="keywordflow">return</span> pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a980e54129ece0757d7f0373f37428507">isNonPointerObj</a>(ptd);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ae6ea391ac44dffeb6899bb44323c5361"> 325</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ae6ea391ac44dffeb6899bb44323c5361">isHeapMemObj</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="l00326"></a><span class="lineno"> 326</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(mem &amp;&amp; <span class="stringliteral">&quot;memory object is null??&quot;</span>);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">return</span> mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a898c5bb3956402578266a6fb142e02b1">isHeap</a>();</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a89dfeedf8e3e91603a1e9c73e3608a73"> 332</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a89dfeedf8e3e91603a1e9c73e3608a73">isArrayMemObj</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(mem &amp;&amp; <span class="stringliteral">&quot;memory object is null??&quot;</span>);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">return</span> mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#aeba6eeed4843a1a90cf1d4b7deb197af">isArray</a>();</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#af90d2ccb01402c5ca9d7a059f345c816"> 342</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#af90d2ccb01402c5ca9d7a059f345c816">isFIObjNode</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="l00343"></a><span class="lineno"> 343</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">return</span> (SVFUtil::isa&lt;FIObjVar&gt;(pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>)));</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"><a class="line" href="classSVF_1_1PointerAnalysis.html#a9f1c599cb9f6e2ae83e29bb84ef6831c"> 346</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#a9f1c599cb9f6e2ae83e29bb84ef6831c">getBaseObjVar</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">return</span> pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">getBaseObjVar</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a68b05bc02c5473c1e0d39ac4f4454bac"> 350</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#a68b05bc02c5473c1e0d39ac4f4454bac">getFIObjVar</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span> pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354">getFIObjVar</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#acbbc0934af9bc0145389dc41430c6d8b"> 354</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#acbbc0934af9bc0145389dc41430c6d8b">getGepObjVar</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls)</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">getGepObjVar</a>(<span class="keywordtype">id</span>,ls);</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_1PointerAnalysis.html#a5dddd53b4ca9d7cc23d88ed9f3de9fde"> 358</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#a5dddd53b4ca9d7cc23d88ed9f3de9fde">getAllFieldsObjVars</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">return</span> pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">getAllFieldsObjVars</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ac5683fe2e24b393ccc5cb6d8bc92cf2b"> 362</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac5683fe2e24b393ccc5cb6d8bc92cf2b">setObjFieldInsensitive</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1MemObj.html">MemObj</a>*<span class="keyword">&gt;</span>(pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(<span class="keywordtype">id</span>));</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#ab9637ea9acd1f8ae4933b4ab2b997e5c">setFieldInsensitive</a>();</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe"> 367</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">isFieldInsensitive</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="l00368"></a><span class="lineno"> 368</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">return</span> mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>();</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;</div><div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a4880571f57542afc50da506dfe273183"> 375</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a4880571f57542afc50da506dfe273183">printStat</a>()</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a3550ea3f087ec557a6fe076bc443b05d">print_stat</a>;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; }</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#af44b14fed89918847c0228c1100c56d2"> 381</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#af44b14fed89918847c0228c1100c56d2">disablePrintStat</a>()</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; print_stat = <span class="keyword">false</span>;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;</div><div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe"> 388</a></span>&#160; <span class="keyword">inline</span> CallEdgeMap&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#a1ca30dfa42702071b65d363c76d25cbe">getIndCallMap</a>()</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>();</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#abdacd060691add054839aa183babe095"> 392</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#abdacd060691add054839aa183babe095">hasIndCSCallees</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a71a63c53a093ea8e450fb53fd60c9424">hasIndCSCallees</a>(cs);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div><div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ae0efd57376195eacded85d58abee5b46"> 396</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> FunctionSet&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#ae0efd57376195eacded85d58abee5b46">getIndCSCallees</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ac106536778c829d6925d6ed2149aeb44">getIndCSCallees</a>(cs);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#aa0a14fd11d7e69b2a3f91a3862f172cd">resolveIndCalls</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; target, CallEdgeMap&amp; newEdges,<a class="code" href="namespaceSVF.html#a6c559fdb6e0c4e84c4e5b05a5cf90052">LLVMCallGraph</a>* callgraph = <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ab541df6fc703c0b21c2c308584c0b7ff">matchArgs</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;</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"> 409</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#aafa5df4aa576a144476e547b1da35795">callGraphSCCDetection</a>()</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">if</span>(callGraphSCC==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; callGraphSCC = <span class="keyword">new</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac4ad73782f42f90ad7ac9c66edb27c69">CallGraphSCC</a>(ptaCallGraph);</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"> 415</span>&#160; callGraphSCC-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">find</a>();</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; }</div><div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ae8190ce12fb0c6360953f4b05047fbe8"> 418</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PointerAnalysis.html#ae8190ce12fb0c6360953f4b05047fbe8">getCallGraphSCCRepNode</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="l00419"></a><span class="lineno"> 419</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">return</span> callGraphSCC-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">repNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; }</div><div class="line"><a name="l00423"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ae58c2b25494ec51e714c83c6cfd5dd67"> 423</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ae58c2b25494ec51e714c83c6cfd5dd67">inSameCallGraphSCC</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun1,<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun2)</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* src = ptaCallGraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(fun1);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* dst = ptaCallGraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(fun2);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#ae8190ce12fb0c6360953f4b05047fbe8">getCallGraphSCCRepNode</a>(src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) == <a class="code" href="classSVF_1_1PointerAnalysis.html#ae8190ce12fb0c6360953f4b05047fbe8">getCallGraphSCCRepNode</a>(dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()));</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; }</div><div class="line"><a name="l00429"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#aa725a0c9426e8615cbc078c88561f66a"> 429</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#aa725a0c9426e8615cbc078c88561f66a">isInRecursion</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">return</span> callGraphSCC-&gt;<a class="code" href="classSVF_1_1SCCDetection.html#a5d699af73b1e7ad4e3a5f6d26b8b6d15">isInCycle</a>(ptaCallGraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(fun)-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a108380f6f0b67654bb7c7676686096c8">isLocalVarInRecursiveFun</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="l00436"></a><span class="lineno"> 436</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#aed4e5066f6ddef83afaf60adbcc11de0"> 438</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PointerAnalysis.html#aed4e5066f6ddef83afaf60adbcc11de0">PTAName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Pointer Analysis&quot;</span>;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;</div><div class="line"><a name="l00444"></a><span class="lineno"><a class="line" href="classSVF_1_1PointerAnalysis.html#ae2cc7cd0803dbd90639140e71b06b1b5"> 444</a></span>&#160; <a class="code" href="classSVF_1_1CommonCHGraph.html">CommonCHGraph</a> *<a class="code" href="classSVF_1_1PointerAnalysis.html#ae2cc7cd0803dbd90639140e71b06b1b5">getCHGraph</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a>;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ade41f3562704d56c7490dcfc941b3437">getVFnsFromCHA</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, VFunSet &amp;vfns);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a011b8401f5ed5fdb6cd507053465a7a2">getVFnsFromPts</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;target, VFunSet &amp;vfns);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a6a5dec067fa2a1babc83f36daa8afcc3">connectVCallToVFns</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> VFunSet &amp;vfns, CallEdgeMap&amp; newEdges);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac04b64a5884710508b304f93da88c7ba">resolveCPPIndCalls</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs,</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; target,</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; CallEdgeMap&amp; newEdges);</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"><a class="line" href="classSVF_1_1PointerAnalysis.html#ae615dd279fbf681e3c15e7209e3adfbe"> 457</a></span>&#160; <span class="keyword">const</span> TypeSystem *<a class="code" href="classSVF_1_1PointerAnalysis.html#ae615dd279fbf681e3c15e7209e3adfbe">getTypeSystem</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a219baed92b811d5519b056ad393fceed">typeSystem</a>;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;};</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* POINTERANALYSIS_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a9d3e7753643166465b0d647a75bc145a"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a9d3e7753643166465b0d647a75bc145a">SVF::PointerAnalysis::getIndirectCallsites</a></div><div class="ttdeci">const CallSiteToFunPtrMap &amp; getIndirectCallsites() const</div><div class="ttdoc">Return all indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00280">PointerAnalysis.h:280</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1IRGraph_html_a3ce34b9fcb651689bce44ab48fbcdff0"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a3ce34b9fcb651689bce44ab48fbcdff0">SVF::IRGraph::getBlackHoleNode</a></div><div class="ttdeci">NodeID getBlackHoleNode() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00144">IRGraph.h:144</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a56368369bc37e37b13f19e5eb1890063"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a56368369bc37e37b13f19e5eb1890063">SVF::PointerAnalysis::containBlackHoleNode</a></div><div class="ttdeci">bool containBlackHoleNode(const PointsTo &amp;pts)</div><div class="ttdoc">Determine whether a points-to contains a black hole or constant node. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00305">PointerAnalysis.h:305</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a60b111647e000cc983aa52513f90afbc"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">SVF::PointerAnalysis::getAllValidPtrs</a></div><div class="ttdeci">OrderedNodeSet &amp; getAllValidPtrs()</div><div class="ttdoc">Get all Valid Pointers for resolution. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00222">PointerAnalysis.h:222</a></div></div>
73
- <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#l00415">SymbolTableInfo.h:415</a></div></div>
73
+ <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#l00411">SymbolTableInfo.h:411</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a9d3b20c9883d734537fb98b57b5372b9"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a9d3b20c9883d734537fb98b57b5372b9">SVF::PointerAnalysis::isNonPointerObj</a></div><div class="ttdeci">bool isNonPointerObj(NodeID ptd) const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00317">PointerAnalysis.h:317</a></div></div>
75
75
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ab982e6bbd99a2f9a0a3abbebeeb00dcc"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ab982e6bbd99a2f9a0a3abbebeeb00dcc">SVF::PointerAnalysis::validateExpectedFailureTests</a></div><div class="ttdeci">virtual void validateExpectedFailureTests(std::string fun)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00608">PointerAnalysis.cpp:608</a></div></div>
76
76
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a962cc91e4d68b25ce201072c384d8fc2"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a962cc91e4d68b25ce201072c384d8fc2">SVF::PointerAnalysis::icfg</a></div><div class="ttdeci">ICFG * icfg</div><div class="ttdoc">Interprocedural control-flow graph. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00161">PointerAnalysis.h:161</a></div></div>
@@ -91,14 +91,14 @@ $(function() {
91
91
  <div class="ttc" id="namespaceSVF_html_a339bbddac9d9dffd5ef602200d34c403"><div class="ttname"><a href="namespaceSVF.html#a339bbddac9d9dffd5ef602200d34c403">SVF::MemoryLocation</a></div><div class="ttdeci">llvm::MemoryLocation MemoryLocation</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00119">BasicTypes.h:119</a></div></div>
92
92
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_ad49fa2a288945f6910deb11acdf6a42d"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">SVF::PTACallGraph::getIndCallMap</a></div><div class="ttdeci">CallEdgeMap &amp; getIndCallMap()</div><div class="ttdoc">Get callees from an indirect callsite. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00280">PTACallGraph.h:280</a></div></div>
93
93
  <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>
94
- <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#l00446">SVFIR.h:446</a></div></div>
94
+ <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#l00414">SVFIR.h:414</a></div></div>
95
95
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ac87eb408daafd5d556ecd8633f7d4f1f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac87eb408daafd5d556ecd8633f7d4f1f">SVF::PointerAnalysis::AliasAnalysis</a></div><div class="ttdeci">llvm::AliasAnalysis AliasAnalysis</div><div class="ttdoc">Indirect call edges type, map a callsite to a set of callees. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00107">PointerAnalysis.h:107</a></div></div>
96
96
  <div class="ttc" id="ConditionalPT_8h_html"><div class="ttname"><a href="ConditionalPT_8h.html">ConditionalPT.h</a></div></div>
97
97
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0454332c89e60729956bb7d69a1a24df"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0454332c89e60729956bb7d69a1a24df">SVF::PointerAnalysis::validateTests</a></div><div class="ttdeci">virtual void validateTests()</div><div class="ttdoc">Alias check functions to verify correctness of pointer analysis. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00242">PointerAnalysis.cpp:242</a></div></div>
98
98
  <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>
99
- <div class="ttc" id="classSVF_1_1SVFIR_html_a77a6bb9335aa12d29825af1b5ea07e08"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">SVF::SVFIR::getBaseObjVar</a></div><div class="ttdeci">NodeID getBaseObjVar(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00442">SVFIR.h:442</a></div></div>
99
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a77a6bb9335aa12d29825af1b5ea07e08"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">SVF::SVFIR::getBaseObjVar</a></div><div class="ttdeci">NodeID getBaseObjVar(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00410">SVFIR.h:410</a></div></div>
100
100
  <div class="ttc" id="classSVF_1_1SCCDetection_html_a123b5006a6da7053e5e357140da3c5a3"><div class="ttname"><a href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">SVF::SCCDetection::find</a></div><div class="ttdeci">void find(void)</div><div class="ttdef"><b>Definition:</b> <a href="SCC_8h_source.html#l00308">SCC.h:308</a></div></div>
101
- <div class="ttc" id="classSVF_1_1MemObj_html_ab9637ea9acd1f8ae4933b4ab2b997e5c"><div class="ttname"><a href="classSVF_1_1MemObj.html#ab9637ea9acd1f8ae4933b4ab2b997e5c">SVF::MemObj::setFieldInsensitive</a></div><div class="ttdeci">void setFieldInsensitive()</div><div class="ttdoc">Set the memory object to be field insensitive. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00725">SymbolTableInfo.cpp:725</a></div></div>
101
+ <div class="ttc" id="classSVF_1_1MemObj_html_ab9637ea9acd1f8ae4933b4ab2b997e5c"><div class="ttname"><a href="classSVF_1_1MemObj.html#ab9637ea9acd1f8ae4933b4ab2b997e5c">SVF::MemObj::setFieldInsensitive</a></div><div class="ttdeci">void setFieldInsensitive()</div><div class="ttdoc">Set the memory object to be field insensitive. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00714">SymbolTableInfo.cpp:714</a></div></div>
102
102
  <div class="ttc" id="SCC_8h_html"><div class="ttname"><a href="SCC_8h.html">SCC.h</a></div></div>
103
103
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a4880571f57542afc50da506dfe273183"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a4880571f57542afc50da506dfe273183">SVF::PointerAnalysis::printStat</a></div><div class="ttdeci">bool printStat()</div><div class="ttdoc">Whether print statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00375">PointerAnalysis.h:375</a></div></div>
104
104
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a219baed92b811d5519b056ad393fceed"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a219baed92b811d5519b056ad393fceed">SVF::PointerAnalysis::typeSystem</a></div><div class="ttdeci">TypeSystem * typeSystem</div><div class="ttdoc">TypeSystem. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00165">PointerAnalysis.h:165</a></div></div>
@@ -125,7 +125,7 @@ $(function() {
125
125
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_acbbc0934af9bc0145389dc41430c6d8b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#acbbc0934af9bc0145389dc41430c6d8b">SVF::PointerAnalysis::getGepObjVar</a></div><div class="ttdeci">NodeID getGepObjVar(NodeID id, const LocationSet &amp;ls)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00354">PointerAnalysis.h:354</a></div></div>
126
126
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_abdacd060691add054839aa183babe095"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#abdacd060691add054839aa183babe095">SVF::PointerAnalysis::hasIndCSCallees</a></div><div class="ttdeci">bool hasIndCSCallees(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00392">PointerAnalysis.h:392</a></div></div>
127
127
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9">SVF::PointerAnalysis::VFS_WPA</a></div><div class="ttdoc">Versioned sparse flow-sensitive WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00080">PointerAnalysis.h:80</a></div></div>
128
- <div class="ttc" id="classSVF_1_1MemObj_html_aeba6eeed4843a1a90cf1d4b7deb197af"><div class="ttname"><a href="classSVF_1_1MemObj.html#aeba6eeed4843a1a90cf1d4b7deb197af">SVF::MemObj::isArray</a></div><div class="ttdeci">bool isArray() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00760">SymbolTableInfo.cpp:760</a></div></div>
128
+ <div class="ttc" id="classSVF_1_1MemObj_html_aeba6eeed4843a1a90cf1d4b7deb197af"><div class="ttname"><a href="classSVF_1_1MemObj.html#aeba6eeed4843a1a90cf1d4b7deb197af">SVF::MemObj::isArray</a></div><div class="ttdeci">bool isArray() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00749">SymbolTableInfo.cpp:749</a></div></div>
129
129
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a0ab6564c48897595c9d23382a026e0a8"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a0ab6564c48897595c9d23382a026e0a8">SVF::PointerAnalysis::Cxt_DDA</a></div><div class="ttdoc">context sensitive DDA </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00091">PointerAnalysis.h:91</a></div></div>
130
130
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a">SVF::PointerAnalysis::Steensgaard_WPA</a></div><div class="ttdoc">Steensgaard PTA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00074">PointerAnalysis.h:74</a></div></div>
131
131
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5dddd53b4ca9d7cc23d88ed9f3de9fde"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5dddd53b4ca9d7cc23d88ed9f3de9fde">SVF::PointerAnalysis::getAllFieldsObjVars</a></div><div class="ttdeci">virtual const NodeBS &amp; getAllFieldsObjVars(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00358">PointerAnalysis.h:358</a></div></div>
@@ -180,7 +180,7 @@ $(function() {
180
180
  <div class="ttc" id="PersistentPointsToDS_8h_html"><div class="ttname"><a href="PersistentPointsToDS_8h.html">PersistentPointsToDS.h</a></div></div>
181
181
  <div class="ttc" id="classSVF_1_1PTAStat_html"><div class="ttname"><a href="classSVF_1_1PTAStat.html">SVF::PTAStat</a></div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00049">PTAStat.h:49</a></div></div>
182
182
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">SVF::PointerAnalysis::AndersenWaveDiff_WPA</a></div><div class="ttdoc">Diff wave propagation andersen-style WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00072">PointerAnalysis.h:72</a></div></div>
183
- <div class="ttc" id="classSVF_1_1SVFIR_html_ad9895f2d075eb402390e3b01ed68e001"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad9895f2d075eb402390e3b01ed68e001">SVF::SVFIR::isBlkObjOrConstantObj</a></div><div class="ttdeci">bool isBlkObjOrConstantObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00400">SVFIR.h:400</a></div></div>
183
+ <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#l00387">SVFIR.h:387</a></div></div>
184
184
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a83b0a51d88fa7aadff6e9267765d07a5"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a83b0a51d88fa7aadff6e9267765d07a5">SVF::PointerAnalysis::aliasTestPartialAlias</a></div><div class="ttdeci">static const std::string aliasTestPartialAlias</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00121">PointerAnalysis.h:121</a></div></div>
185
185
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a30826fb1ddb602fd4439ca84eb73e8f4"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a30826fb1ddb602fd4439ca84eb73e8f4">SVF::PointerAnalysis::FSCSPS_WPA</a></div><div class="ttdoc">Flow-, context-, path- sensitive WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00082">PointerAnalysis.h:82</a></div></div>
186
186
  <div class="ttc" id="classSVF_1_1SVFIR_html_a7276e82b4648ed0e1b3d1b8b37b24089"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">SVF::SVFIR::getAllFieldsObjVars</a></div><div class="ttdeci">NodeBS &amp; getAllFieldsObjVars(const MemObj *obj)</div><div class="ttdoc">Get all fields of an object. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00480">SVFIR.cpp:480</a></div></div>
@@ -189,18 +189,18 @@ $(function() {
189
189
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_aac1a133d478bd14c74309d9c4eaf0c8e"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#aac1a133d478bd14c74309d9c4eaf0c8e">SVF::PointerAnalysis::alias_validation</a></div><div class="ttdeci">bool alias_validation</div><div class="ttdoc">Flag for validating points-to/alias results. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00141">PointerAnalysis.h:141</a></div></div>
190
190
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a859290ec941a06029f84ef249a5d2fda"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a859290ec941a06029f84ef249a5d2fda">SVF::PointerAnalysis::ADAPTFSCS_WPA</a></div><div class="ttdoc">Adaptive Flow-, context-, sensitive WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00083">PointerAnalysis.h:83</a></div></div>
191
191
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85adf8fe4349f84779601a0b41659ca8e27"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85adf8fe4349f84779601a0b41659ca8e27">SVF::PointerAnalysis::CSSummary_WPA</a></div><div class="ttdoc">Summary based context sensitive WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00076">PointerAnalysis.h:76</a></div></div>
192
- <div class="ttc" id="classSVF_1_1MemObj_html_a898c5bb3956402578266a6fb142e02b1"><div class="ttname"><a href="classSVF_1_1MemObj.html#a898c5bb3956402578266a6fb142e02b1">SVF::MemObj::isHeap</a></div><div class="ttdeci">bool isHeap() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00750">SymbolTableInfo.cpp:750</a></div></div>
192
+ <div class="ttc" id="classSVF_1_1MemObj_html_a898c5bb3956402578266a6fb142e02b1"><div class="ttname"><a href="classSVF_1_1MemObj.html#a898c5bb3956402578266a6fb142e02b1">SVF::MemObj::isHeap</a></div><div class="ttdeci">bool isHeap() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00739">SymbolTableInfo.cpp:739</a></div></div>
193
193
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ae6ea391ac44dffeb6899bb44323c5361"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ae6ea391ac44dffeb6899bb44323c5361">SVF::PointerAnalysis::isHeapMemObj</a></div><div class="ttdeci">bool isHeapMemObj(NodeID id) const</div><div class="ttdoc">Whether this object is heap or array. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00325">PointerAnalysis.h:325</a></div></div>
194
194
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ac0c0855918cb2cdc3d8ebc175acfbd4da88380bb05f60a1349e192364ba6c5292"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da88380bb05f60a1349e192364ba6c5292">SVF::PointerAnalysis::CondImpl</a></div><div class="ttdoc">Represents CondPTAImpl. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00102">PointerAnalysis.h:102</a></div></div>
195
- <div class="ttc" id="classSVF_1_1SVFIR_html_a17c5d9fa7c0bd3cd03c06b5ff0906eb6"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a17c5d9fa7c0bd3cd03c06b5ff0906eb6">SVF::SVFIR::getFunPtr</a></div><div class="ttdeci">NodeID getFunPtr(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00316">SVFIR.h:316</a></div></div>
195
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a17c5d9fa7c0bd3cd03c06b5ff0906eb6"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a17c5d9fa7c0bd3cd03c06b5ff0906eb6">SVF::SVFIR::getFunPtr</a></div><div class="ttdeci">NodeID getFunPtr(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00303">SVFIR.h:303</a></div></div>
196
196
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ad2c8654a6672472f9bf17681aa9b60bb"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ad2c8654a6672472f9bf17681aa9b60bb">SVF::PointerAnalysis::getNumOfResolvedIndCallEdge</a></div><div class="ttdeci">u32_t getNumOfResolvedIndCallEdge() const</div><div class="ttdoc">Return number of resolved indirect call edges. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00173">PointerAnalysis.h:173</a></div></div>
197
197
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6">SVF::PointerAnalysis::Andersen_WPA</a></div><div class="ttdoc">Andersen PTA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00066">PointerAnalysis.h:66</a></div></div>
198
198
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b">SVF::PointerAnalysis::AndersenSFR_WPA</a></div><div class="ttdoc">Stride-based field representation. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00071">PointerAnalysis.h:71</a></div></div>
199
199
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85ad6ccf1ce66083278349c5c3111172d78"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad6ccf1ce66083278349c5c3111172d78">SVF::PointerAnalysis::FSSPARSE_WPA</a></div><div class="ttdoc">Sparse flow sensitive WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00078">PointerAnalysis.h:78</a></div></div>
200
200
  <div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00364">ICFGNode.h:364</a></div></div>
201
- <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00719">SymbolTableInfo.cpp:719</a></div></div>
201
+ <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00708">SymbolTableInfo.cpp:708</a></div></div>
202
202
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_aa7f15c74eb438be78fcc028534477478"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#aa7f15c74eb438be78fcc028534477478">SVF::PointerAnalysis::VFunSet</a></div><div class="ttdeci">Set&lt; const SVFFunction * &gt; VFunSet</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00114">PointerAnalysis.h:114</a></div></div>
203
- <div class="ttc" id="classSVF_1_1SVFIR_html_a2878e202045b7f2c817185e8bf95d354"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354">SVF::SVFIR::getFIObjVar</a></div><div class="ttdeci">NodeID getFIObjVar(const MemObj *obj) const</div><div class="ttdoc">Get a field-insensitive obj SVFIR node according to a mem obj. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00377">SVFIR.h:377</a></div></div>
203
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a2878e202045b7f2c817185e8bf95d354"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354">SVF::SVFIR::getFIObjVar</a></div><div class="ttdeci">NodeID getFIObjVar(const MemObj *obj) const</div><div class="ttdoc">Get a field-insensitive obj SVFIR node according to a mem obj. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00364">SVFIR.h:364</a></div></div>
204
204
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ac4ad73782f42f90ad7ac9c66edb27c69"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac4ad73782f42f90ad7ac9c66edb27c69">SVF::PointerAnalysis::CallGraphSCC</a></div><div class="ttdeci">SCCDetection&lt; PTACallGraph * &gt; CallGraphSCC</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00112">PointerAnalysis.h:112</a></div></div>
205
205
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_aefd4e9ea66da5ad84a45efead823eb22"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#aefd4e9ea66da5ad84a45efead823eb22">SVF::PointerAnalysis::aliasTestFailNoAliasMangled</a></div><div class="ttdeci">static const std::string aliasTestFailNoAliasMangled</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00128">PointerAnalysis.h:128</a></div></div>
206
206
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a71a63c53a093ea8e450fb53fd60c9424"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a71a63c53a093ea8e450fb53fd60c9424">SVF::PTACallGraph::hasIndCSCallees</a></div><div class="ttdeci">bool hasIndCSCallees(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00284">PTACallGraph.h:284</a></div></div>
@@ -228,7 +228,6 @@ $(function() {
228
228
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
229
229
  <div class="ttc" id="classSVF_1_1PTACallGraphNode_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html">SVF::PTACallGraphNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00174">PTACallGraph.h:174</a></div></div>
230
230
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a03dadb5429e2b84f88713a83153979a8"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a03dadb5429e2b84f88713a83153979a8">SVF::PointerAnalysis::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Release the memory. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00095">PointerAnalysis.cpp:95</a></div></div>
231
- <div class="ttc" id="classSVF_1_1SVFIR_html_a07716ca7f769f704a80ccee1a6ad7ee2"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a07716ca7f769f704a80ccee1a6ad7ee2">SVF::SVFIR::isNonPointerObj</a></div><div class="ttdeci">bool isNonPointerObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00414">SVFIR.h:414</a></div></div>
232
231
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49">SVF::PointerAnalysis::Andersen_BASE</a></div><div class="ttdoc">Base Andersen PTA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00065">PointerAnalysis.h:65</a></div></div>
233
232
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0f71e4cd0948b294c7d33a690bde7dbe"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">SVF::PointerAnalysis::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00367">PointerAnalysis.h:367</a></div></div>
234
233
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85aa43c83e2f0df003c158d4b1325b50b18"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85aa43c83e2f0df003c158d4b1325b50b18">SVF::PointerAnalysis::FlowS_DDA</a></div><div class="ttdoc">Flow sensitive DDA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00089">PointerAnalysis.h:89</a></div></div>
@@ -236,7 +235,7 @@ $(function() {
236
235
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a6a5dec067fa2a1babc83f36daa8afcc3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a6a5dec067fa2a1babc83f36daa8afcc3">SVF::PointerAnalysis::connectVCallToVFns</a></div><div class="ttdeci">void connectVCallToVFns(const CallICFGNode *cs, const VFunSet &amp;vfns, CallEdgeMap &amp;newEdges)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00500">PointerAnalysis.cpp:500</a></div></div>
237
236
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00387">GenericGraph.h:387</a></div></div>
238
237
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1">SVF::PointerAnalysis::AndersenSCD_WPA</a></div><div class="ttdoc">Selective cycle detection andersen-style WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00070">PointerAnalysis.h:70</a></div></div>
239
- <div class="ttc" id="classSVF_1_1SVFIR_html_a2d2131128ceb3362b5dc89317cfd88a0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0">SVF::SVFIR::getIndirectCallsites</a></div><div class="ttdeci">const CallSiteToFunPtrMap &amp; getIndirectCallsites() const</div><div class="ttdoc">Add/get indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00312">SVFIR.h:312</a></div></div>
238
+ <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#l00299">SVFIR.h:299</a></div></div>
240
239
  <div class="ttc" id="classSVF_1_1PointsTo_html"><div class="ttname"><a href="classSVF_1_1PointsTo.html">SVF::PointsTo</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00027">PointsTo.h:27</a></div></div>
241
240
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0bb90b398ef85504bcd816ae57bee01d"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0bb90b398ef85504bcd816ae57bee01d">SVF::PointerAnalysis::computeDDAPts</a></div><div class="ttdeci">virtual void computeDDAPts(NodeID)</div><div class="ttdoc">Compute points-to results on-demand, overridden by derived classes. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00240">PointerAnalysis.h:240</a></div></div>
242
241
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a73fb8e595473e0c7df1dd0de4968ad13"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a73fb8e595473e0c7df1dd0de4968ad13">SVF::PointerAnalysis::resetObjFieldSensitive</a></div><div class="ttdeci">void resetObjFieldSensitive()</div><div class="ttdoc">Reset all object node as field-sensitive. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00174">PointerAnalysis.cpp:174</a></div></div>
@@ -245,6 +244,7 @@ $(function() {
245
244
  <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#l00132">SVFIR.h:132</a></div></div>
246
245
  <div class="ttc" id="classSVF_1_1CommonCHGraph_html"><div class="ttname"><a href="classSVF_1_1CommonCHGraph.html">SVF::CommonCHGraph</a></div><div class="ttdoc">Common base for class hierarchy graph. Only implements what PointerAnalysis needs. </div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00050">CHG.h:50</a></div></div>
247
246
  <div class="ttc" id="classSVF_1_1SVFIR_html_a20c0c65af266ac876cb722aee6e87101"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">SVF::SVFIR::getGepObjVar</a></div><div class="ttdeci">NodeID getGepObjVar(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#l00427">SVFIR.cpp:427</a></div></div>
247
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a980e54129ece0757d7f0373f37428507"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a980e54129ece0757d7f0373f37428507">SVF::SVFIR::isNonPointerObj</a></div><div class="ttdeci">bool isNonPointerObj(NodeID id) const</div><div class="ttdoc">Whether an object can point to any other object or any of its fields is a pointer type...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00694">SVFIR.cpp:694</a></div></div>
248
248
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">SVF::PointerAnalysis::TypeCPP_WPA</a></div><div class="ttdoc">Type-based analysis for C++. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00085">PointerAnalysis.h:85</a></div></div>
249
249
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_aed4e5066f6ddef83afaf60adbcc11de0"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#aed4e5066f6ddef83afaf60adbcc11de0">SVF::PointerAnalysis::PTAName</a></div><div class="ttdeci">virtual const std::string PTAName() const</div><div class="ttdoc">Return PTA name. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00438">PointerAnalysis.h:438</a></div></div>
250
250
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a431ec4f85eb0f029e5740b92fd9ceb32"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a431ec4f85eb0f029e5740b92fd9ceb32">SVF::PointerAnalysis::initialize</a></div><div class="ttdeci">virtual void initialize()</div><div class="ttdoc">Initialization of a pointer analysis, including building symbol table and SVFIR etc. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00113">PointerAnalysis.cpp:113</a></div></div>
@@ -260,7 +260,7 @@ $(function() {
260
260
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ac0f821cfe4fb9c9c8816e7a1b1bc0c5e"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac0f821cfe4fb9c9c8816e7a1b1bc0c5e">SVF::PointerAnalysis::getImplTy</a></div><div class="ttdeci">PTAImplTy getImplTy() const</div><div class="ttdoc">Return implementation type of the pointer analysis. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00198">PointerAnalysis.h:198</a></div></div>
261
261
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a62281bc39fea50a88e55edf605620322"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a62281bc39fea50a88e55edf605620322">SVF::PointerAnalysis::FSDATAFLOW_WPA</a></div><div class="ttdoc">Traditional Dataflow-based flow sensitive WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00077">PointerAnalysis.h:77</a></div></div>
262
262
  <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>
263
- <div class="ttc" id="classSVF_1_1SVFIR_html_a2dd4d5f704906270af13e7a07f900eb1"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">SVF::SVFIR::getObject</a></div><div class="ttdeci">const MemObj * getObject(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00357">SVFIR.h:357</a></div></div>
263
+ <div class="ttc" id="classSVF_1_1SVFIR_html_a2dd4d5f704906270af13e7a07f900eb1"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">SVF::SVFIR::getObject</a></div><div class="ttdeci">const MemObj * getObject(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00344">SVFIR.h:344</a></div></div>
264
264
  </div><!-- fragment --></div><!-- contents -->
265
265
  <!-- start footer part -->
266
266
  <hr class="footer"/><address class="footer"><small>