svf-tools 1.0.409 → 1.0.412

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 (210) hide show
  1. package/CMakeLists.txt +1 -1
  2. package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +1 -1
  3. package/SVF-doxygen/html/html/AndersenHLCD_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
  6. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +1 -1
  7. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +3 -3
  8. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +3 -3
  9. package/SVF-doxygen/html/html/Andersen_8h_source.html +3 -3
  10. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
  11. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
  12. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +7 -7
  15. package/SVF-doxygen/html/html/DDAStat_8h_source.html +5 -5
  16. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +2 -2
  19. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +3 -2
  20. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +2 -2
  21. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +7 -6
  22. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +3 -3
  23. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
  24. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  26. package/SVF-doxygen/html/html/MHP_8cpp.html +2 -83
  27. package/SVF-doxygen/html/html/MHP_8cpp_source.html +42 -46
  28. package/SVF-doxygen/html/html/MHP_8h_source.html +26 -26
  29. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +2 -2
  30. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +1 -1
  31. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +2 -2
  32. package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +3 -3
  34. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +10 -10
  35. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +9 -9
  36. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +11 -11
  37. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +8 -8
  38. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +9 -9
  39. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +30 -31
  40. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
  41. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +33 -34
  42. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +9 -9
  43. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +8 -7
  44. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +3 -3
  45. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  46. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +1 -1
  48. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +3 -3
  49. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
  50. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +2 -2
  51. package/SVF-doxygen/html/html/TCT_8cpp_source.html +14 -14
  52. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  53. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +3 -3
  54. package/SVF-doxygen/html/html/VFG_8cpp_source.html +1 -1
  55. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +6 -5
  56. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +214 -215
  57. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +15 -16
  58. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +180 -181
  59. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +1 -4
  60. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +226 -227
  61. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +0 -3
  62. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +232 -233
  63. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +2 -5
  64. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +222 -223
  65. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +3 -6
  66. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +222 -223
  67. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -4
  68. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +152 -154
  69. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +9 -12
  70. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +3 -3
  71. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +221 -222
  72. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +0 -3
  73. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +132 -133
  74. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +28 -33
  75. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +2 -4
  76. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +10 -10
  77. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +1 -1
  78. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +3 -3
  79. package/SVF-doxygen/html/html/classSVF_1_1DDAStat-members.html +4 -4
  80. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +34 -25
  81. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +16 -16
  82. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +3 -3
  83. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +247 -248
  84. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +2 -5
  85. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +208 -209
  86. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +8 -11
  87. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +238 -239
  88. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +21 -24
  89. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +2 -2
  90. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +275 -276
  91. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +8 -10
  92. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +31 -31
  93. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +2 -2
  94. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +38 -38
  95. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode-members.html +13 -14
  96. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +19 -43
  97. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +2 -2
  98. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
  99. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +74 -74
  100. package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +7 -7
  101. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
  102. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
  103. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +4 -4
  104. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +5 -5
  105. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +2 -2
  106. package/SVF-doxygen/html/html/classSVF_1_1MemObj-members.html +1 -1
  107. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +8 -8
  108. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +3 -3
  109. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat-members.html +2 -2
  110. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +15 -14
  111. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +33 -33
  112. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +3 -3
  113. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +94 -95
  114. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +73 -107
  115. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +1 -1
  116. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +4 -4
  117. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +11 -13
  118. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat-members.html +6 -6
  119. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +53 -52
  120. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +15 -30
  121. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +2 -2
  122. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +3 -3
  123. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +193 -194
  124. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +0 -3
  125. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +18 -18
  126. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
  127. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +184 -185
  128. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -5
  129. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +3 -3
  130. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +1 -1
  131. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +287 -288
  132. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +8 -10
  133. package/SVF-doxygen/html/html/functions_0x7e.html +1 -1
  134. package/SVF-doxygen/html/html/functions_c.html +18 -21
  135. package/SVF-doxygen/html/html/functions_func_0x7e.html +1 -1
  136. package/SVF-doxygen/html/html/functions_func_c.html +12 -13
  137. package/SVF-doxygen/html/html/functions_func_p.html +9 -9
  138. package/SVF-doxygen/html/html/functions_l.html +3 -3
  139. package/SVF-doxygen/html/html/functions_m.html +4 -4
  140. package/SVF-doxygen/html/html/functions_o.html +4 -4
  141. package/SVF-doxygen/html/html/functions_p.html +12 -12
  142. package/SVF-doxygen/html/html/functions_r.html +5 -4
  143. package/SVF-doxygen/html/html/functions_s.html +3 -3
  144. package/SVF-doxygen/html/html/functions_t.html +5 -7
  145. package/SVF-doxygen/html/html/functions_v.html +6 -6
  146. package/SVF-doxygen/html/html/functions_vars_m.html +4 -4
  147. package/SVF-doxygen/html/html/functions_vars_r.html +1 -2
  148. package/SVF-doxygen/html/html/globals_func_g.html +0 -6
  149. package/SVF-doxygen/html/html/globals_g.html +2 -8
  150. package/SVF-doxygen/html/html/globals_s.html +4 -2
  151. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -2
  152. package/SVF-doxygen/html/html/search/all_10.js +7 -7
  153. package/SVF-doxygen/html/html/search/all_12.js +3 -3
  154. package/SVF-doxygen/html/html/search/all_13.js +7 -7
  155. package/SVF-doxygen/html/html/search/all_14.js +4 -4
  156. package/SVF-doxygen/html/html/search/all_16.js +3 -3
  157. package/SVF-doxygen/html/html/search/all_1b.js +1 -1
  158. package/SVF-doxygen/html/html/search/all_3.js +1 -1
  159. package/SVF-doxygen/html/html/search/all_7.js +0 -2
  160. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  161. package/SVF-doxygen/html/html/search/all_d.js +4 -4
  162. package/SVF-doxygen/html/html/search/all_e.js +1 -1
  163. package/SVF-doxygen/html/html/search/all_f.js +3 -3
  164. package/SVF-doxygen/html/html/search/functions_10.js +1 -1
  165. package/SVF-doxygen/html/html/search/functions_16.js +1 -1
  166. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  167. package/SVF-doxygen/html/html/search/functions_6.js +0 -2
  168. package/SVF-doxygen/html/html/search/functions_e.js +6 -6
  169. package/SVF-doxygen/html/html/search/variables_12.js +1 -1
  170. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  171. package/SVF-doxygen/html/html/search/variables_d.js +4 -4
  172. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  173. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +14 -14
  174. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SVFGNodeLockSpan_01_4.html +3 -3
  175. package/SVF-doxygen/html/html/svf-ex_8cpp.html +4 -3
  176. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +2 -1
  177. package/include/DDA/DDAStat.h +4 -4
  178. package/include/Graphs/SVFGNode.h +2 -4
  179. package/include/Graphs/SVFGStat.h +8 -8
  180. package/include/MTA/FSMPTA.h +1 -0
  181. package/include/MTA/MTAResultValidator.h +1 -1
  182. package/include/MemoryModel/AbstractPointsToDS.h +6 -0
  183. package/include/MemoryModel/PointerAnalysis.h +0 -5
  184. package/include/MemoryModel/SymbolTableInfo.h +2 -2
  185. package/include/Util/IRAnnotator.h +2 -2
  186. package/include/WPA/Andersen.h +1 -1
  187. package/include/WPA/AndersenSFR.h +1 -1
  188. package/lib/CUDD/CMakeLists.txt +1 -1
  189. package/lib/DDA/DDAStat.cpp +2 -2
  190. package/lib/Graphs/SVFGStat.cpp +4 -4
  191. package/lib/MSSA/SVFGBuilder.cpp +0 -1
  192. package/lib/MTA/FSMPTA.cpp +2 -3
  193. package/lib/MTA/LockResultValidator.cpp +1 -1
  194. package/lib/MTA/MHP.cpp +0 -36
  195. package/lib/MTA/MTAResultValidator.cpp +3 -3
  196. package/lib/MTA/TCT.cpp +0 -1
  197. package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
  198. package/lib/MemoryModel/PointerAnalysisImpl.cpp +0 -1
  199. package/lib/MemoryModel/SVFIR.cpp +15 -15
  200. package/lib/MemoryModel/SymbolTableInfo.cpp +1 -1
  201. package/lib/SVF-FE/LLVMUtil.cpp +1 -1
  202. package/lib/SVF-FE/SVFIRBuilder.cpp +5 -5
  203. package/lib/Util/CoreBitVector.cpp +1 -1
  204. package/lib/Util/ExtAPI.cpp +1 -0
  205. package/lib/Util/NodeIDAllocator.cpp +0 -1
  206. package/lib/WPA/AndersenSFR.cpp +2 -2
  207. package/lib/WPA/FlowSensitiveTBHC.cpp +1 -1
  208. package/lib/WPA/VersionedFlowSensitive.cpp +4 -4
  209. package/package.json +1 -1
  210. package/tools/Example/svf-ex.cpp +4 -3
