svf-tools 1.0.773 → 1.0.775

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 (396) hide show
  1. package/SVF-doxygen/html/html/AddressValue_8h_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +3 -3
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +8 -9
  4. package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
  5. package/SVF-doxygen/html/html/CFBasicBlockG_8cpp_source.html +2 -2
  6. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +1 -1
  8. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +3 -3
  9. package/SVF-doxygen/html/html/ConsExeState_8h_source.html +1 -1
  10. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  11. package/SVF-doxygen/html/html/ConsG_8h_source.html +8 -8
  12. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +7 -7
  13. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +4 -4
  14. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +2 -2
  15. package/SVF-doxygen/html/html/DDAClient_8h_source.html +2 -2
  16. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +3 -3
  17. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +4 -4
  18. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +9 -9
  19. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  20. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  21. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +4 -4
  22. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +4 -4
  23. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +2 -2
  24. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +5 -5
  26. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  27. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +3 -3
  28. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +3 -3
  29. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +3 -3
  30. package/SVF-doxygen/html/html/MTA_8cpp_source.html +4 -4
  31. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +15 -15
  32. package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
  33. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
  34. package/SVF-doxygen/html/html/MemSSA_8h_source.html +1 -1
  35. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +670 -671
  36. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +114 -107
  37. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +1 -1
  38. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +395 -350
  39. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +443 -433
  40. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +6 -6
  41. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +12 -12
  42. package/SVF-doxygen/html/html/SVFFileSystem_8cpp_source.html +6 -6
  43. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
  44. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +10 -10
  45. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  46. package/SVF-doxygen/html/html/SVFIR2ConsExeState_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +1 -1
  48. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +2 -2
  49. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +288 -286
  50. package/SVF-doxygen/html/html/SVFIR_8h_source.html +667 -665
  51. package/SVF-doxygen/html/html/SVFLoop_8h_source.html +3 -3
  52. package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +7 -7
  53. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  54. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +1 -1
  55. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +2 -2
  56. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +6 -6
  57. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +1 -1
  58. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  59. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  60. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
  61. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +2 -2
  62. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  63. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  64. package/SVF-doxygen/html/html/VFG_8cpp_source.html +15 -15
  65. package/SVF-doxygen/html/html/VFG_8h_source.html +5 -5
  66. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
  67. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +284 -124
  68. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +108 -95
  69. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
  70. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +1 -1
  71. package/SVF-doxygen/html/html/classSVF_1_1AddressValue.html +1 -1
  72. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +1 -1
  73. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +59 -54
  74. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +30 -20
  75. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +52 -47
  76. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +18 -9
  77. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +64 -59
  78. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +11 -1
  79. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +65 -60
  80. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +11 -1
  81. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +3 -3
  82. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +60 -55
  83. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +10 -0
  84. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +31 -26
  85. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +573 -379
  86. package/SVF-doxygen/html/html/classSVF_1_1CFBasicBlockNode.html +2 -2
  87. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +37 -32
  88. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +24 -14
  89. package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +39 -34
  90. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +10 -0
  91. package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +40 -35
  92. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +10 -0
  93. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +305 -305
  94. package/SVF-doxygen/html/html/classSVF_1_1ConsExeState.html +1 -1
  95. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +7 -7
  96. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +8 -8
  97. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +2 -2
  98. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +1 -1
  99. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +4 -4
  100. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +8 -8
  101. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +66 -61
  102. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +10 -0
  103. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +54 -49
  104. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +11 -1
  105. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +65 -60
  106. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +28 -14
  107. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +5 -5
  108. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  109. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
  110. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +5 -5
  111. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +3 -3
  112. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +14 -14
  113. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +2 -2
  114. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +3 -3
  115. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
  116. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +1 -1
  117. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator-members.html +14 -13
  118. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +131 -99
  119. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +554 -554
  120. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +4 -4
  121. package/SVF-doxygen/html/html/classSVF_1_1POCRAlias-members.html +41 -36
  122. package/SVF-doxygen/html/html/classSVF_1_1POCRAlias.html +10 -0
  123. package/SVF-doxygen/html/html/classSVF_1_1POCRHybrid-members.html +41 -36
  124. package/SVF-doxygen/html/html/classSVF_1_1POCRHybrid.html +10 -0
  125. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +1 -1
  126. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +15 -15
  127. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +10 -10
  128. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +3 -3
  129. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +175 -174
  130. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +754 -720
  131. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ConsExeState.html +1 -1
  132. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +1 -1
  133. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +29 -29
  134. package/SVF-doxygen/html/html/classSVF_1_1SVFIRReader.html +3 -3
  135. package/SVF-doxygen/html/html/classSVF_1_1SVFIRWriter.html +2 -2
  136. package/SVF-doxygen/html/html/classSVF_1_1SVFLoop.html +3 -3
  137. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +7 -7
  138. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +1 -1
  139. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +2 -2
  140. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +6 -6
  141. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
  142. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +55 -50
  143. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +24 -14
  144. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +2 -2
  145. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
  146. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +55 -50
  148. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +12 -2
  149. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +18 -18
  150. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +21 -14
  151. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +339 -49
  152. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +10 -10
  153. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +86 -86
  154. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +1 -1
  155. package/SVF-doxygen/html/html/functions_a.html +1 -1
  156. package/SVF-doxygen/html/html/functions_b.html +1 -0
  157. package/SVF-doxygen/html/html/functions_f.html +6 -6
  158. package/SVF-doxygen/html/html/functions_func.html +1 -1
  159. package/SVF-doxygen/html/html/functions_func_i.html +14 -11
  160. package/SVF-doxygen/html/html/functions_func_p.html +1 -1
  161. package/SVF-doxygen/html/html/functions_func_r.html +16 -3
  162. package/SVF-doxygen/html/html/functions_func_s.html +21 -20
  163. package/SVF-doxygen/html/html/functions_func_w.html +11 -2
  164. package/SVF-doxygen/html/html/functions_i.html +22 -19
  165. package/SVF-doxygen/html/html/functions_l.html +3 -3
  166. package/SVF-doxygen/html/html/functions_o.html +12 -12
  167. package/SVF-doxygen/html/html/functions_p.html +13 -13
  168. package/SVF-doxygen/html/html/functions_r.html +20 -11
  169. package/SVF-doxygen/html/html/functions_rela_b.html +3 -0
  170. package/SVF-doxygen/html/html/functions_s.html +23 -24
  171. package/SVF-doxygen/html/html/functions_t.html +5 -5
  172. package/SVF-doxygen/html/html/functions_v.html +6 -6
  173. package/SVF-doxygen/html/html/functions_w.html +17 -8
  174. package/SVF-doxygen/html/html/namespaceSVF.html +1 -1
  175. package/SVF-doxygen/html/html/search/all_1.js +1 -1
  176. package/SVF-doxygen/html/html/search/all_10.js +324 -324
  177. package/SVF-doxygen/html/html/search/all_11.js +217 -213
  178. package/SVF-doxygen/html/html/search/all_12.js +541 -541
  179. package/SVF-doxygen/html/html/search/all_13.js +190 -190
  180. package/SVF-doxygen/html/html/search/all_14.js +66 -66
  181. package/SVF-doxygen/html/html/search/all_15.js +170 -170
  182. package/SVF-doxygen/html/html/search/all_16.js +63 -60
  183. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  184. package/SVF-doxygen/html/html/search/all_18.js +1 -1
  185. package/SVF-doxygen/html/html/search/all_19.js +11 -11
  186. package/SVF-doxygen/html/html/search/all_1a.js +169 -169
  187. package/SVF-doxygen/html/html/search/all_2.js +1 -1
  188. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  189. package/SVF-doxygen/html/html/search/all_9.js +535 -534
  190. package/SVF-doxygen/html/html/search/all_a.js +46 -46
  191. package/SVF-doxygen/html/html/search/all_b.js +26 -26
  192. package/SVF-doxygen/html/html/search/all_c.js +116 -116
  193. package/SVF-doxygen/html/html/search/all_d.js +196 -196
  194. package/SVF-doxygen/html/html/search/all_e.js +206 -206
  195. package/SVF-doxygen/html/html/search/all_f.js +116 -116
  196. package/SVF-doxygen/html/html/search/classes_0.js +26 -26
  197. package/SVF-doxygen/html/html/search/classes_1.js +9 -9
  198. package/SVF-doxygen/html/html/search/classes_10.js +73 -73
  199. package/SVF-doxygen/html/html/search/classes_11.js +15 -15
  200. package/SVF-doxygen/html/html/search/classes_12.js +2 -2
  201. package/SVF-doxygen/html/html/search/classes_13.js +10 -10
  202. package/SVF-doxygen/html/html/search/classes_14.js +14 -14
  203. package/SVF-doxygen/html/html/search/classes_15.js +1 -1
  204. package/SVF-doxygen/html/html/search/classes_2.js +76 -76
  205. package/SVF-doxygen/html/html/search/classes_3.js +35 -35
  206. package/SVF-doxygen/html/html/search/classes_4.js +8 -8
  207. package/SVF-doxygen/html/html/search/classes_5.js +28 -28
  208. package/SVF-doxygen/html/html/search/classes_6.js +98 -98
  209. package/SVF-doxygen/html/html/search/classes_7.js +33 -33
  210. package/SVF-doxygen/html/html/search/classes_8.js +56 -56
  211. package/SVF-doxygen/html/html/search/classes_9.js +1 -1
  212. package/SVF-doxygen/html/html/search/classes_a.js +12 -12
  213. package/SVF-doxygen/html/html/search/classes_b.js +29 -29
  214. package/SVF-doxygen/html/html/search/classes_c.js +6 -6
  215. package/SVF-doxygen/html/html/search/classes_d.js +18 -18
  216. package/SVF-doxygen/html/html/search/classes_e.js +36 -36
  217. package/SVF-doxygen/html/html/search/classes_f.js +25 -25
  218. package/SVF-doxygen/html/html/search/defines_0.js +3 -3
  219. package/SVF-doxygen/html/html/search/defines_1.js +2 -2
  220. package/SVF-doxygen/html/html/search/defines_2.js +30 -30
  221. package/SVF-doxygen/html/html/search/defines_3.js +20 -20
  222. package/SVF-doxygen/html/html/search/defines_4.js +3 -3
  223. package/SVF-doxygen/html/html/search/defines_5.js +4 -4
  224. package/SVF-doxygen/html/html/search/defines_6.js +2 -2
  225. package/SVF-doxygen/html/html/search/defines_7.js +5 -5
  226. package/SVF-doxygen/html/html/search/defines_8.js +11 -11
  227. package/SVF-doxygen/html/html/search/defines_9.js +9 -9
  228. package/SVF-doxygen/html/html/search/defines_a.js +2 -2
  229. package/SVF-doxygen/html/html/search/defines_b.js +1 -1
  230. package/SVF-doxygen/html/html/search/defines_c.js +3 -3
  231. package/SVF-doxygen/html/html/search/defines_d.js +2 -2
  232. package/SVF-doxygen/html/html/search/defines_e.js +7 -7
  233. package/SVF-doxygen/html/html/search/defines_f.js +3 -3
  234. package/SVF-doxygen/html/html/search/enums_0.js +3 -3
  235. package/SVF-doxygen/html/html/search/enums_1.js +2 -2
  236. package/SVF-doxygen/html/html/search/enums_10.js +1 -1
  237. package/SVF-doxygen/html/html/search/enums_11.js +1 -1
  238. package/SVF-doxygen/html/html/search/enums_2.js +8 -8
  239. package/SVF-doxygen/html/html/search/enums_3.js +1 -1
  240. package/SVF-doxygen/html/html/search/enums_4.js +3 -3
  241. package/SVF-doxygen/html/html/search/enums_5.js +1 -1
  242. package/SVF-doxygen/html/html/search/enums_6.js +2 -2
  243. package/SVF-doxygen/html/html/search/enums_7.js +2 -2
  244. package/SVF-doxygen/html/html/search/enums_8.js +4 -4
  245. package/SVF-doxygen/html/html/search/enums_9.js +1 -1
  246. package/SVF-doxygen/html/html/search/enums_a.js +1 -1
  247. package/SVF-doxygen/html/html/search/enums_b.js +7 -7
  248. package/SVF-doxygen/html/html/search/enums_c.js +1 -1
  249. package/SVF-doxygen/html/html/search/enums_d.js +4 -4
  250. package/SVF-doxygen/html/html/search/enums_e.js +2 -2
  251. package/SVF-doxygen/html/html/search/enums_f.js +4 -4
  252. package/SVF-doxygen/html/html/search/enumvalues_0.js +14 -14
  253. package/SVF-doxygen/html/html/search/enumvalues_1.js +14 -14
  254. package/SVF-doxygen/html/html/search/enumvalues_10.js +35 -35
  255. package/SVF-doxygen/html/html/search/enumvalues_11.js +3 -3
  256. package/SVF-doxygen/html/html/search/enumvalues_12.js +10 -10
  257. package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
  258. package/SVF-doxygen/html/html/search/enumvalues_14.js +1 -1
  259. package/SVF-doxygen/html/html/search/enumvalues_15.js +3 -3
  260. package/SVF-doxygen/html/html/search/enumvalues_2.js +36 -36
  261. package/SVF-doxygen/html/html/search/enumvalues_3.js +13 -13
  262. package/SVF-doxygen/html/html/search/enumvalues_4.js +2 -2
  263. package/SVF-doxygen/html/html/search/enumvalues_5.js +47 -47
  264. package/SVF-doxygen/html/html/search/enumvalues_6.js +6 -6
  265. package/SVF-doxygen/html/html/search/enumvalues_7.js +9 -9
  266. package/SVF-doxygen/html/html/search/enumvalues_8.js +23 -23
  267. package/SVF-doxygen/html/html/search/enumvalues_9.js +6 -6
  268. package/SVF-doxygen/html/html/search/enumvalues_a.js +15 -15
  269. package/SVF-doxygen/html/html/search/enumvalues_b.js +11 -11
  270. package/SVF-doxygen/html/html/search/enumvalues_c.js +5 -5
  271. package/SVF-doxygen/html/html/search/enumvalues_d.js +18 -18
  272. package/SVF-doxygen/html/html/search/enumvalues_e.js +9 -9
  273. package/SVF-doxygen/html/html/search/enumvalues_f.js +45 -45
  274. package/SVF-doxygen/html/html/search/files_0.js +13 -13
  275. package/SVF-doxygen/html/html/search/files_1.js +7 -7
  276. package/SVF-doxygen/html/html/search/files_10.js +8 -8
  277. package/SVF-doxygen/html/html/search/files_11.js +8 -8
  278. package/SVF-doxygen/html/html/search/files_12.js +2 -2
  279. package/SVF-doxygen/html/html/search/files_2.js +49 -49
  280. package/SVF-doxygen/html/html/search/files_3.js +14 -14
  281. package/SVF-doxygen/html/html/search/files_4.js +5 -5
  282. package/SVF-doxygen/html/html/search/files_5.js +13 -13
  283. package/SVF-doxygen/html/html/search/files_6.js +9 -9
  284. package/SVF-doxygen/html/html/search/files_7.js +14 -14
  285. package/SVF-doxygen/html/html/search/files_8.js +13 -13
  286. package/SVF-doxygen/html/html/search/files_9.js +18 -18
  287. package/SVF-doxygen/html/html/search/files_a.js +3 -3
  288. package/SVF-doxygen/html/html/search/files_b.js +2 -2
  289. package/SVF-doxygen/html/html/search/files_c.js +20 -20
  290. package/SVF-doxygen/html/html/search/files_d.js +4 -4
  291. package/SVF-doxygen/html/html/search/files_e.js +62 -62
  292. package/SVF-doxygen/html/html/search/files_f.js +8 -8
  293. package/SVF-doxygen/html/html/search/functions_0.js +12 -12
  294. package/SVF-doxygen/html/html/search/functions_1.js +350 -350
  295. package/SVF-doxygen/html/html/search/functions_10.js +140 -140
  296. package/SVF-doxygen/html/html/search/functions_11.js +131 -127
  297. package/SVF-doxygen/html/html/search/functions_12.js +275 -275
  298. package/SVF-doxygen/html/html/search/functions_13.js +58 -58
  299. package/SVF-doxygen/html/html/search/functions_14.js +38 -38
  300. package/SVF-doxygen/html/html/search/functions_15.js +71 -71
  301. package/SVF-doxygen/html/html/search/functions_16.js +32 -29
  302. package/SVF-doxygen/html/html/search/functions_17.js +3 -3
  303. package/SVF-doxygen/html/html/search/functions_18.js +169 -169
  304. package/SVF-doxygen/html/html/search/functions_2.js +84 -84
  305. package/SVF-doxygen/html/html/search/functions_3.js +253 -253
  306. package/SVF-doxygen/html/html/search/functions_4.js +74 -74
  307. package/SVF-doxygen/html/html/search/functions_5.js +51 -51
  308. package/SVF-doxygen/html/html/search/functions_6.js +58 -58
  309. package/SVF-doxygen/html/html/search/functions_7.js +842 -842
  310. package/SVF-doxygen/html/html/search/functions_8.js +143 -143
  311. package/SVF-doxygen/html/html/search/functions_9.js +423 -422
  312. package/SVF-doxygen/html/html/search/functions_a.js +30 -30
  313. package/SVF-doxygen/html/html/search/functions_b.js +2 -2
  314. package/SVF-doxygen/html/html/search/functions_c.js +26 -26
  315. package/SVF-doxygen/html/html/search/functions_d.js +77 -77
  316. package/SVF-doxygen/html/html/search/functions_e.js +35 -35
  317. package/SVF-doxygen/html/html/search/functions_f.js +56 -56
  318. package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
  319. package/SVF-doxygen/html/html/search/namespaces_1.js +7 -7
  320. package/SVF-doxygen/html/html/search/related_0.js +2 -2
  321. package/SVF-doxygen/html/html/search/related_1.js +2 -1
  322. package/SVF-doxygen/html/html/search/related_2.js +2 -2
  323. package/SVF-doxygen/html/html/search/related_3.js +2 -2
  324. package/SVF-doxygen/html/html/search/related_4.js +2 -2
  325. package/SVF-doxygen/html/html/search/related_5.js +1 -1
  326. package/SVF-doxygen/html/html/search/related_6.js +2 -2
  327. package/SVF-doxygen/html/html/search/related_7.js +4 -4
  328. package/SVF-doxygen/html/html/search/related_8.js +2 -2
  329. package/SVF-doxygen/html/html/search/related_9.js +4 -4
  330. package/SVF-doxygen/html/html/search/related_a.js +19 -19
  331. package/SVF-doxygen/html/html/search/related_b.js +4 -4
  332. package/SVF-doxygen/html/html/search/related_c.js +1 -1
  333. package/SVF-doxygen/html/html/search/related_d.js +11 -11
  334. package/SVF-doxygen/html/html/search/related_e.js +2 -2
  335. package/SVF-doxygen/html/html/search/related_f.js +2 -2
  336. package/SVF-doxygen/html/html/search/typedefs_0.js +18 -18
  337. package/SVF-doxygen/html/html/search/typedefs_1.js +25 -25
  338. package/SVF-doxygen/html/html/search/typedefs_10.js +62 -62
  339. package/SVF-doxygen/html/html/search/typedefs_11.js +13 -13
  340. package/SVF-doxygen/html/html/search/typedefs_12.js +11 -11
  341. package/SVF-doxygen/html/html/search/typedefs_13.js +35 -35
  342. package/SVF-doxygen/html/html/search/typedefs_14.js +8 -8
  343. package/SVF-doxygen/html/html/search/typedefs_2.js +126 -126
  344. package/SVF-doxygen/html/html/search/typedefs_3.js +39 -39
  345. package/SVF-doxygen/html/html/search/typedefs_4.js +16 -16
  346. package/SVF-doxygen/html/html/search/typedefs_5.js +41 -41
  347. package/SVF-doxygen/html/html/search/typedefs_6.js +52 -52
  348. package/SVF-doxygen/html/html/search/typedefs_7.js +40 -40
  349. package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
  350. package/SVF-doxygen/html/html/search/typedefs_9.js +6 -6
  351. package/SVF-doxygen/html/html/search/typedefs_a.js +29 -29
  352. package/SVF-doxygen/html/html/search/typedefs_b.js +29 -29
  353. package/SVF-doxygen/html/html/search/typedefs_c.js +40 -40
  354. package/SVF-doxygen/html/html/search/typedefs_d.js +15 -15
  355. package/SVF-doxygen/html/html/search/typedefs_e.js +52 -52
  356. package/SVF-doxygen/html/html/search/typedefs_f.js +14 -14
  357. package/SVF-doxygen/html/html/search/variables_0.js +147 -147
  358. package/SVF-doxygen/html/html/search/variables_1.js +75 -75
  359. package/SVF-doxygen/html/html/search/variables_10.js +97 -97
  360. package/SVF-doxygen/html/html/search/variables_11.js +46 -46
  361. package/SVF-doxygen/html/html/search/variables_12.js +92 -92
  362. package/SVF-doxygen/html/html/search/variables_13.js +75 -75
  363. package/SVF-doxygen/html/html/search/variables_14.js +14 -14
  364. package/SVF-doxygen/html/html/search/variables_15.js +48 -48
  365. package/SVF-doxygen/html/html/search/variables_16.js +9 -9
  366. package/SVF-doxygen/html/html/search/variables_17.js +1 -1
  367. package/SVF-doxygen/html/html/search/variables_18.js +2 -2
  368. package/SVF-doxygen/html/html/search/variables_2.js +34 -34
  369. package/SVF-doxygen/html/html/search/variables_3.js +141 -141
  370. package/SVF-doxygen/html/html/search/variables_4.js +55 -55
  371. package/SVF-doxygen/html/html/search/variables_5.js +38 -38
  372. package/SVF-doxygen/html/html/search/variables_6.js +66 -66
  373. package/SVF-doxygen/html/html/search/variables_7.js +33 -33
  374. package/SVF-doxygen/html/html/search/variables_8.js +7 -7
  375. package/SVF-doxygen/html/html/search/variables_9.js +77 -77
  376. package/SVF-doxygen/html/html/search/variables_a.js +4 -4
  377. package/SVF-doxygen/html/html/search/variables_b.js +10 -10
  378. package/SVF-doxygen/html/html/search/variables_c.js +45 -45
  379. package/SVF-doxygen/html/html/search/variables_d.js +56 -56
  380. package/SVF-doxygen/html/html/search/variables_e.js +123 -123
  381. package/SVF-doxygen/html/html/search/variables_f.js +30 -30
  382. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  383. package/SVF-doxygen/html/html/structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html +4 -4
  384. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  385. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  386. package/package.json +1 -1
  387. package/svf/include/MemoryModel/PointerAnalysisImpl.h +5 -0
  388. package/svf/include/MemoryModel/SVFLoop.h +3 -3
  389. package/svf/include/SVFIR/SVFIR.h +2 -1
  390. package/svf/include/Util/NodeIDAllocator.h +6 -0
  391. package/svf/include/WPA/VersionedFlowSensitive.h +8 -0
  392. package/svf/lib/MemoryModel/PointerAnalysisImpl.cpp +101 -66
  393. package/svf/lib/SVFIR/SVFIR.cpp +5 -3
  394. package/svf/lib/Util/NodeIDAllocator.cpp +2 -4
  395. package/svf/lib/WPA/Andersen.cpp +1 -1
  396. package/svf/lib/WPA/VersionedFlowSensitive.cpp +148 -0
@@ -260,352 +260,390 @@ $(function() {
260
260
  <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; </div>
261
261
  <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;}</div>
262
262
  <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; </div>
263
- <div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#a25c68f9d2b88437778e854ff0d741d1b"> 203</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a25c68f9d2b88437778e854ff0d741d1b">BVDataPTAImpl::writeToFile</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; filename)</div>
264
- <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;{</div>
263
+ <div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#a6ca3ab1e32012ef13613f52f27f3c502"> 198</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a6ca3ab1e32012ef13613f52f27f3c502">BVDataPTAImpl::writePtsResultToFile</a>(std::fstream&amp; f)</div>
264
+ <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;{</div>
265
+ <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="comment">// Write analysis results to file</span></div>
266
+ <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), ie = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it != ie; ++it)</div>
267
+ <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; {</div>
268
+ <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var = it-&gt;first;</div>
269
+ <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;pts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac9897a09cad8a99169f2da2116807b1b">getPts</a>(var);</div>
265
270
  <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; </div>
266
- <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Storing pointer analysis results to &#39;&quot;</span> &lt;&lt; filename &lt;&lt; <span class="stringliteral">&quot;&#39;...&quot;</span>;</div>
267
- <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; </div>
268
- <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; error_code err;</div>
269
- <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; std::fstream f(filename.c_str(), std::ios_base::app);</div>
270
- <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span> (!f.good())</div>
271
- <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div>
272
- <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; error opening file for writing!\n&quot;</span>;</div>
273
- <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span>;</div>
274
- <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div>
275
- <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; </div>
276
- <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="comment">// Write analysis results to file</span></div>
277
- <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), ie = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it != ie; ++it)</div>
278
- <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; {</div>
279
- <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var = it-&gt;first;</div>
280
- <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;pts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac9897a09cad8a99169f2da2116807b1b">getPts</a>(var);</div>
271
+ <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; stringstream ss;</div>
272
+ <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; f &lt;&lt; var &lt;&lt; <span class="stringliteral">&quot; -&gt; { &quot;</span>;</div>
273
+ <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">if</span> (pts.<a class="code" href="classSVF_1_1PointsTo.html#a13746982a11d0cab57e5919d53bfbec8">empty</a>())</div>
274
+ <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div>
275
+ <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; f &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
276
+ <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div>
277
+ <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">else</span></div>
278
+ <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div>
279
+ <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>: pts)</div>
280
+ <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; {</div>
281
+ <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; f &lt;&lt; <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a> &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
282
+ <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div>
283
+ <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div>
284
+ <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div>
285
+ <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div>
281
286
  <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; </div>
282
- <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; stringstream ss;</div>
283
- <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; f &lt;&lt; var &lt;&lt; <span class="stringliteral">&quot; -&gt; { &quot;</span>;</div>
284
- <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">if</span> (pts.<a class="code" href="classSVF_1_1PointsTo.html#a13746982a11d0cab57e5919d53bfbec8">empty</a>())</div>
285
- <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; {</div>
286
- <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; f &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
287
- <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div>
288
- <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">else</span></div>
289
- <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; {</div>
290
- <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>: pts)</div>
291
- <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; {</div>
292
- <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; f &lt;&lt; <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a> &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
293
- <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div>
294
- <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div>
295
- <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div>
296
- <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div>
297
- <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; </div>
298
- <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;------\n&quot;</span>;</div>
299
- <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; </div>
300
- <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="comment">// Write GepPAGNodes to file</span></div>
301
- <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), ie = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it != ie; ++it)</div>
302
- <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; {</div>
303
- <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode = it-&gt;second;</div>
304
- <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *gepObjPN = SVFUtil::dyn_cast&lt;GepObjVar&gt;(pagNode))</div>
305
- <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; {</div>
306
- <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; f &lt;&lt; it-&gt;first &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
307
- <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; f &lt;&lt; <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">getBaseObjVar</a>(it-&gt;first) &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
308
- <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; f &lt;&lt; gepObjPN-&gt;getConstantFieldIdx() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
309
- <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div>
310
- <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div>
311
- <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; </div>
312
- <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;------\n&quot;</span>;</div>
313
- <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; </div>
314
- <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="comment">// Write BaseNodes insensitivity to file</span></div>
315
- <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> NodeIDs;</div>
316
- <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), ie = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it != ie; ++it)</div>
317
- <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div>
318
- <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode = it-&gt;second;</div>
319
- <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">if</span> (!isa&lt;ObjVar&gt;(pagNode)) <span class="keywordflow">continue</span>;</div>
320
- <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a> = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">getBaseObjVar</a>(it-&gt;first);</div>
321
- <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">if</span> (NodeIDs.<a class="code" href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">test</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>)) <span class="keywordflow">continue</span>;</div>
322
- <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; f &lt;&lt; <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a> &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
323
- <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; f &lt;&lt; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">isFieldInsensitive</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
324
- <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; NodeIDs.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>);</div>
325
- <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; }</div>
287
+ <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;}</div>
288
+ <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; </div>
289
+ <div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#a5e782fb9a94a62403046c483ca4176c3"> 224</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a5e782fb9a94a62403046c483ca4176c3">BVDataPTAImpl::writeGepObjVarMapToFile</a>(std::fstream&amp; f)</div>
290
+ <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;{</div>
291
+ <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="comment">//write gepObjVarMap to file(in form of: baseID offset gepObjNodeId)</span></div>
292
+ <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#ae683914bce36e2d387bc0bc97dfcb14d">SVFIR::NodeOffsetMap</a> &amp;gepObjVarMap = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ac1674bd25a17cae24141e6bff24a411e">getGepObjNodeMap</a>();</div>
293
+ <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">for</span>(SVFIR::NodeOffsetMap::const_iterator it = gepObjVarMap.begin(), eit = gepObjVarMap.end(); it != eit; it++)</div>
294
+ <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; {</div>
295
+ <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFIR.html#a43ffcccfd81f5400c2d4c8e4bd71bdde">SVFIR::NodeOffset</a> offsetPair = it -&gt; first;</div>
296
+ <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="comment">//write the base id to file</span></div>
297
+ <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; f &lt;&lt; offsetPair.first &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
298
+ <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="comment">//write the offset to file</span></div>
299
+ <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; f &lt;&lt; offsetPair.second &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
300
+ <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="comment">//write the gepObjNodeId to file</span></div>
301
+ <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; f &lt;&lt; it-&gt;second &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
302
+ <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div>
303
+ <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; </div>
304
+ <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;}</div>
305
+ <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; </div>
306
+ <div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#a25c68f9d2b88437778e854ff0d741d1b"> 246</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a25c68f9d2b88437778e854ff0d741d1b">BVDataPTAImpl::writeToFile</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; filename)</div>
307
+ <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;{</div>
308
+ <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; </div>
309
+ <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Storing pointer analysis results to &#39;&quot;</span> &lt;&lt; filename &lt;&lt; <span class="stringliteral">&quot;&#39;...&quot;</span>;</div>
310
+ <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; </div>
311
+ <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; error_code err;</div>
312
+ <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; std::fstream f(filename.c_str(), std::ios_base::app);</div>
313
+ <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span> (!f.good())</div>
314
+ <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; {</div>
315
+ <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; error opening file for writing!\n&quot;</span>;</div>
316
+ <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">return</span>;</div>
317
+ <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div>
318
+ <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; </div>
319
+ <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a6ca3ab1e32012ef13613f52f27f3c502">writePtsResultToFile</a>(f);</div>
320
+ <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; </div>
321
+ <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;------\n&quot;</span>;</div>
322
+ <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; </div>
323
+ <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a5e782fb9a94a62403046c483ca4176c3">writeGepObjVarMapToFile</a>(f);</div>
324
+ <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; </div>
325
+ <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; f &lt;&lt; <span class="stringliteral">&quot;------\n&quot;</span>;</div>
326
326
  <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; </div>
327
- <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="comment">// Job finish and close file</span></div>
328
- <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; f.close();</div>
329
- <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">if</span> (f.good())</div>
327
+ <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="comment">// Write BaseNodes insensitivity to file</span></div>
328
+ <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> NodeIDs;</div>
329
+ <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), ie = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it != ie; ++it)</div>
330
330
  <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; {</div>
331
- <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
332
- <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">return</span>;</div>
333
- <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div>
334
- <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;}</div>
335
- <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; </div>
336
- <div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#a290501006cb700db0e07dc577429c928"> 281</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a290501006cb700db0e07dc577429c928">BVDataPTAImpl::readFromFile</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; filename)</div>
337
- <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;{</div>
338
- <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; </div>
339
- <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Loading pointer analysis results from &#39;&quot;</span> &lt;&lt; filename &lt;&lt; <span class="stringliteral">&quot;&#39;...&quot;</span>;</div>
340
- <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; </div>
341
- <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; ifstream <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>(filename.c_str());</div>
342
- <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>.is_open())</div>
343
- <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; {</div>
344
- <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; error opening file for reading!\n&quot;</span>;</div>
345
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
346
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }</div>
347
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; </div>
348
- <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="comment">// Read ObjVar</span></div>
349
- <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordtype">string</span> line;</div>
350
- <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>.good())</div>
351
- <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; {</div>
352
- <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; getline(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>, line);</div>
353
- <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">if</span> (line == <span class="stringliteral">&quot;------&quot;</span>) <span class="keywordflow">break</span>;</div>
354
- <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="comment">// Parse a single line in the form of &quot;baseNodeID insensitive&quot;</span></div>
355
- <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; istringstream ss(line);</div>
356
- <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base;</div>
357
- <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordtype">bool</span> insensitive;</div>
358
- <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; ss &gt;&gt; base &gt;&gt; insensitive;</div>
359
- <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; </div>
360
- <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">if</span> (insensitive)</div>
361
- <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ac5683fe2e24b393ccc5cb6d8bc92cf2b">setObjFieldInsensitive</a>(base);</div>
362
- <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div>
363
- <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; </div>
364
- <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="comment">// Read analysis results from file</span></div>
365
- <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="classSVF_1_1PTData.html">PTDataTy</a> *<a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a>();</div>
366
- <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; </div>
367
- <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="comment">// Read points-to sets</span></div>
368
- <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordtype">string</span> delimiter1 = <span class="stringliteral">&quot; -&gt; { &quot;</span>;</div>
369
- <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordtype">string</span> delimiter2 = <span class="stringliteral">&quot; }&quot;</span>;</div>
370
- <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; map&lt;NodeID, string&gt; nodePtsMap;</div>
371
- <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; map&lt;string, PointsTo&gt; strPtsMap;</div>
372
- <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; </div>
373
- <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>.good())</div>
374
- <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; {</div>
375
- <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="comment">// Parse a single line in the form of &quot;var -&gt; { obj1 obj2 obj3 }&quot;</span></div>
376
- <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; getline(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>, line);</div>
377
- <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">if</span> (line == <span class="stringliteral">&quot;------&quot;</span>) <span class="keywordflow">break</span>;</div>
378
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordtype">size_t</span> pos = line.find(delimiter1);</div>
379
- <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">if</span> (pos == string::npos) <span class="keywordflow">break</span>;</div>
380
- <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">if</span> (line.back() != <span class="charliteral">&#39;}&#39;</span>) <span class="keywordflow">break</span>;</div>
381
- <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; </div>
382
- <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="comment">// var</span></div>
383
- <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var = atoi(line.substr(0, pos).c_str());</div>
384
- <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; </div>
385
- <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="comment">// objs</span></div>
386
- <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; pos = pos + delimiter1.length();</div>
387
- <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordtype">size_t</span> len = line.length() - pos - delimiter2.length();</div>
388
- <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordtype">string</span> objs = line.substr(pos, len);</div>
389
- <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> dstPts;</div>
390
- <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; </div>
391
- <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">if</span> (!objs.empty())</div>
392
- <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; {</div>
393
- <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="comment">// map the variable ID to its unique string pointer set</span></div>
394
- <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; nodePtsMap[var] = objs;</div>
395
- <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">if</span> (strPtsMap.count(objs)) <span class="keywordflow">continue</span>;</div>
396
- <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; </div>
397
- <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; istringstream ss(objs);</div>
398
- <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj;</div>
399
- <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">while</span> (ss.good())</div>
400
- <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; {</div>
401
- <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; ss &gt;&gt; obj;</div>
402
- <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; dstPts.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(obj);</div>
403
- <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div>
404
- <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="comment">// map the string pointer set to the parsed PointsTo set</span></div>
405
- <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; strPtsMap[objs] = dstPts;</div>
406
- <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; }</div>
407
- <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div>
408
- <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; </div>
409
- <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="comment">// map the variable ID to its pointer set</span></div>
410
- <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> t: nodePtsMap)</div>
411
- <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a>-&gt;unionPts(t.first, strPtsMap[t.second]);</div>
412
- <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; </div>
413
- <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="comment">// Read BaseNode insensitivity</span></div>
414
- <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>.good())</div>
415
- <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div>
416
- <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; getline(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>, line);</div>
417
- <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">if</span> (line == <span class="stringliteral">&quot;------&quot;</span>) <span class="keywordflow">break</span>;</div>
418
- <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="comment">// Parse a single line in the form of &quot;ID baseNodeID offset&quot;</span></div>
419
- <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; istringstream ss(line);</div>
420
- <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> id;</div>
421
- <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base;</div>
422
- <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>;</div>
423
- <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; ss &gt;&gt; <span class="keywordtype">id</span> &gt;&gt; base &gt;&gt; <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>;</div>
424
- <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a> = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae18425df0631aefca7dd4b799f6f524a">getGepObjVar</a>(base, <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>);</div>
425
- <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordtype">bool</span> matched = (<span class="keywordtype">id</span> == <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>);</div>
426
- <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; (void)matched;</div>
427
- <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; assert(matched &amp;&amp; <span class="stringliteral">&quot;Error adding GepObjNode into SVFIR!&quot;</span>);</div>
428
- <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; }</div>
331
+ <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode = it-&gt;second;</div>
332
+ <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">if</span> (!isa&lt;ObjVar&gt;(pagNode)) <span class="keywordflow">continue</span>;</div>
333
+ <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a> = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">getBaseObjVar</a>(it-&gt;first);</div>
334
+ <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">if</span> (NodeIDs.<a class="code" href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">test</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>)) <span class="keywordflow">continue</span>;</div>
335
+ <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; f &lt;&lt; <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a> &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
336
+ <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; f &lt;&lt; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">isFieldInsensitive</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
337
+ <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; NodeIDs.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>);</div>
338
+ <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div>
339
+ <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; </div>
340
+ <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="comment">// Job finish and close file</span></div>
341
+ <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; f.close();</div>
342
+ <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">if</span> (f.good())</div>
343
+ <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; {</div>
344
+ <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
345
+ <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">return</span>;</div>
346
+ <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; }</div>
347
+ <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;}</div>
348
+ <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; </div>
349
+ <div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#af4e17ce3667d40d1a377508a275af384"> 289</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#af4e17ce3667d40d1a377508a275af384">BVDataPTAImpl::readPtsResultFromFile</a>(std::ifstream&amp; <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
350
+ <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;{</div>
351
+ <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordtype">string</span> line;</div>
352
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="comment">// Read analysis results from file</span></div>
353
+ <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="classSVF_1_1PTData.html">PTDataTy</a> *<a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a> = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a>();</div>
354
+ <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; </div>
355
+ <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="comment">// Read points-to sets</span></div>
356
+ <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordtype">string</span> delimiter1 = <span class="stringliteral">&quot; -&gt; { &quot;</span>;</div>
357
+ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordtype">string</span> delimiter2 = <span class="stringliteral">&quot; }&quot;</span>;</div>
358
+ <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; map&lt;NodeID, string&gt; nodePtsMap;</div>
359
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; map&lt;string, PointsTo&gt; strPtsMap;</div>
360
+ <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; </div>
361
+ <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>.good())</div>
362
+ <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; {</div>
363
+ <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="comment">// Parse a single line in the form of &quot;var -&gt; { obj1 obj2 obj3 }&quot;</span></div>
364
+ <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; getline(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>, line);</div>
365
+ <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">if</span> (line.at(0) == <span class="charliteral">&#39;[&#39;</span> || line == <span class="stringliteral">&quot;---VERSIONED---&quot;</span>) <span class="keywordflow">continue</span>;</div>
366
+ <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span> (line == <span class="stringliteral">&quot;------&quot;</span>) <span class="keywordflow">break</span>;</div>
367
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordtype">size_t</span> pos = line.find(delimiter1);</div>
368
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">if</span> (pos == string::npos) <span class="keywordflow">break</span>;</div>
369
+ <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">if</span> (line.back() != <span class="charliteral">&#39;}&#39;</span>) <span class="keywordflow">break</span>;</div>
370
+ <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; </div>
371
+ <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="comment">// var</span></div>
372
+ <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var = atoi(line.substr(0, pos).c_str());</div>
373
+ <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; </div>
374
+ <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="comment">// objs</span></div>
375
+ <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; pos = pos + delimiter1.length();</div>
376
+ <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordtype">size_t</span> len = line.length() - pos - delimiter2.length();</div>
377
+ <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordtype">string</span> objs = line.substr(pos, len);</div>
378
+ <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> dstPts;</div>
379
+ <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; </div>
380
+ <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">if</span> (!objs.empty())</div>
381
+ <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; {</div>
382
+ <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="comment">// map the variable ID to its unique string pointer set</span></div>
383
+ <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; nodePtsMap[var] = objs;</div>
384
+ <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">if</span> (strPtsMap.count(objs)) <span class="keywordflow">continue</span>;</div>
385
+ <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; </div>
386
+ <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; istringstream ss(objs);</div>
387
+ <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj;</div>
388
+ <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">while</span> (ss.good())</div>
389
+ <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div>
390
+ <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; ss &gt;&gt; obj;</div>
391
+ <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; dstPts.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(obj);</div>
392
+ <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div>
393
+ <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="comment">// map the string pointer set to the parsed PointsTo set</span></div>
394
+ <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; strPtsMap[objs] = dstPts;</div>
395
+ <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div>
396
+ <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div>
397
+ <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; </div>
398
+ <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="comment">// map the variable ID to its pointer set</span></div>
399
+ <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> t: nodePtsMap)</div>
400
+ <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">ptD</a>-&gt;unionPts(t.first, strPtsMap[t.second]);</div>
401
+ <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;}</div>
402
+ <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; </div>
403
+ <div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#afce21c2a8fca8a2eae4883d2fe148cc0"> 343</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#afce21c2a8fca8a2eae4883d2fe148cc0">BVDataPTAImpl::readGepObjVarMapFromFile</a>(std::ifstream&amp; <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
404
+ <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;{</div>
405
+ <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordtype">string</span> line;</div>
406
+ <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="comment">//read GepObjVarMap from file</span></div>
407
+ <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#ae683914bce36e2d387bc0bc97dfcb14d">SVFIR::NodeOffsetMap</a> gepObjVarMap = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ac1674bd25a17cae24141e6bff24a411e">getGepObjNodeMap</a>();</div>
408
+ <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>.good())</div>
409
+ <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; {</div>
410
+ <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; getline(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>, line);</div>
411
+ <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">if</span> (line == <span class="stringliteral">&quot;------&quot;</span>) <span class="keywordflow">break</span>;</div>
412
+ <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="comment">// Parse a single line in the form of &quot;ID baseNodeID offset&quot;</span></div>
413
+ <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; istringstream ss(line);</div>
414
+ <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base;</div>
415
+ <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>;</div>
416
+ <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> id;</div>
417
+ <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; ss &gt;&gt; base &gt;&gt; <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> &gt;&gt;id;</div>
418
+ <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; SVFIR::NodeOffsetMap::const_iterator iter = gepObjVarMap.find(std::make_pair(base, <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>));</div>
419
+ <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">if</span> (iter == gepObjVarMap.end())</div>
420
+ <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div>
421
+ <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* node = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(base);</div>
422
+ <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj = <span class="keyword">nullptr</span>;</div>
423
+ <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a>* gepObjVar = SVFUtil::dyn_cast&lt;GepObjVar&gt;(node))</div>
424
+ <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; obj = gepObjVar-&gt;getMemObj();</div>
425
+ <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FIObjVar.html">FIObjVar</a>* baseNode = SVFUtil::dyn_cast&lt;FIObjVar&gt;(node))</div>
426
+ <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; obj = baseNode-&gt;getMemObj();</div>
427
+ <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DummyObjVar.html">DummyObjVar</a>* baseNode = SVFUtil::dyn_cast&lt;DummyObjVar&gt;(node))</div>
428
+ <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; obj = baseNode-&gt;getMemObj();</div>
429
+ <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">else</span></div>
430
+ <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;new gep obj node kind?&quot;</span>);</div>
431
+ <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a685991a5dec8a17fe73b3161fdb9ea7e">addGepObjNode</a>(obj, <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>, <span class="keywordtype">id</span>);</div>
432
+ <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#a9c45508d535a6c669cfeb150aa4fb71f">increaseNumOfObjAndNodes</a>();</div>
433
+ <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; }</div>
429
434
  <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; </div>