@@ -314,9 +314,6 @@ Public Member Functions</h2></td></tr>
314
314
  <tr class="memitem:a0bb90b398ef85504bcd816ae57bee01d inherit pub_methods_classSVF_1_1PointerAnalysis"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PointerAnalysis.html#a0bb90b398ef85504bcd816ae57bee01d">computeDDAPts</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>)</td></tr>
315
315
  <tr class="memdesc:a0bb90b398ef85504bcd816ae57bee01d inherit pub_methods_classSVF_1_1PointerAnalysis"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute points-to results on-demand, overridden by derived classes. <a href="classSVF_1_1PointerAnalysis.html#a0bb90b398ef85504bcd816ae57bee01d">More...</a><br /></td></tr>
316
316
  <tr class="separator:a0bb90b398ef85504bcd816ae57bee01d inherit pub_methods_classSVF_1_1PointerAnalysis"><td class="memSeparator" colspan="2">&#160;</td></tr>
317
- <tr class="memitem:a3f78f60e1947a6d6fbcd3a0ee11e262a inherit pub_methods_classSVF_1_1PointerAnalysis"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PointerAnalysis.html#a3f78f60e1947a6d6fbcd3a0ee11e262a">clearPts</a> ()</td></tr>
318
- <tr class="memdesc:a3f78f60e1947a6d6fbcd3a0ee11e262a inherit pub_methods_classSVF_1_1PointerAnalysis"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear points-to data. <a href="classSVF_1_1PointerAnalysis.html#a3f78f60e1947a6d6fbcd3a0ee11e262a">More...</a><br /></td></tr>
319
- <tr class="separator:a3f78f60e1947a6d6fbcd3a0ee11e262a inherit pub_methods_classSVF_1_1PointerAnalysis"><td class="memSeparator" colspan="2">&#160;</td></tr>
320
317
  <tr class="memitem:a84edebc59e29f2cc1b89a699b8641f30 inherit pub_methods_classSVF_1_1PointerAnalysis"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PointerAnalysis.html#a84edebc59e29f2cc1b89a699b8641f30">printIndCSTargets</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *cs, const <a class="el" href="classSVF_1_1PointerAnalysis.html#ac1422cd8b449fdb4a1f7c539364e4c41">FunctionSet</a> &amp;targets)</td></tr>
321
318
  <tr class="memdesc:a84edebc59e29f2cc1b89a699b8641f30 inherit pub_methods_classSVF_1_1PointerAnalysis"><td class="mdescLeft">&#160;</td><td class="mdescRight">Print targets of a function pointer. <a href="classSVF_1_1PointerAnalysis.html#a84edebc59e29f2cc1b89a699b8641f30">More...</a><br /></td></tr>
322
319
  <tr class="separator:a84edebc59e29f2cc1b89a699b8641f30 inherit pub_methods_classSVF_1_1PointerAnalysis"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -972,8 +969,8 @@ Additional Inherited Members</h2></td></tr>
972
969
 
973
970
  <p>Implements <a class="el" href="classSVF_1_1PointerAnalysis.html#abd9da46106d820721a24201caaa164e1">SVF::PointerAnalysis</a>.</p>
974
971
 