430
- <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="comment">// //update ObjVar status</span></div>
431
- <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>.good())</div>
432
- <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div>
433
- <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; getline(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>, line);</div>
434
- <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">if</span> (line.empty())</div>
435
- <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">break</span>;</div>
436
- <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="comment">// Parse a single line in the form of &quot;baseNodeID insensitive&quot;</span></div>
437
- <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; istringstream ss(line);</div>
438
- <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base;</div>
439
- <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordtype">bool</span> insensitive;</div>
440
- <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; ss &gt;&gt; base &gt;&gt; insensitive;</div>
441
- <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; </div>
442
- <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">if</span> (insensitive)</div>
443
- <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ac5683fe2e24b393ccc5cb6d8bc92cf2b">setObjFieldInsensitive</a>(base);</div>
444
- <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; }</div>
445
- <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; </div>
446
- <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="comment">// Update callgraph</span></div>
447
- <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aa534e475fa34fa322c567bc376a3da70">updateCallGraph</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0">getIndirectCallsites</a>());</div>
435
+ <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; </div>
436
+ <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div>
437
+ <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;}</div>
438
+ <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; </div>
439
+ <div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#a4ad982a53fbf62c5513afe63b2435fa5"> 379</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a4ad982a53fbf62c5513afe63b2435fa5">BVDataPTAImpl::readAndSetObjFieldSensitivity</a>(std::ifstream&amp; <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>, <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; delimiterStr)</div>
440
+ <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;{</div>
441
+ <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordtype">string</span> line;</div>
442
+ <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="comment">// //update ObjVar status</span></div>
443
+ <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>.good())</div>
444
+ <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; {</div>
445
+ <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; getline(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>, line);</div>
446
+ <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">if</span> (line.empty() || line == delimiterStr)</div>
447
+ <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">break</span>;</div>
448
+ <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="comment">// Parse a single line in the form of &quot;baseNodeID insensitive&quot;</span></div>
449
+ <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; istringstream ss(line);</div>
450
+ <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base;</div>
451
+ <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordtype">bool</span> insensitive;</div>
452
+ <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; ss &gt;&gt; base &gt;&gt; insensitive;</div>
448
453
  <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; </div>
449
- <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>.close();</div>
450
- <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
451
- <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; </div>
452
- <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
454
+ <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">if</span> (insensitive)</div>
455
+ <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ac5683fe2e24b393ccc5cb6d8bc92cf2b">setObjFieldInsensitive</a>(base);</div>
456
+ <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</div>
457
+ <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; </div>
453
458
  <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;}</div>
454
459
  <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; </div>
455
- <div class="line"><a name="l00403"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#ad34eea2a5ec26e0b2b6a78914879f989"> 403</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ad34eea2a5ec26e0b2b6a78914879f989">BVDataPTAImpl::dumpTopLevelPtsTo</a>()</div>
456
- <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;{</div>
457
- <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">for</span> (OrderedNodeSet::iterator nIter = this-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">getAllValidPtrs</a>().begin();</div>
458
- <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; nIter != this-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">getAllValidPtrs</a>().end(); ++nIter)</div>
459
- <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; {</div>
460
- <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(*nIter);</div>
461
- <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;isValidTopLevelPtr(node))</div>
462
- <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; {</div>
463
- <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = this-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac9897a09cad8a99169f2da2116807b1b">getPts</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div>
464
- <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\nNodeID &quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
465
- <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; </div>
466
- <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">if</span> (pts.<a class="code" href="classSVF_1_1PointsTo.html#a13746982a11d0cab57e5919d53bfbec8">empty</a>())</div>
467
- <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; {</div>
468
- <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\tPointsTo: {empty}\n\n&quot;</span>;</div>
469
- <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; }</div>
470
- <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">else</span></div>
471
- <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; {</div>
472
- <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\tPointsTo: { &quot;</span>;</div>
473
- <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> it = pts.<a class="code" href="classSVF_1_1PointsTo.html#ad5b582d2672617806c61e6170d0b5a7e">begin</a>(), eit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a6e2ff63437d07a30cc6db35de032728a">end</a>();</div>
474
- <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; it != eit; ++it)</div>
475
- <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; *it &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
476
- <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n\n&quot;</span>;</div>
477
- <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div>
478
- <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div>
479
- <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div>
480
- <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; </div>
481
- <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>().flush();</div>
482
- <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;}</div>
483
- <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; </div>
484
- <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; </div>
485
- <div class="line"><a name="l00436"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#a7996a2c07b015e8557398ec10db1acef"> 436</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a7996a2c07b015e8557398ec10db1acef">BVDataPTAImpl::dumpAllPts</a>()</div>
486
- <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;{</div>
487
- <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <a class="code" href="namespaceSVF.html#a3c2bd95727ec0d9c55c631b6617026c8">OrderedNodeSet</a> pagNodes;</div>
488
- <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> it = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; it++)</div>
489
- <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; {</div>
490
- <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; pagNodes.insert(it-&gt;first);</div>
491
- <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; }</div>
492
- <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; </div>
493
- <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a> : pagNodes)</div>
494
- <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; {</div>
495
- <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;----------------------------------------------\n&quot;</span>;</div>
496
- <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a1a6cee7e690ccb3e53cdc4c3e67b386d">dumpPts</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>, this-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac9897a09cad8a99169f2da2116807b1b">getPts</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>));</div>
497
- <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; }</div>
498
- <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; </div>
499
- <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;----------------------------------------------\n&quot;</span>;</div>
500
- <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;}</div>
501
- <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; </div>
502
- <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; </div>
503
- <div class="line"><a name="l00459"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#a9830d4676fd424b633f8e4d918734296"> 459</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a9830d4676fd424b633f8e4d918734296">BVDataPTAImpl::onTheFlyCallGraphSolve</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">CallSiteToFunPtrMap</a>&amp; callsites, <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a>&amp; newEdges)</div>
504
- <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;{</div>
505
- <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">for</span>(CallSiteToFunPtrMap::const_iterator iter = callsites.begin(), eiter = callsites.end(); iter!=eiter; ++iter)</div>
506
- <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; {</div>
507
- <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = iter-&gt;first;</div>
508
- <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; </div>
509
- <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()).<a class="code" href="classSVF_1_1CallSite.html#a427a38e580db4bf04c9d716762243c89">isVirtualCall</a>())</div>
510
- <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; {</div>
511
- <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* vtbl = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()).<a class="code" href="classSVF_1_1CallSite.html#a9b04a0f24be915a6e124106060225a3d">getVtablePtr</a>();</div>
512
- <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; assert(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a401ec65771a3d2dcc8eb60574aadd354">hasValueNode</a>(vtbl));</div>
513
- <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vtblId = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(vtbl);</div>
514
- <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ac04b64a5884710508b304f93da88c7ba">resolveCPPIndCalls</a>(cs, <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac9897a09cad8a99169f2da2116807b1b">getPts</a>(vtblId), newEdges);</div>
515
- <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; }</div>
516
- <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">else</span></div>
517
- <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a8d128246f86f28fdf4981d91169ab440">resolveIndCalls</a>(iter-&gt;first,<a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac9897a09cad8a99169f2da2116807b1b">getPts</a>(iter-&gt;second),newEdges);</div>
518
- <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; }</div>
519
- <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;}</div>
520
- <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; </div>
521
- <div class="line"><a name="l00480"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#a2026cffd7043208333083ed1a6603e7b"> 480</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a2026cffd7043208333083ed1a6603e7b">BVDataPTAImpl::normalizePointsTo</a>()</div>
522
- <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;{</div>
523
- <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#ab6abb822445c9b3f5cb2b7206042e940">SVFIR::MemObjToFieldsMap</a> &amp;memToFieldsMap = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a6f46446d667258b32ddc1ccab48f651c">getMemToFieldsMap</a>();</div>
524
- <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#ae683914bce36e2d387bc0bc97dfcb14d">SVFIR::NodeOffsetMap</a> &amp;GepObjVarMap = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ac1674bd25a17cae24141e6bff24a411e">getGepObjNodeMap</a>();</div>
460
+ <div class="line"><a name="l00405"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#a290501006cb700db0e07dc577429c928"> 405</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a290501006cb700db0e07dc577429c928">BVDataPTAImpl::readFromFile</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; filename)</div>
461
+ <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;{</div>
462
+ <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; </div>
463
+ <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Loading pointer analysis results from &#39;&quot;</span> &lt;&lt; filename &lt;&lt; <span class="stringliteral">&quot;&#39;...&quot;</span>;</div>
464
+ <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; </div>
465
+ <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; ifstream <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>(filename.c_str());</div>
466
+ <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>.is_open())</div>
467
+ <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; {</div>
468
+ <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; error opening file for reading!\n&quot;</span>;</div>
469
+ <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
470
+ <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div>
471
+ <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; </div>
472
+ <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a4ad982a53fbf62c5513afe63b2435fa5">readAndSetObjFieldSensitivity</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>,<span class="stringliteral">&quot;------&quot;</span>);</div>
473
+ <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; </div>
474
+ <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#af4e17ce3667d40d1a377508a275af384">readPtsResultFromFile</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>);</div>
475
+ <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; </div>
476
+ <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#afce21c2a8fca8a2eae4883d2fe148cc0">readGepObjVarMapFromFile</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>);</div>
477
+ <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; </div>
478
+ <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a4ad982a53fbf62c5513afe63b2435fa5">readAndSetObjFieldSensitivity</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>,<span class="stringliteral">&quot;&quot;</span>);</div>
479
+ <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; </div>
480
+ <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="comment">// Update callgraph</span></div>
481
+ <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aa534e475fa34fa322c567bc376a3da70">updateCallGraph</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0">getIndirectCallsites</a>());</div>
482
+ <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; </div>
483
+ <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>.close();</div>
484
+ <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
485
+ <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; </div>
486
+ <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
487
+ <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;}</div>
488
+ <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; </div>
489
+ <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; </div>
490
+ <div class="line"><a name="l00438"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#ad34eea2a5ec26e0b2b6a78914879f989"> 438</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ad34eea2a5ec26e0b2b6a78914879f989">BVDataPTAImpl::dumpTopLevelPtsTo</a>()</div>
491
+ <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;{</div>
492
+ <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">for</span> (OrderedNodeSet::iterator nIter = this-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">getAllValidPtrs</a>().begin();</div>
493
+ <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; nIter != this-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">getAllValidPtrs</a>().end(); ++nIter)</div>
494
+ <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; {</div>
495
+ <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(*nIter);</div>
496
+ <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;isValidTopLevelPtr(node))</div>
497
+ <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; {</div>
498
+ <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = this-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac9897a09cad8a99169f2da2116807b1b">getPts</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div>
499
+ <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\nNodeID &quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
500
+ <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; </div>
501
+ <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">if</span> (pts.<a class="code" href="classSVF_1_1PointsTo.html#a13746982a11d0cab57e5919d53bfbec8">empty</a>())</div>
502
+ <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; {</div>
503
+ <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\tPointsTo: {empty}\n\n&quot;</span>;</div>
504
+ <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div>
505
+ <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">else</span></div>
506
+ <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; {</div>
507
+ <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\tPointsTo: { &quot;</span>;</div>
508
+ <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> it = pts.<a class="code" href="classSVF_1_1PointsTo.html#ad5b582d2672617806c61e6170d0b5a7e">begin</a>(), eit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a6e2ff63437d07a30cc6db35de032728a">end</a>();</div>
509
+ <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; it != eit; ++it)</div>
510
+ <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; *it &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
511
+ <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n\n&quot;</span>;</div>
512
+ <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div>
513
+ <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; }</div>
514
+ <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }</div>
515
+ <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; </div>
516
+ <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>().flush();</div>
517
+ <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;}</div>
518
+ <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; </div>
519
+ <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; </div>
520
+ <div class="line"><a name="l00471"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#a7996a2c07b015e8557398ec10db1acef"> 471</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a7996a2c07b015e8557398ec10db1acef">BVDataPTAImpl::dumpAllPts</a>()</div>
521
+ <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;{</div>
522
+ <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <a class="code" href="namespaceSVF.html#a3c2bd95727ec0d9c55c631b6617026c8">OrderedNodeSet</a> pagNodes;</div>
523
+ <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> it = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; it++)</div>
524
+ <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; {</div>
525
+ <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; pagNodes.insert(it-&gt;first);</div>
526
+ <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; }</div>
527
+ <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; </div>
528
+ <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a> : pagNodes)</div>
529
+ <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; {</div>
530
+ <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;----------------------------------------------\n&quot;</span>;</div>
531
+ <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a1a6cee7e690ccb3e53cdc4c3e67b386d">dumpPts</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>, this-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac9897a09cad8a99169f2da2116807b1b">getPts</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>));</div>
532
+ <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; }</div>
525
533
  <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; </div>