975
- <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00452">452</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
976
- <div class="fragment"><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;{</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">alias</a>(LocA.Ptr, LocB.Ptr);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;}</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ad06fbd9a51499c668662b533eeb2e4ac"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">SVF::BVDataPTAImpl::alias</a></div><div class="ttdeci">virtual AliasResult alias(const MemoryLocation &amp;LocA, const MemoryLocation &amp;LocB)</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Location infos. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00452">PointerAnalysisImpl.cpp:452</a></div></div>
972
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00451">451</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
973
+ <div class="fragment"><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;{</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">alias</a>(LocA.Ptr, LocB.Ptr);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;}</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ad06fbd9a51499c668662b533eeb2e4ac"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">SVF::BVDataPTAImpl::alias</a></div><div class="ttdeci">virtual AliasResult alias(const MemoryLocation &amp;LocA, const MemoryLocation &amp;LocB)</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Location infos. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00451">PointerAnalysisImpl.cpp:451</a></div></div>
977
974
  </div><!-- fragment -->
978
975
  </div>
979
976
  </div>
@@ -1016,10 +1013,10 @@ Additional Inherited Members</h2></td></tr>
1016
1013
 
1017
1014
  <p>Implements <a class="el" href="classSVF_1_1PointerAnalysis.html#a6c01f259ad2379a422d7106ce0255eb8">SVF::PointerAnalysis</a>.</p>
1018
1015
 
1019
- <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00461">461</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
1020
- <div class="fragment"><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;{</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">alias</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(V1),<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(V2));</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;}</div><div class="ttc" id="classSVF_1_1IRGraph_html_abffddd41cc308b9b3bd5ad4a7f8f1624"><div class="ttname"><a href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00120">IRGraph.h:120</a></div></div>
1016
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00460">460</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
1017
+ <div class="fragment"><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;{</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">alias</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(V1),<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(V2));</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;}</div><div class="ttc" id="classSVF_1_1IRGraph_html_abffddd41cc308b9b3bd5ad4a7f8f1624"><div class="ttname"><a href="classSVF_1_1IRGraph.html#abffddd41cc308b9b3bd5ad4a7f8f1624">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00120">IRGraph.h:120</a></div></div>
1021
1018
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
1022
- <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ad06fbd9a51499c668662b533eeb2e4ac"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">SVF::BVDataPTAImpl::alias</a></div><div class="ttdeci">virtual AliasResult alias(const MemoryLocation &amp;LocA, const MemoryLocation &amp;LocB)</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Location infos. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00452">PointerAnalysisImpl.cpp:452</a></div></div>
1019
+ <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ad06fbd9a51499c668662b533eeb2e4ac"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">SVF::BVDataPTAImpl::alias</a></div><div class="ttdeci">virtual AliasResult alias(const MemoryLocation &amp;LocA, const MemoryLocation &amp;LocB)</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Location infos. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00451">PointerAnalysisImpl.cpp:451</a></div></div>
1023
1020
  </div><!-- fragment -->
1024
1021
  </div>
1025
1022
  </div>
@@ -1062,9 +1059,9 @@ Additional Inherited Members</h2></td></tr>
1062
1059
 
1063
1060
  <p>Implements <a class="el" href="classSVF_1_1PointerAnalysis.html#a0f712ead1f31750879948c36b2fc77cf">SVF::PointerAnalysis</a>.</p>
1064
1061
 
1065
- <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00470">470</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
1066
- <div class="fragment"><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;{</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">alias</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(node1),<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(node2));</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;}</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee289e298e421448caaa604b7eb34fcb"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">SVF::BVDataPTAImpl::getPts</a></div><div class="ttdeci">virtual const PointsTo &amp; getPts(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00099">PointerAnalysisImpl.h:99</a></div></div>
1067
- <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ad06fbd9a51499c668662b533eeb2e4ac"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">SVF::BVDataPTAImpl::alias</a></div><div class="ttdeci">virtual AliasResult alias(const MemoryLocation &amp;LocA, const MemoryLocation &amp;LocB)</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Location infos. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00452">PointerAnalysisImpl.cpp:452</a></div></div>
1062
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00469">469</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
1063
+ <div class="fragment"><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;{</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">alias</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(node1),<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(node2));</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;}</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee289e298e421448caaa604b7eb34fcb"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">SVF::BVDataPTAImpl::getPts</a></div><div class="ttdeci">virtual const PointsTo &amp; getPts(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00099">PointerAnalysisImpl.h:99</a></div></div>
1064
+ <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ad06fbd9a51499c668662b533eeb2e4ac"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">SVF::BVDataPTAImpl::alias</a></div><div class="ttdeci">virtual AliasResult alias(const MemoryLocation &amp;LocA, const MemoryLocation &amp;LocB)</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Location infos. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00451">PointerAnalysisImpl.cpp:451</a></div></div>
1068
1065
  </div><!-- fragment -->
1069
1066
  </div>
1070
1067
  </div>
@@ -1105,8 +1102,8 @@ Additional Inherited Members</h2></td></tr>
1105
1102
  <p>Interface expose to users of our pointer analysis, given two pts. </p>
1106
1103
  <p>Return alias results based on our points-to/alias analysis </p>
1107
1104
 
1108
- <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00478">478</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
1109
- <div class="fragment"><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;{</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts1;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a798c84d5e861de2b61bcb1a86385f721">expandFIObjs</a>(p1,pts1);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts2;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a798c84d5e861de2b61bcb1a86385f721">expandFIObjs</a>(p2,pts2);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</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><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">AliasResult::MayAlias</a>;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">AliasResult::NoAlias</a>;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a56368369bc37e37b13f19e5eb1890063"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a56368369bc37e37b13f19e5eb1890063">SVF::PointerAnalysis::containBlackHoleNode</a></div><div class="ttdeci">bool containBlackHoleNode(const PointsTo &amp;pts)</div><div class="ttdoc">Determine whether a points-to contains a black hole or constant node. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00305">PointerAnalysis.h:305</a></div></div>
1105
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00477">477</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
1106
+ <div class="fragment"><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;{</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts1;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a798c84d5e861de2b61bcb1a86385f721">expandFIObjs</a>(p1,pts1);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts2;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a798c84d5e861de2b61bcb1a86385f721">expandFIObjs</a>(p2,pts2);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</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><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">AliasResult::MayAlias</a>;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">AliasResult::NoAlias</a>;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a56368369bc37e37b13f19e5eb1890063"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a56368369bc37e37b13f19e5eb1890063">SVF::PointerAnalysis::containBlackHoleNode</a></div><div class="ttdeci">bool containBlackHoleNode(const PointsTo &amp;pts)</div><div class="ttdoc">Determine whether a points-to contains a black hole or constant node. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00300">PointerAnalysis.h:300</a></div></div>
1110
1107
  <div class="ttc" id="classSVF_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#l00180">PointsTo.cpp:180</a></div></div>
1111
1108
  <div class="ttc" id="namespaceSVF_html_a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f"><div class="ttname"><a href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">SVF::MayAlias</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00195">SVFBasicTypes.h:195</a></div></div>
1112
1109
  <div class="ttc" id="classSVF_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#l00082">PointerAnalysisImpl.cpp:82</a></div></div>
@@ -1306,8 +1303,8 @@ Additional Inherited Members</h2></td></tr>
1306
1303
 
1307
1304
  <p>Reimplemented from <a class="el" href="classSVF_1_1PointerAnalysis.html#a861554c2fdeaa406131c2c920b4c7908">SVF::PointerAnalysis</a>.</p>
1308
1305
 
1309
- <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00358">358</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
1310
- <div class="fragment"><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;{</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <a class="code" href="namespaceSVF.html#a3c2bd95727ec0d9c55c631b6617026c8">OrderedNodeSet</a> pagNodes;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</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><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; pagNodes.insert(it-&gt;first);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n : pagNodes)</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;----------------------------------------------\n&quot;</span>;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a1a6cee7e690ccb3e53cdc4c3e67b386d">dumpPts</a>(n, this-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(n));</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;----------------------------------------------\n&quot;</span>;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;}</div><div class="ttc" id="classSVF_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#l00361">GenericGraph.h:361</a></div></div>
1306
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00357">357</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
1307
+ <div class="fragment"><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;{</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="namespaceSVF.html#a3c2bd95727ec0d9c55c631b6617026c8">OrderedNodeSet</a> pagNodes;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</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><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; pagNodes.insert(it-&gt;first);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n : pagNodes)</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;----------------------------------------------\n&quot;</span>;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a1a6cee7e690ccb3e53cdc4c3e67b386d">dumpPts</a>(n, this-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(n));</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;----------------------------------------------\n&quot;</span>;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;}</div><div class="ttc" id="classSVF_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#l00361">GenericGraph.h:361</a></div></div>
1311
1308
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
1312
1309
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a1a6cee7e690ccb3e53cdc4c3e67b386d"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a1a6cee7e690ccb3e53cdc4c3e67b386d">SVF::PointerAnalysis::dumpPts</a></div><div class="ttdeci">virtual void dumpPts(NodeID ptr, const PointsTo &amp;pts)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00283">PointerAnalysis.cpp:283</a></div></div>
1313
1310
  <div class="ttc" id="classSVF_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#l00365">GenericGraph.h:365</a></div></div>
@@ -1380,8 +1377,8 @@ Additional Inherited Members</h2></td></tr>
1380
1377
 
1381
1378
  <p>Reimplemented in <a class="el" href="classSVF_1_1Andersen.html#a43858bd242c7f2c5f33c3c0f6445376a">SVF::Andersen</a>.</p>
1382
1379
 
1383
- <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00325">325</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
1384
- <div class="fragment"><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;{</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</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><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; nIter != this-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">getAllValidPtrs</a>().end(); ++nIter)</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</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><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;isValidTopLevelPtr(node))</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</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#aee289e298e421448caaa604b7eb34fcb">getPts</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</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><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">if</span> (pts.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>())</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</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><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\tPointsTo: { &quot;</span>;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</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#aa53962e561399bf493d1f2b9137356f6">begin</a>(), eit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</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><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n\n&quot;</span>;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>().flush();</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a60b111647e000cc983aa52513f90afbc"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">SVF::PointerAnalysis::getAllValidPtrs</a></div><div class="ttdeci">OrderedNodeSet &amp; getAllValidPtrs()</div><div class="ttdoc">Get all Valid Pointers for resolution. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00222">PointerAnalysis.h:222</a></div></div>
1380
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00324">324</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
1381
+ <div class="fragment"><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;{</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</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><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; nIter != this-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">getAllValidPtrs</a>().end(); ++nIter)</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</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><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;isValidTopLevelPtr(node))</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</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#aee289e298e421448caaa604b7eb34fcb">getPts</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</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><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">if</span> (pts.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>())</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</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><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\t\tPointsTo: { &quot;</span>;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</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#aa53962e561399bf493d1f2b9137356f6">begin</a>(), eit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</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><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n\n&quot;</span>;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; }</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>().flush();</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a60b111647e000cc983aa52513f90afbc"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">SVF::PointerAnalysis::getAllValidPtrs</a></div><div class="ttdeci">OrderedNodeSet &amp; getAllValidPtrs()</div><div class="ttdoc">Get all Valid Pointers for resolution. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00222">PointerAnalysis.h:222</a></div></div>
1385
1382
  <div class="ttc" id="classSVF_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#l00174">PointsTo.h:174</a></div></div>
1386
1383
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
1387
1384
  <div class="ttc" id="classSVF_1_1PointsTo_html_aa53962e561399bf493d1f2b9137356f6"><div class="ttname"><a href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">SVF::PointsTo::begin</a></div><div class="ttdeci">const_iterator begin(void) const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00127">PointsTo.h:127</a></div></div>
@@ -1441,7 +1438,7 @@ Additional Inherited Members</h2></td></tr>
1441
1438
  <div class="ttc" id="classSVF_1_1PointsTo_html_aa53962e561399bf493d1f2b9137356f6"><div class="ttname"><a href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">SVF::PointsTo::begin</a></div><div class="ttdeci">const_iterator begin(void) const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00127">PointsTo.h:127</a></div></div>
1442
1439
  <div class="ttc" id="classSVF_1_1SVFIR_html_a7276e82b4648ed0e1b3d1b8b37b24089"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">SVF::SVFIR::getAllFieldsObjVars</a></div><div class="ttdeci">NodeBS &amp; getAllFieldsObjVars(const MemObj *obj)</div><div class="ttdoc">Get all fields of an object. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00480">SVFIR.cpp:480</a></div></div>
1443
1440
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
1444
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0f71e4cd0948b294c7d33a690bde7dbe"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">SVF::PointerAnalysis::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00367">PointerAnalysis.h:367</a></div></div>
1441
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0f71e4cd0948b294c7d33a690bde7dbe"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">SVF::PointerAnalysis::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00362">PointerAnalysis.h:362</a></div></div>
1445
1442
  <div class="ttc" id="classSVF_1_1PointsTo_html_a8f741cdffbf3c5fe0f602cdca677dee6"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">SVF::PointsTo::end</a></div><div class="ttdeci">const_iterator end(void) const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00128">PointsTo.h:128</a></div></div>
1446
1443
  </div><!-- fragment -->
1447
1444
  </div>
@@ -1487,7 +1484,7 @@ Additional Inherited Members</h2></td></tr>
1487
1484
  <div class="ttc" id="classSVF_1_1SVFIR_html_a77a6bb9335aa12d29825af1b5ea07e08"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">SVF::SVFIR::getBaseObjVar</a></div><div class="ttdeci">NodeID getBaseObjVar(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00410">SVFIR.h:410</a></div></div>
1488
1485
  <div class="ttc" id="classSVF_1_1SVFIR_html_a7276e82b4648ed0e1b3d1b8b37b24089"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a7276e82b4648ed0e1b3d1b8b37b24089">SVF::SVFIR::getAllFieldsObjVars</a></div><div class="ttdeci">NodeBS &amp; getAllFieldsObjVars(const MemObj *obj)</div><div class="ttdoc">Get all fields of an object. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00480">SVFIR.cpp:480</a></div></div>
1489
1486
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
1490
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0f71e4cd0948b294c7d33a690bde7dbe"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">SVF::PointerAnalysis::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00367">PointerAnalysis.h:367</a></div></div>
1487
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0f71e4cd0948b294c7d33a690bde7dbe"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">SVF::PointerAnalysis::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00362">PointerAnalysis.h:362</a></div></div>
1491
1488
  </div><!-- fragment -->
1492
1489
  </div>
1493
1490
  </div>
@@ -1525,7 +1522,7 @@ Additional Inherited Members</h2></td></tr>
1525
1522
  <div class="fragment"><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a2026cffd7043208333083ed1a6603e7b">normalizePointsTo</a>();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a118dabc50024b5cd91095814ade47166">PointerAnalysis::finalize</a>();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Persistent &amp;&amp; <a class="code" href="classSVF_1_1Options.html#a498a1a05a08be1ffd845aefeb0672bcb">Options::PStat</a>) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a94acf249e50ad56f966ddad6843c18f8">ptCache</a>.printStats(<span class="stringliteral">&quot;bv-finalize&quot;</span>);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;}</div><div class="ttc" id="classSVF_1_1Options_html_a498a1a05a08be1ffd845aefeb0672bcb"><div class="ttname"><a href="classSVF_1_1Options.html#a498a1a05a08be1ffd845aefeb0672bcb">SVF::Options::PStat</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PStat</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00131">Options.h:131</a></div></div>
1526
1523
  <div class="ttc" id="classSVF_1_1Options_html_a9ec1d22e20b655e364fea03ba7d923a2"><div class="ttname"><a href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">SVF::Options::ptDataBacking</a></div><div class="ttdeci">static const llvm::cl::opt&lt; BVDataPTAImpl::PTBackingType &gt; ptDataBacking</div><div class="ttdoc">PTData type. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00068">Options.h:68</a></div></div>
1527
1524
  <div class="ttc" id="classSVF_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#l00200">PointerAnalysis.cpp:200</a></div></div>
1528
- <div class="ttc" id="classSVF_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#l00402">PointerAnalysisImpl.cpp:402</a></div></div>
1525
+ <div class="ttc" id="classSVF_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#l00401">PointerAnalysisImpl.cpp:401</a></div></div>
1529
1526
  <div class="ttc" id="classSVF_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#l00217">PointerAnalysisImpl.h:217</a></div></div>
1530
1527
  </div><!-- fragment -->
1531
1528
  </div>
@@ -1808,21 +1805,21 @@ Additional Inherited Members</h2></td></tr>
1808
1805
 
1809
1806
  <p>Reimplemented in <a class="el" href="classSVF_1_1AndersenBase.html#af37392229dab0a1f2f807a12186c3b39">SVF::AndersenBase</a>.</p>
1810
1807
 
1811
- <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00402">402</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
1812
- <div class="fragment"><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</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><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#aa5b08d987b37d35e73de88da10a97bc4">SVFIR::NodeLocationSetMap</a> &amp;GepObjVarMap = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a77e3c407ea3990413e371589aa468963">getGepObjNodeMap</a>();</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="comment">// collect each gep node whose base node has been set as field-insensitive</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> dropNodes;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> t: memToFieldsMap){</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = t.first;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* 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><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(memObj &amp;&amp; <span class="stringliteral">&quot;Invalid memobj in memToFieldsMap&quot;</span>);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">if</span> (memObj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>()) {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> : t.second) {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</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><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; dropNodes.set(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; } <span class="keywordflow">else</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keywordtype">id</span> == base &amp;&amp; <span class="stringliteral">&quot;Not a GepObj Node or a baseObj Node?&quot;</span>);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="comment">// remove the collected redundant gep nodes in each pointers&#39;s pts</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</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><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n = nIter-&gt;first;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;tmpPts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(n);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj : tmpPts) {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">if</span> (!dropNodes.test(obj))</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</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><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a3f78f60e1947a6d6fbcd3a0ee11e262a">clearPts</a>(n, obj);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">addPts</a>(n, baseObj);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="comment">// clear GepObjVarMap and memToFieldsMap for redundant gepnodes</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="comment">// and remove those nodes from pag</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n: dropNodes) {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</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>(n);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *gepNode = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a>&gt;(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(n));</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> ls = gepNode-&gt;<a class="code" href="classSVF_1_1GepObjVar.html#a553e648804b39c503e7288dd0434c339">getLocationSet</a>();</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; GepObjVarMap.erase(std::make_pair(base, ls));</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; memToFieldsMap[base].reset(n);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</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><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_aa5b08d987b37d35e73de88da10a97bc4"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa5b08d987b37d35e73de88da10a97bc4">SVF::SVFIR::NodeLocationSetMap</a></div><div class="ttdeci">Map&lt; NodeLocationSet, NodeID &gt; NodeLocationSetMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00069">SVFIR.h:69</a></div></div>
1808
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00401">401</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
1809
+ <div class="fragment"><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</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><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html#aa5b08d987b37d35e73de88da10a97bc4">SVFIR::NodeLocationSetMap</a> &amp;GepObjVarMap = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a77e3c407ea3990413e371589aa468963">getGepObjNodeMap</a>();</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="comment">// collect each gep node whose base node has been set as field-insensitive</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> dropNodes;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> t: memToFieldsMap){</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = t.first;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</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><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(memObj &amp;&amp; <span class="stringliteral">&quot;Invalid memobj in memToFieldsMap&quot;</span>);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">if</span> (memObj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>()) {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> : t.second) {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</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><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; dropNodes.set(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; } <span class="keywordflow">else</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keywordtype">id</span> == base &amp;&amp; <span class="stringliteral">&quot;Not a GepObj Node or a baseObj Node?&quot;</span>);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; }</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="comment">// remove the collected redundant gep nodes in each pointers&#39;s pts</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</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><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n = nIter-&gt;first;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;tmpPts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(n);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj : tmpPts) {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">if</span> (!dropNodes.test(obj))</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</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><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a4909696c946cf6aba12542ec51766b64">clearPts</a>(n, obj);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">addPts</a>(n, baseObj);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="comment">// clear GepObjVarMap and memToFieldsMap for redundant gepnodes</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="comment">// and remove those nodes from pag</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n: dropNodes) {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</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>(n);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *gepNode = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a>&gt;(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(n));</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> ls = gepNode-&gt;<a class="code" href="classSVF_1_1GepObjVar.html#a553e648804b39c503e7288dd0434c339">getLocationSet</a>();</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; GepObjVarMap.erase(std::make_pair(base, ls));</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; memToFieldsMap[base].reset(n);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</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><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFIR_html_aa5b08d987b37d35e73de88da10a97bc4"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa5b08d987b37d35e73de88da10a97bc4">SVF::SVFIR::NodeLocationSetMap</a></div><div class="ttdeci">Map&lt; NodeLocationSet, NodeID &gt; NodeLocationSetMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00069">SVFIR.h:69</a></div></div>
1813
1810
  <div class="ttc" id="classSVF_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#l00361">GenericGraph.h:361</a></div></div>
1814
1811
  <div class="ttc" id="classSVF_1_1SVFIR_html_a6f46446d667258b32ddc1ccab48f651c"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a6f46446d667258b32ddc1ccab48f651c">SVF::SVFIR::getMemToFieldsMap</a></div><div class="ttdeci">MemObjToFieldsMap &amp; getMemToFieldsMap()</div><div class="ttdoc">Return memToFieldsMap. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00122">SVFIR.h:122</a></div></div>
1815
1812
  <div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00404">SymbolTableInfo.h:404</a></div></div>
1816
1813
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
1817
1814
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
1818
1815
  <div class="ttc" id="classSVF_1_1SVFIR_html_a77a6bb9335aa12d29825af1b5ea07e08"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a77a6bb9335aa12d29825af1b5ea07e08">SVF::SVFIR::getBaseObjVar</a></div><div class="ttdeci">NodeID getBaseObjVar(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00410">SVFIR.h:410</a></div></div>
1816
+ <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a4909696c946cf6aba12542ec51766b64"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a4909696c946cf6aba12542ec51766b64">SVF::BVDataPTAImpl::clearPts</a></div><div class="ttdeci">virtual void clearPts(NodeID id, NodeID element)</div><div class="ttdoc">Remove element from the points-to set of id. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00110">PointerAnalysisImpl.h:110</a></div></div>
1819
1817
  <div class="ttc" id="classSVF_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#l00365">GenericGraph.h:365</a></div></div>
1820
1818
  <div class="ttc" id="classSVF_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#l00338">GenericGraph.h:338</a></div></div>
1821
1819
  <div class="ttc" id="classSVF_1_1SVFIR_html_ab6abb822445c9b3f5cb2b7206042e940"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ab6abb822445c9b3f5cb2b7206042e940">SVF::SVFIR::MemObjToFieldsMap</a></div><div class="ttdeci">Map&lt; NodeID, NodeBS &gt; MemObjToFieldsMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00055">SVFIR.h:55</a></div></div>
1822
1820
  <div class="ttc" id="classSVF_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#l00132">PointerAnalysisImpl.h:132</a></div></div>
1823
1821
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee289e298e421448caaa604b7eb34fcb"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">SVF::BVDataPTAImpl::getPts</a></div><div class="ttdeci">virtual const PointsTo &amp; getPts(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00099">PointerAnalysisImpl.h:99</a></div></div>
1824
1822
  <div class="ttc" id="classSVF_1_1GepObjVar_html"><div class="ttname"><a href="classSVF_1_1GepObjVar.html">SVF::GepObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00442">SVFVariables.h:442</a></div></div>
1825
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a3f78f60e1947a6d6fbcd3a0ee11e262a"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a3f78f60e1947a6d6fbcd3a0ee11e262a">SVF::PointerAnalysis::clearPts</a></div><div class="ttdeci">virtual void clearPts()</div><div class="ttdoc">Clear points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00261">PointerAnalysis.h:261</a></div></div>
1826
1823
  <div class="ttc" id="classSVF_1_1SVFIR_html_a77e3c407ea3990413e371589aa468963"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a77e3c407ea3990413e371589aa468963">SVF::SVFIR::getGepObjNodeMap</a></div><div class="ttdeci">NodeLocationSetMap &amp; getGepObjNodeMap()</div><div class="ttdoc">Return GepObjVarMap. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00127">SVFIR.h:127</a></div></div>
1827
1824
  <div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00673">SymbolTableInfo.cpp:673</a></div></div>
1828
1825
  <div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00048">LocationSet.h:48</a></div></div>
@@ -1874,8 +1871,8 @@ Additional Inherited Members</h2></td></tr>
1874
1871
  <p>On the fly call graph construction. </p>
1875
1872
  <p>On the fly call graph construction callsites is candidate indirect callsites need to be analyzed based on points-to results newEdges is the new indirect call edges discovered </p>
1876
1873
 
1877
- <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00381">381</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
1878
- <div class="fragment"><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;{</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">for</span>(CallSiteToFunPtrMap::const_iterator iter = callsites.begin(), eiter = callsites.end(); iter!=eiter; ++iter)</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = iter-&gt;first;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1cppUtil.html#aca6465c72effcaddeb34f55da4555754">isVirtualCallSite</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>())))</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *vtbl = <a class="code" href="namespaceSVF_1_1cppUtil.html#a3b00cc9770022f124958513bf1e52a05">getVCallVtblPtr</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()));</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#aceb17dfbe137658625e16291127267d1">hasValueNode</a>(vtbl));</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</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#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(vtbl);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ac04b64a5884710508b304f93da88c7ba">resolveCPPIndCalls</a>(cs, <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(vtblId), newEdges);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a8d128246f86f28fdf4981d91169ab440">resolveIndCalls</a>(iter-&gt;first,<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(iter-&gt;second),newEdges);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;}</div><div class="ttc" id="classSVF_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#l00406">PointerAnalysis.cpp:406</a></div></div>
1874
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00380">380</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
1875
+ <div class="fragment"><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;{</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">for</span>(CallSiteToFunPtrMap::const_iterator iter = callsites.begin(), eiter = callsites.end(); iter!=eiter; ++iter)</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = iter-&gt;first;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1cppUtil.html#aca6465c72effcaddeb34f55da4555754">isVirtualCallSite</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>())))</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *vtbl = <a class="code" href="namespaceSVF_1_1cppUtil.html#a3b00cc9770022f124958513bf1e52a05">getVCallVtblPtr</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>()));</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#aceb17dfbe137658625e16291127267d1">hasValueNode</a>(vtbl));</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</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#abffddd41cc308b9b3bd5ad4a7f8f1624">getValueNode</a>(vtbl);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ac04b64a5884710508b304f93da88c7ba">resolveCPPIndCalls</a>(cs, <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(vtblId), newEdges);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a8d128246f86f28fdf4981d91169ab440">resolveIndCalls</a>(iter-&gt;first,<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(iter-&gt;second),newEdges);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;}</div><div class="ttc" id="classSVF_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#l00406">PointerAnalysis.cpp:406</a></div></div>
1879
1876
  <div class="ttc" id="namespaceSVF_1_1cppUtil_html_aca6465c72effcaddeb34f55da4555754"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aca6465c72effcaddeb34f55da4555754">SVF::cppUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00257">CPPUtil.cpp:257</a></div></div>
1880
1877
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
1881
1878
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
@@ -1921,9 +1918,9 @@ Additional Inherited Members</h2></td></tr>
1921
1918
  <div class="fragment"><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;{</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="comment">// If the module annotations are available, read from there instead</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keyword">auto</span> mainModule = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span> (mainModule-&gt;getNamedMetadata(<span class="stringliteral">&quot;SVFIR-Annotated&quot;</span>) != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a857cdacfc8cafdeb1431bdfa077ef9b5">readFromModule</a>();</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</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><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; ifstream F(filename.c_str());</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span> (!F.is_open())</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</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><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="comment">// Read analysis results from file</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#acfdb43f20bbcababc928cc4df93a8483">PTDataTy</a> *<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a>();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordtype">string</span> line;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="comment">// Read points-to sets</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordtype">string</span> delimiter1 = <span class="stringliteral">&quot; -&gt; { &quot;</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordtype">string</span> delimiter2 = <span class="stringliteral">&quot; }&quot;</span>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; map&lt;NodeID, string&gt; nodePtsMap;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; map&lt;string, PointsTo&gt; strPtsMap;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">while</span> (F.good())</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="comment">// Parse a single line in the form of &quot;var -&gt; { obj1 obj2 obj3 }&quot;</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; getline(F, line);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordtype">size_t</span> pos = line.find(delimiter1);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">if</span> (pos == string::npos) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">if</span> (line.back() != <span class="charliteral">&#39;}&#39;</span>) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="comment">// var</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var = atoi(line.substr(0, pos).c_str());</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="comment">// objs</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; pos = pos + delimiter1.length();</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordtype">size_t</span> len = line.length() - pos - delimiter2.length();</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordtype">string</span> objs = line.substr(pos, len);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> dstPts;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (!objs.empty())</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="comment">// map the variable ID to its unique string pointer set</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; nodePtsMap[var] = objs;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">if</span> (strPtsMap.count(objs)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; istringstream ss(objs);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">while</span> (ss.good())</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; ss &gt;&gt; obj;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; dstPts.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(obj);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="comment">// map the string pointer set to the parsed PointsTo set</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; strPtsMap[objs] = dstPts;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="comment">// map the variable ID to its pointer set</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> t: nodePtsMap)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; ptD-&gt;unionPts(t.first, strPtsMap[t.second]);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="comment">// Read SVFIR offset nodes</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">while</span> (F.good())</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">if</span> (line == <span class="stringliteral">&quot;------&quot;</span>) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="comment">// Parse a single line in the form of &quot;ID baseNodeID offset&quot;</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; istringstream ss(line);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> id;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordtype">size_t</span> offset;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; ss &gt;&gt; <span class="keywordtype">id</span> &gt;&gt; base &gt;&gt; offset;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a20c0c65af266ac876cb722aee6e87101">getGepObjVar</a>(base, <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(offset));</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keywordtype">id</span> == n &amp;&amp; <span class="stringliteral">&quot;Error adding GepObjNode into SVFIR!&quot;</span>);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; getline(F, line);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="comment">// Read BaseNode insensitivity</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">while</span> (F.good())</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; getline(F, line);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="comment">// Parse a single line in the form of &quot;baseNodeID insensitive&quot;</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; istringstream ss(line);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordtype">bool</span> insensitive;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; ss &gt;&gt; base &gt;&gt; insensitive;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">if</span> (insensitive)</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ac5683fe2e24b393ccc5cb6d8bc92cf2b">setObjFieldInsensitive</a>(base);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">// Update callgraph</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</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><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; F.close();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;}</div><div class="ttc" id="classSVF_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#l00162">PointerAnalysisImpl.h:162</a></div></div>
1922
1919
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
1923
1920
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
1924
- <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a857cdacfc8cafdeb1431bdfa077ef9b5"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a857cdacfc8cafdeb1431bdfa077ef9b5">SVF::BVDataPTAImpl::readFromModule</a></div><div class="ttdeci">virtual bool readFromModule()</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00315">PointerAnalysisImpl.cpp:315</a></div></div>
1921
+ <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a857cdacfc8cafdeb1431bdfa077ef9b5"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a857cdacfc8cafdeb1431bdfa077ef9b5">SVF::BVDataPTAImpl::readFromModule</a></div><div class="ttdeci">virtual bool readFromModule()</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00314">PointerAnalysisImpl.cpp:314</a></div></div>
1925
1922
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a9fe3fa15a6a0ec25864cb8439a45596e"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">SVF::LLVMModuleSet::getMainLLVMModule</a></div><div class="ttdeci">Module * getMainLLVMModule() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00193">LLVMModule.h:193</a></div></div>
1926
- <div class="ttc" id="classSVF_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#l00362">PointerAnalysis.h:362</a></div></div>
1923
+ <div class="ttc" id="classSVF_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#l00357">PointerAnalysis.h:357</a></div></div>
1927
1924
  <div class="ttc" id="namespaceSVF_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#l00049">SVFUtil.h:49</a></div></div>
1928
1925
  <div class="ttc" id="classSVF_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#l00149">PointsTo.cpp:149</a></div></div>
1929
1926
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
@@ -1962,8 +1959,8 @@ Additional Inherited Members</h2></td></tr>
1962
1959
  </div><div class="memdoc">
1963
1960
  <p>Load pointer analysis result from the metadata in the module. It populates <a class="el" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a> with the points-to data, and updates <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> with the <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> offset nodes created during <a class="el" href="classSVF_1_1Andersen.html">Andersen</a>'s solving stage. </p>
1964
1961
 
1965
- <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00315">315</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
1966
- <div class="fragment"><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;{</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keyword">auto</span> irAnnotator = std::make_unique&lt;IRAnnotator&gt;();</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; irAnnotator-&gt;processAndersenResults(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>, <span class="keyword">this</span>, <span class="keyword">false</span>);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
1962
+ <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00314">314</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
1963
+ <div class="fragment"><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;{</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keyword">auto</span> irAnnotator = std::make_unique&lt;IRAnnotator&gt;();</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; irAnnotator-&gt;processAndersenResults(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>, <span class="keyword">this</span>, <span class="keyword">false</span>);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
1967
1964
  </div><!-- fragment -->
1968
1965
  </div>
1969
1966
  </div>
@@ -2150,7 +2147,7 @@ Additional Inherited Members</h2></td></tr>
2150
2147
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aa0ca07204a31004fb876c6e18d1ac1ca"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aa0ca07204a31004fb876c6e18d1ac1ca">SVF::BVDataPTAImpl::writeToModule</a></div><div class="ttdeci">virtual void writeToModule()</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00302">PointerAnalysisImpl.cpp:302</a></div></div>
2151
2148
  <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00088">SVFBasicTypes.h:88</a></div></div>
2152
2149
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
2153
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0f71e4cd0948b294c7d33a690bde7dbe"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">SVF::PointerAnalysis::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00367">PointerAnalysis.h:367</a></div></div>
2150
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0f71e4cd0948b294c7d33a690bde7dbe"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">SVF::PointerAnalysis::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00362">PointerAnalysis.h:362</a></div></div>
2154
2151
  <div class="ttc" id="classSVF_1_1PointsTo_html"><div class="ttname"><a href="classSVF_1_1PointsTo.html">SVF::PointsTo</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00027">PointsTo.h:27</a></div></div>
2155
2152
  </div><!-- fragment -->
2156
2153
  </div>
@@ -2180,9 +2177,7 @@ Additional Inherited Members</h2></td></tr>
2180
2177
  <p>Store pointer analysis result into the current LLVM module as metadata. It includes the points-to relations, and all <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> nodes including those created when solving <a class="el" href="classSVF_1_1Andersen.html">Andersen</a>'s constraints. </p>
2181
2178
 
2182
2179
  <p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00302">302</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
2183
- <div class="fragment"><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;{</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keyword">auto</span> irAnnotator = std::make_unique&lt;IRAnnotator&gt;();</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keyword">auto</span> mainModule = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>();</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; irAnnotator-&gt;processAndersenResults(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>, <span class="keyword">this</span>, <span class="keyword">true</span>);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;}</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a9fe3fa15a6a0ec25864cb8439a45596e"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">SVF::LLVMModuleSet::getMainLLVMModule</a></div><div class="ttdeci">Module * getMainLLVMModule() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00193">LLVMModule.h:193</a></div></div>
2184
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
2185
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
2180
+ <div class="fragment"><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;{</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keyword">auto</span> irAnnotator = std::make_unique&lt;IRAnnotator&gt;();</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; irAnnotator-&gt;processAndersenResults(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>, <span class="keyword">this</span>, <span class="keyword">true</span>);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;}</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
2186
2181
  </div><!-- fragment -->
2187
2182
  </div>
2188
2183
  </div>