526
- <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="comment">// collect each gep node whose base node has been set as field-insensitive</span></div>
527
- <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> dropNodes;</div>
528
- <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> t: memToFieldsMap)</div>
529
- <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; {</div>
530
- <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = t.first;</div>
531
- <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* memObj = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(base);</div>
532
- <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; assert(memObj &amp;&amp; <span class="stringliteral">&quot;Invalid memobj in memToFieldsMap&quot;</span>);</div>
533
- <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">if</span> (memObj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>())</div>
534
- <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; {</div>
535
- <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> : t.second)</div>
536
- <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div>
537
- <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;GepObjVar&gt;(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>)))</div>
538
- <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; {</div>
539
- <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; dropNodes.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(<span class="keywordtype">id</span>);</div>
540
- <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div>
541
- <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">else</span></div>
542
- <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; assert(<span class="keywordtype">id</span> == base &amp;&amp; <span class="stringliteral">&quot;Not a GepObj Node or a baseObj Node?&quot;</span>);</div>
543
- <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div>
544
- <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }</div>
545
- <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; }</div>
546
- <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; </div>
547
- <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="comment">// remove the collected redundant gep nodes in each pointers&#39;s pts</span></div>
548
- <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> nIter = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); nIter != <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++nIter)</div>
549
- <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; {</div>
550
- <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a> = nIter-&gt;first;</div>
551
- <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; </div>
552
- <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;tmpPts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac9897a09cad8a99169f2da2116807b1b">getPts</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>);</div>
553
- <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj : tmpPts)</div>
554
- <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; {</div>
555
- <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordflow">if</span> (!dropNodes.<a class="code" href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">test</a>(obj))</div>
556
- <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">continue</span>;</div>
557
- <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> baseObj = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">getBaseObjVar</a>(obj);</div>
558
- <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a4909696c946cf6aba12542ec51766b64">clearPts</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>, obj);</div>
559
- <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">addPts</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>, baseObj);</div>
560
- <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; }</div>
561
- <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div>
562
- <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; </div>
563
- <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="comment">// clear GepObjVarMap and memToFieldsMap for redundant gepnodes</span></div>
564
- <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="comment">// and remove those nodes from pag</span></div>
565
- <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>: dropNodes)</div>
566
- <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; {</div>
567
- <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">getBaseObjVar</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>);</div>
568
- <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *gepNode = SVFUtil::dyn_cast&lt;GepObjVar&gt;(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>));</div>
569
- <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> apOffset = gepNode-&gt;<a class="code" href="classSVF_1_1GepObjVar.html#a10790e82dbb00532d4aa171f592c54bc">getConstantFieldIdx</a>();</div>
570
- <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; GepObjVarMap.erase(std::make_pair(base, apOffset));</div>
571
- <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; memToFieldsMap[base].reset(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>);</div>
572
- <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; </div>
573
- <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a1817b65e76052f11e36a67d6b9efd915">removeGNode</a>(gepNode);</div>
574
- <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; }</div>
575
- <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;}</div>
576
- <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; </div>
577
- <div class="line"><a name="l00539"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#a236d3e9c894fd7c34c8d7a77ac11dd48"> 539</a></span>&#160;<a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943">AliasResult</a> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a236d3e9c894fd7c34c8d7a77ac11dd48">BVDataPTAImpl::alias</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* V1,</div>
578
- <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* V2)</div>
579
- <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;{</div>
580
- <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a236d3e9c894fd7c34c8d7a77ac11dd48">alias</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(V1),<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(V2));</div>
581
- <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;}</div>
582
- <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; </div>
583
- <div class="line"><a name="l00548"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#a63c474d3a2d4d196e167d6969c6ad21f"> 548</a></span>&#160;<a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943">AliasResult</a> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a236d3e9c894fd7c34c8d7a77ac11dd48">BVDataPTAImpl::alias</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node1, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node2)</div>
584
- <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;{</div>
585
- <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a236d3e9c894fd7c34c8d7a77ac11dd48">alias</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac9897a09cad8a99169f2da2116807b1b">getPts</a>(node1),<a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac9897a09cad8a99169f2da2116807b1b">getPts</a>(node2));</div>
586
- <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;}</div>
587
- <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; </div>
588
- <div class="line"><a name="l00556"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#a25720f154731a8c745da10aa76ab8517"> 556</a></span>&#160;<a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943">AliasResult</a> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a236d3e9c894fd7c34c8d7a77ac11dd48">BVDataPTAImpl::alias</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; p1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; p2)</div>
589
- <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;{</div>
590
- <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; </div>
591
- <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts1;</div>
592
- <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a798c84d5e861de2b61bcb1a86385f721">expandFIObjs</a>(p1,pts1);</div>
593
- <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts2;</div>
594
- <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a798c84d5e861de2b61bcb1a86385f721">expandFIObjs</a>(p2,pts2);</div>
595
- <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; </div>
596
- <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a56368369bc37e37b13f19e5eb1890063">containBlackHoleNode</a>(pts1) || <a class="code" href="classSVF_1_1PointerAnalysis.html#a56368369bc37e37b13f19e5eb1890063">containBlackHoleNode</a>(pts2) || pts1.<a class="code" href="classSVF_1_1PointsTo.html#ad78e4109c839914c4f7e37ca78046f1d">intersects</a>(pts2))</div>
597
- <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">AliasResult::MayAlias</a>;</div>
598
- <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">else</span></div>
599
- <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">AliasResult::NoAlias</a>;</div>
600
- <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;}</div>
534
+ <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;----------------------------------------------\n&quot;</span>;</div>
535
+ <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;}</div>
536
+ <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; </div>
537
+ <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; </div>
538
+ <div class="line"><a name="l00494"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#a9830d4676fd424b633f8e4d918734296"> 494</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a9830d4676fd424b633f8e4d918734296">BVDataPTAImpl::onTheFlyCallGraphSolve</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">CallSiteToFunPtrMap</a>&amp; callsites, <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a>&amp; newEdges)</div>
539
+ <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;{</div>
540
+ <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">for</span>(CallSiteToFunPtrMap::const_iterator iter = callsites.begin(), eiter = callsites.end(); iter!=eiter; ++iter)</div>
541
+ <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; {</div>
542
+ <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = iter-&gt;first;</div>
543
+ <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; </div>
544
+ <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()).<a class="code" href="classSVF_1_1CallSite.html#a427a38e580db4bf04c9d716762243c89">isVirtualCall</a>())</div>
545
+ <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; {</div>
546
+ <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* vtbl = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()).<a class="code" href="classSVF_1_1CallSite.html#a9b04a0f24be915a6e124106060225a3d">getVtablePtr</a>();</div>
547
+ <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; assert(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a401ec65771a3d2dcc8eb60574aadd354">hasValueNode</a>(vtbl));</div>
548
+ <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vtblId = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(vtbl);</div>
549
+ <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ac04b64a5884710508b304f93da88c7ba">resolveCPPIndCalls</a>(cs, <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac9897a09cad8a99169f2da2116807b1b">getPts</a>(vtblId), newEdges);</div>
550
+ <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div>
551
+ <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordflow">else</span></div>
552
+ <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a8d128246f86f28fdf4981d91169ab440">resolveIndCalls</a>(iter-&gt;first,<a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac9897a09cad8a99169f2da2116807b1b">getPts</a>(iter-&gt;second),newEdges);</div>
553
+ <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; }</div>
554
+ <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;}</div>
555
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; </div>
556
+ <div class="line"><a name="l00515"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#a2026cffd7043208333083ed1a6603e7b"> 515</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a2026cffd7043208333083ed1a6603e7b">BVDataPTAImpl::normalizePointsTo</a>()</div>
557
+ <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;{</div>
558
+ <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#ab6abb822445c9b3f5cb2b7206042e940">SVFIR::MemObjToFieldsMap</a> &amp;memToFieldsMap = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a6f46446d667258b32ddc1ccab48f651c">getMemToFieldsMap</a>();</div>
559
+ <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#ae683914bce36e2d387bc0bc97dfcb14d">SVFIR::NodeOffsetMap</a> &amp;GepObjVarMap = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ac1674bd25a17cae24141e6bff24a411e">getGepObjNodeMap</a>();</div>
560
+ <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; </div>
561
+ <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="comment">// collect each gep node whose base node has been set as field-insensitive</span></div>
562
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> dropNodes;</div>
563
+ <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> t: memToFieldsMap)</div>
564
+ <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; {</div>
565
+ <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = t.first;</div>
566
+ <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* memObj = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">getObject</a>(base);</div>
567
+ <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; assert(memObj &amp;&amp; <span class="stringliteral">&quot;Invalid memobj in memToFieldsMap&quot;</span>);</div>
568
+ <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">if</span> (memObj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>())</div>
569
+ <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; {</div>
570
+ <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> : t.second)</div>
571
+ <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; {</div>
572
+ <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;GepObjVar&gt;(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>)))</div>
573
+ <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; {</div>
574
+ <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; dropNodes.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(<span class="keywordtype">id</span>);</div>
575
+ <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div>
576
+ <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">else</span></div>
577
+ <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; assert(<span class="keywordtype">id</span> == base &amp;&amp; <span class="stringliteral">&quot;Not a GepObj Node or a baseObj Node?&quot;</span>);</div>
578
+ <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; }</div>
579
+ <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; }</div>
580
+ <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div>
581
+ <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; </div>
582
+ <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="comment">// remove the collected redundant gep nodes in each pointers&#39;s pts</span></div>
583
+ <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> nIter = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); nIter != <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++nIter)</div>
584
+ <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; {</div>
585
+ <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a> = nIter-&gt;first;</div>
586
+ <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; </div>
587
+ <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;tmpPts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac9897a09cad8a99169f2da2116807b1b">getPts</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>);</div>
588
+ <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj : tmpPts)</div>
589
+ <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; {</div>
590
+ <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">if</span> (!dropNodes.<a class="code" href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">test</a>(obj))</div>
591
+ <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">continue</span>;</div>
592
+ <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> baseObj = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">getBaseObjVar</a>(obj);</div>
593
+ <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a4909696c946cf6aba12542ec51766b64">clearPts</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>, obj);</div>
594
+ <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">addPts</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>, baseObj);</div>
595
+ <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; }</div>
596
+ <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; }</div>
597
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; </div>
598
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="comment">// clear GepObjVarMap and memToFieldsMap for redundant gepnodes</span></div>
599
+ <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="comment">// and remove those nodes from pag</span></div>
600
+ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>: dropNodes)</div>
601
+ <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; {</div>
602
+ <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">getBaseObjVar</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>);</div>
603
+ <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *gepNode = SVFUtil::dyn_cast&lt;GepObjVar&gt;(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>));</div>
604
+ <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> apOffset = gepNode-&gt;<a class="code" href="classSVF_1_1GepObjVar.html#a10790e82dbb00532d4aa171f592c54bc">getConstantFieldIdx</a>();</div>
605
+ <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; GepObjVarMap.erase(std::make_pair(base, apOffset));</div>
606
+ <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; memToFieldsMap[base].reset(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>);</div>
607
+ <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; </div>
608
+ <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a1817b65e76052f11e36a67d6b9efd915">removeGNode</a>(gepNode);</div>
609
+ <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; }</div>
610
+ <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;}</div>
611
+ <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; </div>
612
+ <div class="line"><a name="l00574"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#a236d3e9c894fd7c34c8d7a77ac11dd48"> 574</a></span>&#160;<a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943">AliasResult</a> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a236d3e9c894fd7c34c8d7a77ac11dd48">BVDataPTAImpl::alias</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* V1,</div>
613
+ <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* V2)</div>
614
+ <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;{</div>
615
+ <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a236d3e9c894fd7c34c8d7a77ac11dd48">alias</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(V1),<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(V2));</div>
616
+ <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;}</div>
617
+ <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; </div>
618
+ <div class="line"><a name="l00583"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#a63c474d3a2d4d196e167d6969c6ad21f"> 583</a></span>&#160;<a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943">AliasResult</a> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a236d3e9c894fd7c34c8d7a77ac11dd48">BVDataPTAImpl::alias</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node1, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node2)</div>
619
+ <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;{</div>
620
+ <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a236d3e9c894fd7c34c8d7a77ac11dd48">alias</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac9897a09cad8a99169f2da2116807b1b">getPts</a>(node1),<a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac9897a09cad8a99169f2da2116807b1b">getPts</a>(node2));</div>
621
+ <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;}</div>
622
+ <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; </div>
623
+ <div class="line"><a name="l00591"></a><span class="lineno"><a class="line" href="classSVF_1_1BVDataPTAImpl.html#a25720f154731a8c745da10aa76ab8517"> 591</a></span>&#160;<a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943">AliasResult</a> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a236d3e9c894fd7c34c8d7a77ac11dd48">BVDataPTAImpl::alias</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; p1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; p2)</div>
624
+ <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;{</div>
625
+ <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; </div>
626
+ <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts1;</div>
627
+ <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a798c84d5e861de2b61bcb1a86385f721">expandFIObjs</a>(p1,pts1);</div>
628
+ <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts2;</div>
629
+ <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a798c84d5e861de2b61bcb1a86385f721">expandFIObjs</a>(p2,pts2);</div>
630
+ <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; </div>
631
+ <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a56368369bc37e37b13f19e5eb1890063">containBlackHoleNode</a>(pts1) || <a class="code" href="classSVF_1_1PointerAnalysis.html#a56368369bc37e37b13f19e5eb1890063">containBlackHoleNode</a>(pts2) || pts1.<a class="code" href="classSVF_1_1PointsTo.html#ad78e4109c839914c4f7e37ca78046f1d">intersects</a>(pts2))</div>
632
+ <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">AliasResult::MayAlias</a>;</div>
633
+ <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">else</span></div>
634
+ <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">AliasResult::NoAlias</a>;</div>
635
+ <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;}</div>
601
636
  </div><!-- fragment --></div><!-- contents -->
602
637
  <div class="ttc" id="anamespaceSVF_html_a5c4820681ef340339ddded756eb82ae1"><div class="ttname"><a href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">SVF::APOffset</a></div><div class="ttdeci">s64_t APOffset</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00061">SVFType.h:61</a></div></div>
603
638
  <div class="ttc" id="aclassSVF_1_1PTData_html_af2f176027169e18730848c7a583aed93"><div class="ttname"><a href="classSVF_1_1PTData.html#af2f176027169e18730848c7a583aed93">SVF::PTData::remapAllPts</a></div><div class="ttdeci">virtual void remapAllPts(void)=0</div><div class="ttdoc">Remaps all points-to sets to use the current mapping.</div></div>
604
639
  <div class="ttc" id="aclassSVF_1_1IRGraph_html_a401ec65771a3d2dcc8eb60574aadd354"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a401ec65771a3d2dcc8eb60574aadd354">SVF::IRGraph::hasValueNode</a></div><div class="ttdeci">bool hasValueNode(const SVFValue *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00142">IRGraph.h:142</a></div></div>
640
+ <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_afce21c2a8fca8a2eae4883d2fe148cc0"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#afce21c2a8fca8a2eae4883d2fe148cc0">SVF::BVDataPTAImpl::readGepObjVarMapFromFile</a></div><div class="ttdeci">virtual void readGepObjVarMapFromFile(std::ifstream &amp;f)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00343">PointerAnalysisImpl.cpp:343</a></div></div>
641
+ <div class="ttc" id="aclassSVF_1_1NodeIDAllocator_html_a9c45508d535a6c669cfeb150aa4fb71f"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a9c45508d535a6c669cfeb150aa4fb71f">SVF::NodeIDAllocator::increaseNumOfObjAndNodes</a></div><div class="ttdeci">void increaseNumOfObjAndNodes()</div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8h_source.html#l00085">NodeIDAllocator.h:85</a></div></div>
605
642
  <div class="ttc" id="aclassSVF_1_1PointsTo_1_1PointsToIterator_html"><div class="ttname"><a href="classSVF_1_1PointsTo_1_1PointsToIterator.html">SVF::PointsTo::PointsToIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00181">PointsTo.h:181</a></div></div>
606
643
  <div class="ttc" id="anamespaceSVF_html_a3c2bd95727ec0d9c55c631b6617026c8"><div class="ttname"><a href="namespaceSVF.html#a3c2bd95727ec0d9c55c631b6617026c8">SVF::OrderedNodeSet</a></div><div class="ttdeci">OrderedSet&lt; NodeID &gt; OrderedNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00113">SVFType.h:113</a></div></div>
607
644
  <div class="ttc" id="aclassSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00459">SymbolTableInfo.cpp:459</a></div></div>
608
- <div class="ttc" id="aclassSVF_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#l00336">SVFIR.h:336</a></div></div>
645
+ <div class="ttc" id="aclassSVF_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#l00337">SVFIR.h:337</a></div></div>
646
+ <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_a6ca3ab1e32012ef13613f52f27f3c502"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a6ca3ab1e32012ef13613f52f27f3c502">SVF::BVDataPTAImpl::writePtsResultToFile</a></div><div class="ttdeci">virtual void writePtsResultToFile(std::fstream &amp;f)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00198">PointerAnalysisImpl.cpp:198</a></div></div>
609
647
  <div class="ttc" id="acJSON_8cpp_html_a009ef1d888ab6dbe77e6b42b0b39f1ae"><div class="ttname"><a href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a></div><div class="ttdeci">cJSON * p</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02559">cJSON.cpp:2559</a></div></div>
610
648
  <div class="ttc" id="aclassSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00384">GenericGraph.h:384</a></div></div>
611
649
  <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_a638f58c3bf6efdb3787fafaa4e6f19ca"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a638f58c3bf6efdb3787fafaa4e6f19ca">SVF::BVDataPTAImpl::finalize</a></div><div class="ttdeci">void finalize() override</div><div class="ttdoc">Finalization of pointer analysis, and normalize points-to information to Bit Vector representation.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00093">PointerAnalysisImpl.cpp:93</a></div></div>
@@ -621,23 +659,24 @@ $(function() {
621
659
  <div class="ttc" id="aclassSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00747">SparseBitVector.h:747</a></div></div>
622
660
  <div class="ttc" id="aclassSVF_1_1GepObjVar_html_a10790e82dbb00532d4aa171f592c54bc"><div class="ttname"><a href="classSVF_1_1GepObjVar.html#a10790e82dbb00532d4aa171f592c54bc">SVF::GepObjVar::getConstantFieldIdx</a></div><div class="ttdeci">APOffset getConstantFieldIdx() const</div><div class="ttdoc">offset of the mem object</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00491">SVFVariables.h:491</a></div></div>
623
661
  <div class="ttc" id="aPointerAnalysisImpl_8h_html"><div class="ttname"><a href="PointerAnalysisImpl_8h.html">PointerAnalysisImpl.h</a></div></div>
624
- <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_a2026cffd7043208333083ed1a6603e7b"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a2026cffd7043208333083ed1a6603e7b">SVF::BVDataPTAImpl::normalizePointsTo</a></div><div class="ttdeci">virtual void normalizePointsTo()</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00480">PointerAnalysisImpl.cpp:480</a></div></div>
662
+ <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_a2026cffd7043208333083ed1a6603e7b"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a2026cffd7043208333083ed1a6603e7b">SVF::BVDataPTAImpl::normalizePointsTo</a></div><div class="ttdeci">virtual void normalizePointsTo()</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00515">PointerAnalysisImpl.cpp:515</a></div></div>
625
663
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85aa43c83e2f0df003c158d4b1325b50b18"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85aa43c83e2f0df003c158d4b1325b50b18">SVF::PointerAnalysis::FlowS_DDA</a></div><div class="ttdeci">@ FlowS_DDA</div><div class="ttdoc">Flow sensitive DDA.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00085">PointerAnalysis.h:85</a></div></div>
626
664
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html">SVF::PointerAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00058">PointerAnalysis.h:58</a></div></div>
627
665
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85ab87dcf990c05d31f91b9bfdfcfb54b7d"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab87dcf990c05d31f91b9bfdfcfb54b7d">SVF::PointerAnalysis::CFLFSCS_WPA</a></div><div class="ttdeci">@ CFLFSCS_WPA</div><div class="ttdoc">Flow-, context-, CFL-reachability-based analysis.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00080">PointerAnalysis.h:80</a></div></div>
628
666
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1">SVF::PointerAnalysis::AndersenSCD_WPA</a></div><div class="ttdeci">@ AndersenSCD_WPA</div><div class="ttdoc">Selective cycle detection andersen-style WPA.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00068">PointerAnalysis.h:68</a></div></div>
629
667
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85abe1d8104c77bfe4bbc201a64410c7f61"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abe1d8104c77bfe4bbc201a64410c7f61">SVF::PointerAnalysis::FieldS_DDA</a></div><div class="ttdeci">@ FieldS_DDA</div><div class="ttdoc">Field sensitive DDA.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00084">PointerAnalysis.h:84</a></div></div>
630
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_a6f46446d667258b32ddc1ccab48f651c"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a6f46446d667258b32ddc1ccab48f651c">SVF::SVFIR::getMemToFieldsMap</a></div><div class="ttdeci">MemObjToFieldsMap &amp; getMemToFieldsMap()</div><div class="ttdoc">Return memToFieldsMap.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00127">SVFIR.h:127</a></div></div>
668
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a6f46446d667258b32ddc1ccab48f651c"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a6f46446d667258b32ddc1ccab48f651c">SVF::SVFIR::getMemToFieldsMap</a></div><div class="ttdeci">MemObjToFieldsMap &amp; getMemToFieldsMap()</div><div class="ttdoc">Return memToFieldsMap.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00128">SVFIR.h:128</a></div></div>
631
669
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a3550ea3f087ec557a6fe076bc443b05d"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a3550ea3f087ec557a6fe076bc443b05d">SVF::PointerAnalysis::print_stat</a></div><div class="ttdeci">bool print_stat</div><div class="ttdoc">User input flags.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00134">PointerAnalysis.h:134</a></div></div>
632
670
  <div class="ttc" id="anamespaceSVF_html_a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239"><div class="ttname"><a href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">SVF::NoAlias</a></div><div class="ttdeci">@ NoAlias</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00587">SVFType.h:587</a></div></div>
633
671
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a43837619e78e03dc95ec6e88959faf82"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a43837619e78e03dc95ec6e88959faf82">SVF::PointerAnalysis::FSCS_WPA</a></div><div class="ttdeci">@ FSCS_WPA</div><div class="ttdoc">Flow-, context- sensitive WPA.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00077">PointerAnalysis.h:77</a></div></div>
634
672
  <div class="ttc" id="aclassSVF_1_1PointsTo_html_ad78e4109c839914c4f7e37ca78046f1d"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ad78e4109c839914c4f7e37ca78046f1d">SVF::PointsTo::intersects</a></div><div class="ttdeci">bool intersects(const PointsTo &amp;rhs) const</div><div class="ttdoc">Returns true if this set and rhs share any elements.</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00189">PointsTo.cpp:189</a></div></div>
635
673
  <div class="ttc" id="aclassSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00459">SparseBitVector.h:459</a></div></div>
636
674
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a118dabc50024b5cd91095814ade47166"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a118dabc50024b5cd91095814ade47166">SVF::PointerAnalysis::finalize</a></div><div class="ttdeci">virtual void finalize()</div><div class="ttdoc">Finalization of a pointer analysis, including checking alias correctness.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00180">PointerAnalysis.cpp:180</a></div></div>
675
+ <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_a4ad982a53fbf62c5513afe63b2435fa5"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a4ad982a53fbf62c5513afe63b2435fa5">SVF::BVDataPTAImpl::readAndSetObjFieldSensitivity</a></div><div class="ttdeci">virtual void readAndSetObjFieldSensitivity(std::ifstream &amp;f, const std::string &amp;delimiterStr)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00379">PointerAnalysisImpl.cpp:379</a></div></div>
637
676
  <div class="ttc" id="acJSON_8cpp_html_ab6e2ea6dc7bd57d1483413449998230a"><div class="ttname"><a href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a></div><div class="ttdeci">cJSON * n</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02558">cJSON.cpp:2558</a></div></div>
638
677
  <div class="ttc" id="aclassSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00180">GenericGraph.h:180</a></div></div>
639
678
  <div class="ttc" id="aclassSVF_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#l00218">PointerAnalysis.h:218</a></div></div>
640
- <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_a94acf249e50ad56f966ddad6843c18f8"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a94acf249e50ad56f966ddad6843c18f8">SVF::BVDataPTAImpl::ptCache</a></div><div class="ttdeci">PersistentPointsToCache&lt; PointsTo &gt; ptCache</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00205">PointerAnalysisImpl.h:205</a></div></div>
679
+ <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_a94acf249e50ad56f966ddad6843c18f8"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a94acf249e50ad56f966ddad6843c18f8">SVF::BVDataPTAImpl::ptCache</a></div><div class="ttdeci">PersistentPointsToCache&lt; PointsTo &gt; ptCache</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00210">PointerAnalysisImpl.h:210</a></div></div>
641
680
  <div class="ttc" id="anamespaceSVF_html_a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f"><div class="ttname"><a href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">SVF::MayAlias</a></div><div class="ttdeci">@ MayAlias</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00588">SVFType.h:588</a></div></div>
642
681
  <div class="ttc" id="aclassSVF_1_1CallSite_html_a9b04a0f24be915a6e124106060225a3d"><div class="ttname"><a href="classSVF_1_1CallSite.html#a9b04a0f24be915a6e124106060225a3d">SVF::CallSite::getVtablePtr</a></div><div class="ttdeci">const SVFValue * getVtablePtr() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01138">SVFValue.h:1138</a></div></div>
643
682
  <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_ab0e1242aadfe1e16a2bd1445658a5476"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ab0e1242aadfe1e16a2bd1445658a5476">SVF::BVDataPTAImpl::BVDataPTAImpl</a></div><div class="ttdeci">BVDataPTAImpl(SVFIR *pag, PointerAnalysis::PTATY type, bool alias_check=true)</div><div class="ttdoc">Constructor.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00046">PointerAnalysisImpl.cpp:46</a></div></div>
@@ -645,19 +684,22 @@ $(function() {
645
684
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_ac0c0855918cb2cdc3d8ebc175acfbd4da84705167ea3a7162ecb9470a8a77b5d8"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac0c0855918cb2cdc3d8ebc175acfbd4da84705167ea3a7162ecb9470a8a77b5d8">SVF::PointerAnalysis::BVDataImpl</a></div><div class="ttdeci">@ BVDataImpl</div><div class="ttdoc">Represents BVDataPTAImpl.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00097">PointerAnalysis.h:97</a></div></div>
646
685
  <div class="ttc" id="aclassSVF_1_1GenericGraph_html_a1817b65e76052f11e36a67d6b9efd915"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a1817b65e76052f11e36a67d6b9efd915">SVF::GenericGraph::removeGNode</a></div><div class="ttdeci">void removeGNode(NodeType *node)</div><div class="ttdoc">Delete a node.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00421">GenericGraph.h:421</a></div></div>
647
686
  <div class="ttc" id="aCppUtil_8h_html"><div class="ttname"><a href="CppUtil_8h.html">CppUtil.h</a></div></div>
648
- <div class="ttc" id="aclassSVF_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#l00444">SVFIR.h:444</a></div></div>
687
+ <div class="ttc" id="aclassSVF_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#l00445">SVFIR.h:445</a></div></div>
649
688
  <div class="ttc" id="aclassSVF_1_1SVFValue_html"><div class="ttname"><a href="classSVF_1_1SVFValue.html">SVF::SVFValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00150">SVFValue.h:150</a></div></div>
650
689
  <div class="ttc" id="acJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
651
690
  <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_afaeae813ff38e010bbe8fe61befb345c"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#afaeae813ff38e010bbe8fe61befb345c">SVF::BVDataPTAImpl::getPtCache</a></div><div class="ttdeci">PersistentPointsToCache&lt; PointsTo &gt; &amp; getPtCache()</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00076">PointerAnalysisImpl.h:76</a></div></div>
652
691
  <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_af68485a2208553579f9c2e4b2cb20cff"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">SVF::BVDataPTAImpl::addPts</a></div><div class="ttdeci">virtual bool addPts(NodeID id, NodeID ptd)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00121">PointerAnalysisImpl.h:121</a></div></div>
692
+ <div class="ttc" id="aclassSVF_1_1NodeIDAllocator_html_a2bd3ca30fc9669d9a0327544bdb4557b"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">SVF::NodeIDAllocator::get</a></div><div class="ttdeci">static NodeIDAllocator * get(void)</div><div class="ttdoc">Return (singleton) allocator.</div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00026">NodeIDAllocator.cpp:26</a></div></div>
653
693
  <div class="ttc" id="acJSON_8cpp_html_a3f9a0d3265a6254722587175dac3e4dc"><div class="ttname"><a href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a></div><div class="ttdeci">newitem type</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02739">cJSON.cpp:2739</a></div></div>
654
694
  <div class="ttc" id="aclassSVF_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#l00385">ICFGNode.h:385</a></div></div>
655
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_ae683914bce36e2d387bc0bc97dfcb14d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae683914bce36e2d387bc0bc97dfcb14d">SVF::SVFIR::NodeOffsetMap</a></div><div class="ttdeci">Map&lt; NodeOffset, NodeID &gt; NodeOffsetMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00069">SVFIR.h:69</a></div></div>
695
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_ae683914bce36e2d387bc0bc97dfcb14d"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae683914bce36e2d387bc0bc97dfcb14d">SVF::SVFIR::NodeOffsetMap</a></div><div class="ttdeci">Map&lt; NodeOffset, NodeID &gt; NodeOffsetMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00070">SVFIR.h:70</a></div></div>
656
696
  <div class="ttc" id="aclassSVF_1_1PTData_html"><div class="ttname"><a href="classSVF_1_1PTData.html">SVF::PTData</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00074">AbstractPointsToDS.h:74</a></div></div>
697
+ <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_af4e17ce3667d40d1a377508a275af384"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#af4e17ce3667d40d1a377508a275af384">SVF::BVDataPTAImpl::readPtsResultFromFile</a></div><div class="ttdeci">virtual void readPtsResultFromFile(std::ifstream &amp;f)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00289">PointerAnalysisImpl.cpp:289</a></div></div>
657
698
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a35bd5f0fb2c146199e9f1aa6a19b4062"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">SVF::PointerAnalysis::CallEdgeMap</a></div><div class="ttdeci">OrderedMap&lt; const CallICFGNode *, FunctionSet &gt; CallEdgeMap</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00106">PointerAnalysis.h:106</a></div></div>
658
699
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a0ab6564c48897595c9d23382a026e0a8"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a0ab6564c48897595c9d23382a026e0a8">SVF::PointerAnalysis::Cxt_DDA</a></div><div class="ttdeci">@ Cxt_DDA</div><div class="ttdoc">context sensitive DDA</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00087">PointerAnalysis.h:87</a></div></div>
659
- <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_a290501006cb700db0e07dc577429c928"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a290501006cb700db0e07dc577429c928">SVF::BVDataPTAImpl::readFromFile</a></div><div class="ttdeci">virtual bool readFromFile(const std::string &amp;filename)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00281">PointerAnalysisImpl.cpp:281</a></div></div>
660
- <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_a7996a2c07b015e8557398ec10db1acef"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a7996a2c07b015e8557398ec10db1acef">SVF::BVDataPTAImpl::dumpAllPts</a></div><div class="ttdeci">void dumpAllPts() override</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00436">PointerAnalysisImpl.cpp:436</a></div></div>
700
+ <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_a290501006cb700db0e07dc577429c928"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a290501006cb700db0e07dc577429c928">SVF::BVDataPTAImpl::readFromFile</a></div><div class="ttdeci">virtual bool readFromFile(const std::string &amp;filename)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00405">PointerAnalysisImpl.cpp:405</a></div></div>
701
+ <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_a7996a2c07b015e8557398ec10db1acef"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a7996a2c07b015e8557398ec10db1acef">SVF::BVDataPTAImpl::dumpAllPts</a></div><div class="ttdeci">void dumpAllPts() override</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00471">PointerAnalysisImpl.cpp:471</a></div></div>
702
+ <div class="ttc" id="aclassSVF_1_1FIObjVar_html"><div class="ttname"><a href="classSVF_1_1FIObjVar.html">SVF::FIObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00529">SVFVariables.h:529</a></div></div>
661
703
  <div class="ttc" id="aclassSVF_1_1Options_html_a1743b8a1ab2d71c35206c7befa725d90"><div class="ttname"><a href="classSVF_1_1Options.html#a1743b8a1ab2d71c35206c7befa725d90">SVF::Options::INCDFPTData</a></div><div class="ttdeci">static const Option&lt; bool &gt; INCDFPTData</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00148">Options.h:148</a></div></div>
662
704
  <div class="ttc" id="aclassSVF_1_1PointsTo_html_ab196d86cfb48d1c5d27a0c03c7497afa"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">SVF::PointsTo::set</a></div><div class="ttdeci">void set(u32_t n)</div><div class="ttdoc">Inserts n in the set.</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00157">PointsTo.cpp:157</a></div></div>
663
705
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a8d128246f86f28fdf4981d91169ab440"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a8d128246f86f28fdf4981d91169ab440">SVF::PointerAnalysis::resolveIndCalls</a></div><div class="ttdeci">virtual void resolveIndCalls(const CallICFGNode *cs, const PointsTo &amp;target, CallEdgeMap &amp;newEdges)</div><div class="ttdoc">Resolve indirect call edges.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00387">PointerAnalysis.cpp:387</a></div></div>
@@ -665,29 +707,30 @@ $(function() {
665
707
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_ac04b64a5884710508b304f93da88c7ba"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac04b64a5884710508b304f93da88c7ba">SVF::PointerAnalysis::resolveCPPIndCalls</a></div><div class="ttdeci">virtual void resolveCPPIndCalls(const CallICFGNode *cs, const PointsTo &amp;target, CallEdgeMap &amp;newEdges)</div><div class="ttdoc">Resolve cpp indirect call edges.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00490">PointerAnalysis.cpp:490</a></div></div>
666
708
  <div class="ttc" id="aclassSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00045">SVFVariables.h:45</a></div></div>
667
709
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_ac5683fe2e24b393ccc5cb6d8bc92cf2b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac5683fe2e24b393ccc5cb6d8bc92cf2b">SVF::PointerAnalysis::setObjFieldInsensitive</a></div><div class="ttdeci">void setObjFieldInsensitive(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00349">PointerAnalysis.h:349</a></div></div>
668
- <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_a236d3e9c894fd7c34c8d7a77ac11dd48"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a236d3e9c894fd7c34c8d7a77ac11dd48">SVF::BVDataPTAImpl::alias</a></div><div class="ttdeci">AliasResult alias(const SVFValue *V1, const SVFValue *V2) override</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Value infos.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00539">PointerAnalysisImpl.cpp:539</a></div></div>
710
+ <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_a236d3e9c894fd7c34c8d7a77ac11dd48"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a236d3e9c894fd7c34c8d7a77ac11dd48">SVF::BVDataPTAImpl::alias</a></div><div class="ttdeci">AliasResult alias(const SVFValue *V1, const SVFValue *V2) override</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Value infos.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00574">PointerAnalysisImpl.cpp:574</a></div></div>
669
711
  <div class="ttc" id="aclassSVF_1_1CallSite_html_a427a38e580db4bf04c9d716762243c89"><div class="ttname"><a href="classSVF_1_1CallSite.html#a427a38e580db4bf04c9d716762243c89">SVF::CallSite::isVirtualCall</a></div><div class="ttdeci">bool isVirtualCall() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01134">SVFValue.h:1134</a></div></div>
670
712
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a62281bc39fea50a88e55edf605620322"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a62281bc39fea50a88e55edf605620322">SVF::PointerAnalysis::FSDATAFLOW_WPA</a></div><div class="ttdeci">@ FSDATAFLOW_WPA</div><div class="ttdoc">Traditional Dataflow-based flow sensitive WPA.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00074">PointerAnalysis.h:74</a></div></div>
671
713
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">SVF::PointerAnalysis::AndersenWaveDiff_WPA</a></div><div class="ttdeci">@ AndersenWaveDiff_WPA</div><div class="ttdoc">Diff wave propagation andersen-style WPA.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00070">PointerAnalysis.h:70</a></div></div>
672
714
  <div class="ttc" id="aclassSVF_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#l00406">GenericGraph.h:406</a></div></div>
673
- <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_ae94cea78b71fb75837ee2a17b5ed0e81"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">SVF::BVDataPTAImpl::getPTDataTy</a></div><div class="ttdeci">PTDataTy * getPTDataTy() const</div><div class="ttdoc">Get points-to data structure.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00150">PointerAnalysisImpl.h:150</a></div></div>
674
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_ab6abb822445c9b3f5cb2b7206042e940"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ab6abb822445c9b3f5cb2b7206042e940">SVF::SVFIR::MemObjToFieldsMap</a></div><div class="ttdeci">Map&lt; NodeID, NodeBS &gt; MemObjToFieldsMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00056">SVFIR.h:56</a></div></div>
715
+ <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_ae94cea78b71fb75837ee2a17b5ed0e81"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">SVF::BVDataPTAImpl::getPTDataTy</a></div><div class="ttdeci">PTDataTy * getPTDataTy() const</div><div class="ttdoc">Get points-to data structure.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00155">PointerAnalysisImpl.h:155</a></div></div>
716
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_ab6abb822445c9b3f5cb2b7206042e940"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ab6abb822445c9b3f5cb2b7206042e940">SVF::SVFIR::MemObjToFieldsMap</a></div><div class="ttdeci">Map&lt; NodeID, NodeBS &gt; MemObjToFieldsMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00057">SVFIR.h:57</a></div></div>
675
717
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">SVF::PointerAnalysis::TypeCPP_WPA</a></div><div class="ttdeci">@ TypeCPP_WPA</div><div class="ttdoc">Type-based analysis for C++.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00081">PointerAnalysis.h:81</a></div></div>
676
718
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_ade83738ac754d5ffc2a3b497b600cad4"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ade83738ac754d5ffc2a3b497b600cad4">SVF::PointerAnalysis::ptaTy</a></div><div class="ttdeci">PTATY ptaTy</div><div class="ttdoc">Pointer analysis Type.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00146">PointerAnalysis.h:146</a></div></div>
677
719
  <div class="ttc" id="aclassSVF_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#l00142">PointerAnalysis.h:142</a></div></div>
678
- <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_aa534e475fa34fa322c567bc376a3da70"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aa534e475fa34fa322c567bc376a3da70">SVF::BVDataPTAImpl::updateCallGraph</a></div><div class="ttdeci">virtual bool updateCallGraph(const CallSiteToFunPtrMap &amp;)</div><div class="ttdoc">Update callgraph. This should be implemented by its subclass.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00160">PointerAnalysisImpl.h:160</a></div></div>
720
+ <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_aa534e475fa34fa322c567bc376a3da70"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aa534e475fa34fa322c567bc376a3da70">SVF::BVDataPTAImpl::updateCallGraph</a></div><div class="ttdeci">virtual bool updateCallGraph(const CallSiteToFunPtrMap &amp;)</div><div class="ttdoc">Update callgraph. This should be implemented by its subclass.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00165">PointerAnalysisImpl.h:165</a></div></div>
721
+ <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_a5e782fb9a94a62403046c483ca4176c3"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a5e782fb9a94a62403046c483ca4176c3">SVF::BVDataPTAImpl::writeGepObjVarMapToFile</a></div><div class="ttdeci">virtual void writeGepObjVarMapToFile(std::fstream &amp;f)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00224">PointerAnalysisImpl.cpp:224</a></div></div>
679
722
  <div class="ttc" id="aclassSVF_1_1SparseBitVector_html_a112f2ede1240c95f9fe810f2882fab80"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">SVF::SparseBitVector::test</a></div><div class="ttdeci">bool test(unsigned Idx) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00708">SparseBitVector.h:708</a></div></div>
680
- <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_a9830d4676fd424b633f8e4d918734296"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a9830d4676fd424b633f8e4d918734296">SVF::BVDataPTAImpl::onTheFlyCallGraphSolve</a></div><div class="ttdeci">virtual void onTheFlyCallGraphSolve(const CallSiteToFunPtrMap &amp;callsites, CallEdgeMap &amp;newEdges)</div><div class="ttdoc">On the fly call graph construction.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00459">PointerAnalysisImpl.cpp:459</a></div></div>
723
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a43ffcccfd81f5400c2d4c8e4bd71bdde"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a43ffcccfd81f5400c2d4c8e4bd71bdde">SVF::SVFIR::NodeOffset</a></div><div class="ttdeci">std::pair&lt; NodeID, APOffset &gt; NodeOffset</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00068">SVFIR.h:68</a></div></div>
724
+ <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_a9830d4676fd424b633f8e4d918734296"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a9830d4676fd424b633f8e4d918734296">SVF::BVDataPTAImpl::onTheFlyCallGraphSolve</a></div><div class="ttdeci">virtual void onTheFlyCallGraphSolve(const CallSiteToFunPtrMap &amp;callsites, CallEdgeMap &amp;newEdges)</div><div class="ttdoc">On the fly call graph construction.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00494">PointerAnalysisImpl.cpp:494</a></div></div>
681
725
  <div class="ttc" id="acJSON_8cpp_html_a95bf816579e97b6f33bdb5e25ed6d5de"><div class="ttname"><a href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a></div><div class="ttdeci">buffer offset</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01113">cJSON.cpp:1113</a></div></div>
682
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_ad6e18f520f6b559f2304002792f6b701"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad6e18f520f6b559f2304002792f6b701">SVF::SVFIR::getModule</a></div><div class="ttdeci">SVFModule * getModule()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00159">SVFIR.h:159</a></div></div>
726
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_ad6e18f520f6b559f2304002792f6b701"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad6e18f520f6b559f2304002792f6b701">SVF::SVFIR::getModule</a></div><div class="ttdeci">SVFModule * getModule()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00160">SVFIR.h:160</a></div></div>
683
727
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6">SVF::PointerAnalysis::Andersen_WPA</a></div><div class="ttdeci">@ Andersen_WPA</div><div class="ttdoc">Andersen PTA.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00067">PointerAnalysis.h:67</a></div></div>
684
- <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_a25c68f9d2b88437778e854ff0d741d1b"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a25c68f9d2b88437778e854ff0d741d1b">SVF::BVDataPTAImpl::writeToFile</a></div><div class="ttdeci">virtual void writeToFile(const std::string &amp;filename)</div><div class="ttdoc">Interface for analysis result storage on filesystem.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00203">PointerAnalysisImpl.cpp:203</a></div></div>
728
+ <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_a25c68f9d2b88437778e854ff0d741d1b"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a25c68f9d2b88437778e854ff0d741d1b">SVF::BVDataPTAImpl::writeToFile</a></div><div class="ttdeci">virtual void writeToFile(const std::string &amp;filename)</div><div class="ttdoc">Interface for analysis result storage on filesystem.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00246">PointerAnalysisImpl.cpp:246</a></div></div>
685
729
  <div class="ttc" id="aclassSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00380">GenericGraph.h:380</a></div></div>
686
730
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b">SVF::PointerAnalysis::AndersenSFR_WPA</a></div><div class="ttdeci">@ AndersenSFR_WPA</div><div class="ttdoc">Stride-based field representation.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00069">PointerAnalysis.h:69</a></div></div>
687
731
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00050">SVFUtil.h:50</a></div></div>
688
732
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a5d3c3094e263bf16a4f312a118c1bd36"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5d3c3094e263bf16a4f312a118c1bd36">SVF::PointerAnalysis::ptaImplTy</a></div><div class="ttdeci">PTAImplTy ptaImplTy</div><div class="ttdoc">PTA implementation type.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00148">PointerAnalysis.h:148</a></div></div>
689
733
  <div class="ttc" id="aclassSVF_1_1PointsTo_html_a13746982a11d0cab57e5919d53bfbec8"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a13746982a11d0cab57e5919d53bfbec8">SVF::PointsTo::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdoc">Returns true if set is empty.</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00098">PointsTo.cpp:98</a></div></div>
690
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_ae18425df0631aefca7dd4b799f6f524a"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae18425df0631aefca7dd4b799f6f524a">SVF::SVFIR::getGepObjVar</a></div><div class="ttdeci">NodeID getGepObjVar(const MemObj *obj, const APOffset &amp;ap)</div><div class="ttdoc">Get a field SVFIR Object node according to base mem obj and offset.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00422">SVFIR.cpp:422</a></div></div>
691
734
  <div class="ttc" id="aclassSVF_1_1GenericGraph_html_ac213302cf5c7cdf3b66f7b18649d0fbc"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::iterator</a></div><div class="ttdeci">IDToNodeMapTy::iterator iterator</div><div class="ttdoc">Node Iterators.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00359">GenericGraph.h:359</a></div></div>
692
735
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a">SVF::PointerAnalysis::Steensgaard_WPA</a></div><div class="ttdeci">@ Steensgaard_WPA</div><div class="ttdoc">Steensgaard PTA.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00071">PointerAnalysis.h:71</a></div></div>
693
736
  <div class="ttc" id="aclassSVF_1_1GepObjVar_html"><div class="ttname"><a href="classSVF_1_1GepObjVar.html">SVF::GepObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00448">SVFVariables.h:448</a></div></div>
@@ -697,20 +740,22 @@ $(function() {
697
740
  <div class="ttc" id="aclassSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
698
741
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a164c6de3baace1c63db75a228a5816bb"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a164c6de3baace1c63db75a228a5816bb">SVF::PointerAnalysis::CFLFICI_WPA</a></div><div class="ttdeci">@ CFLFICI_WPA</div><div class="ttdoc">Flow-, context-, insensitive CFL-reachability-based analysis.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00078">PointerAnalysis.h:78</a></div></div>
699
742
  <div class="ttc" id="aSVFFileSystem_8cpp_html_ab25baccb41e3b67ef0bfdaa1336c9649"><div class="ttname"><a href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a></div><div class="ttdeci">#define F(f)</div></div>
700
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_a7276e82b4648ed0e1b3d1b8b37b24089"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">SVF::SVFIR::getAllFieldsObjVars</a></div><div class="ttdeci">NodeBS &amp; getAllFieldsObjVars(const MemObj *obj)</div><div class="ttdoc">Get all fields of an object.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00475">SVFIR.cpp:475</a></div></div>
743
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a7276e82b4648ed0e1b3d1b8b37b24089"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">SVF::SVFIR::getAllFieldsObjVars</a></div><div class="ttdeci">NodeBS &amp; getAllFieldsObjVars(const MemObj *obj)</div><div class="ttdoc">Get all fields of an object.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00477">SVFIR.cpp:477</a></div></div>
744
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_a685991a5dec8a17fe73b3161fdb9ea7e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a685991a5dec8a17fe73b3161fdb9ea7e">SVF::SVFIR::addGepObjNode</a></div><div class="ttdeci">NodeID addGepObjNode(const MemObj *obj, const APOffset &amp;apOffset, const NodeID gepId)</div><div class="ttdoc">Add a field obj node, this method can only invoked by getGepObjVar.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00449">SVFIR.cpp:449</a></div></div>
701
745
  <div class="ttc" id="aclassSVF_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#l00292">PointerAnalysis.h:292</a></div></div>
702
- <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_ad34eea2a5ec26e0b2b6a78914879f989"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ad34eea2a5ec26e0b2b6a78914879f989">SVF::BVDataPTAImpl::dumpTopLevelPtsTo</a></div><div class="ttdeci">void dumpTopLevelPtsTo() override</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00403">PointerAnalysisImpl.cpp:403</a></div></div>
746
+ <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_ad34eea2a5ec26e0b2b6a78914879f989"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ad34eea2a5ec26e0b2b6a78914879f989">SVF::BVDataPTAImpl::dumpTopLevelPtsTo</a></div><div class="ttdeci">void dumpTopLevelPtsTo() override</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00438">PointerAnalysisImpl.cpp:438</a></div></div>
703
747
  <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_a798c84d5e861de2b61bcb1a86385f721"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a798c84d5e861de2b61bcb1a86385f721">SVF::BVDataPTAImpl::expandFIObjs</a></div><div class="ttdeci">virtual void expandFIObjs(const PointsTo &amp;pts, PointsTo &amp;expandedPts)</div><div class="ttdoc">Expand FI objects.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00133">PointerAnalysisImpl.cpp:133</a></div></div>
704
- <div class="ttc" id="aclassSVF_1_1SVFIR_html_ac1674bd25a17cae24141e6bff24a411e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac1674bd25a17cae24141e6bff24a411e">SVF::SVFIR::getGepObjNodeMap</a></div><div class="ttdeci">NodeOffsetMap &amp; getGepObjNodeMap()</div><div class="ttdoc">Return GepObjVarMap.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
748
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_ac1674bd25a17cae24141e6bff24a411e"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac1674bd25a17cae24141e6bff24a411e">SVF::SVFIR::getGepObjNodeMap</a></div><div class="ttdeci">NodeOffsetMap &amp; getGepObjNodeMap()</div><div class="ttdoc">Return GepObjVarMap.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00133">SVFIR.h:133</a></div></div>
705
749
  <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_a3279969934d6778a6cffe926ed724bfc"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a3279969934d6778a6cffe926ed724bfc">SVF::BVDataPTAImpl::writeObjVarToFile</a></div><div class="ttdeci">virtual void writeObjVarToFile(const std::string &amp;filename)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00162">PointerAnalysisImpl.cpp:162</a></div></div>
706
- <div class="ttc" id="aclassSVF_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#l00381">SVFIR.h:381</a></div></div>
750
+ <div class="ttc" id="aclassSVF_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#l00382">SVFIR.h:382</a></div></div>
707
751
  <div class="ttc" id="aclassSVF_1_1Options_html_aaab923c093730b1670a54f09340b1bd5"><div class="ttname"><a href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">SVF::Options::MaxFieldLimit</a></div><div class="ttdeci">static const Option&lt; u32_t &gt; MaxFieldLimit</div><div class="ttdoc">Maximum number of field derivations for an object.</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00038">Options.h:38</a></div></div>
708
752
  <div class="ttc" id="anamespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
709
753
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_ad95c842964e6ca46e51fb763fefec585"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">SVF::PointerAnalysis::CallSiteToFunPtrMap</a></div><div class="ttdeci">SVFIR::CallSiteToFunPtrMap CallSiteToFunPtrMap</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00104">PointerAnalysis.h:104</a></div></div>
710
754
  <div class="ttc" id="aclassSVF_1_1Options_html_ae3c3cc703ef35987a32aa808038a1307"><div class="ttname"><a href="classSVF_1_1Options.html#ae3c3cc703ef35987a32aa808038a1307">SVF::Options::ptDataBacking</a></div><div class="ttdeci">static const OptionMap&lt; BVDataPTAImpl::PTBackingType &gt; ptDataBacking</div><div class="ttdoc">PTData type.</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00069">Options.h:69</a></div></div>
711
755
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ae18227f257c9881541b84ca186680dfd"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ae18227f257c9881541b84ca186680dfd">SVF::SVFUtil::split</a></div><div class="ttdeci">std::vector&lt; std::string &gt; split(const std::string &amp;s, char separator)</div><div class="ttdoc">Split into two substrings around the first occurrence of a separator string.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00218">SVFUtil.h:218</a></div></div>
756
+ <div class="ttc" id="aclassSVF_1_1DummyObjVar_html"><div class="ttname"><a href="classSVF_1_1DummyObjVar.html">SVF::DummyObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00708">SVFVariables.h:708</a></div></div>
712
757
  <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_ac9897a09cad8a99169f2da2116807b1b"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ac9897a09cad8a99169f2da2116807b1b">SVF::BVDataPTAImpl::getPts</a></div><div class="ttdeci">const PointsTo &amp; getPts(NodeID id) override</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00088">PointerAnalysisImpl.h:88</a></div></div>
713
- <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_ab283427a420ab349da4920ec10b7e1cd"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">std::unique_ptr&lt; PTDataTy &gt; ptD</div><div class="ttdoc">Points-to data.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00203">PointerAnalysisImpl.h:203</a></div></div>
758
+ <div class="ttc" id="aclassSVF_1_1BVDataPTAImpl_html_ab283427a420ab349da4920ec10b7e1cd"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ab283427a420ab349da4920ec10b7e1cd">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">std::unique_ptr&lt; PTDataTy &gt; ptD</div><div class="ttdoc">Points-to data.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00208">PointerAnalysisImpl.h:208</a></div></div>
714
759
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49">SVF::PointerAnalysis::Andersen_BASE</a></div><div class="ttdeci">@ Andersen_BASE</div><div class="ttdoc">Base Andersen PTA.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00066">PointerAnalysis.h:66</a></div></div>
715
760
  <div class="ttc" id="aclassSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00380">SymbolTableInfo.h:380</a></div></div>
716
761
  <div class="ttc" id="aclassSVF_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#l00028">PointsTo.h:28</a></div></div>