svf-tools 1.0.286 → 1.0.287

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 (139) hide show
  1. package/SVF-doxygen/html/html/ConditionalPT_8h.html +2 -0
  2. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +56 -53
  3. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -2
  4. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +13 -13
  5. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +50 -50
  6. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +2 -2
  7. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
  8. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -2
  9. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +3 -3
  10. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
  11. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +5 -5
  12. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +4 -4
  13. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +2 -2
  14. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
  15. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +1 -2
  16. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
  17. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp.html +1 -0
  19. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +10 -10
  20. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +11 -11
  21. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
  22. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +3 -3
  23. package/SVF-doxygen/html/html/annotated.html +14 -13
  24. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode-members.html +2 -2
  25. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +7 -7
  26. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode-members.html +2 -2
  27. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +7 -7
  28. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge-members.html +2 -2
  29. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +5 -5
  30. package/SVF-doxygen/html/html/classSVF_1_1CondPointsToSet.html +115 -115
  31. package/SVF-doxygen/html/html/classSVF_1_1CondPointsToSet_1_1CondPtsSetIterator.html +35 -35
  32. package/SVF-doxygen/html/html/classSVF_1_1CondStdSet-members.html +27 -26
  33. package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +56 -21
  34. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +2 -2
  35. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +25 -25
  36. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +3 -5
  37. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +2 -2
  38. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +2 -2
  39. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode-members.html +2 -2
  40. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +7 -7
  41. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode-members.html +2 -2
  42. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +7 -7
  43. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge-members.html +3 -3
  44. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +20 -20
  45. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode-members.html +2 -2
  46. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +5 -5
  47. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge-members.html +2 -2
  48. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +5 -5
  49. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode-members.html +2 -2
  50. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +5 -5
  51. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode-members.html +2 -2
  52. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +12 -12
  53. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode-members.html +2 -2
  54. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +7 -7
  55. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +106 -104
  56. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
  57. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +1 -1
  58. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge-members.html +2 -2
  59. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +5 -5
  60. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +11 -11
  61. package/SVF-doxygen/html/html/classSVF_1_1SVFGNodeLockSpan.html +23 -23
  62. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +6 -6
  63. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +2 -2
  64. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder-members.html +3 -3
  65. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +43 -43
  66. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +2 -2
  67. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge-members.html +2 -2
  68. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +5 -5
  69. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +9 -9
  70. package/SVF-doxygen/html/html/classes.html +93 -92
  71. package/SVF-doxygen/html/html/functions_a.html +1 -1
  72. package/SVF-doxygen/html/html/functions_c.html +24 -19
  73. package/SVF-doxygen/html/html/functions_f.html +6 -6
  74. package/SVF-doxygen/html/html/functions_func.html +1 -1
  75. package/SVF-doxygen/html/html/functions_func_c.html +20 -17
  76. package/SVF-doxygen/html/html/functions_func_g.html +2 -2
  77. package/SVF-doxygen/html/html/functions_func_o.html +2 -1
  78. package/SVF-doxygen/html/html/functions_g.html +3 -3
  79. package/SVF-doxygen/html/html/functions_i.html +3 -3
  80. package/SVF-doxygen/html/html/functions_l.html +3 -3
  81. package/SVF-doxygen/html/html/functions_n.html +1 -1
  82. package/SVF-doxygen/html/html/functions_o.html +5 -4
  83. package/SVF-doxygen/html/html/functions_p.html +14 -16
  84. package/SVF-doxygen/html/html/functions_r.html +3 -7
  85. package/SVF-doxygen/html/html/functions_s.html +10 -12
  86. package/SVF-doxygen/html/html/functions_type_n.html +1 -1
  87. package/SVF-doxygen/html/html/functions_u.html +3 -3
  88. package/SVF-doxygen/html/html/functions_v.html +3 -3
  89. package/SVF-doxygen/html/html/functions_vars_c.html +2 -2
  90. package/SVF-doxygen/html/html/functions_vars_g.html +1 -1
  91. package/SVF-doxygen/html/html/hierarchy.html +165 -164
  92. package/SVF-doxygen/html/html/search/all_1.js +1 -1
  93. package/SVF-doxygen/html/html/search/all_10.js +10 -10
  94. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  95. package/SVF-doxygen/html/html/search/all_13.js +7 -7
  96. package/SVF-doxygen/html/html/search/all_14.js +3 -3
  97. package/SVF-doxygen/html/html/search/all_15.js +2 -2
  98. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  99. package/SVF-doxygen/html/html/search/all_3.js +3 -2
  100. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  101. package/SVF-doxygen/html/html/search/all_7.js +2 -2
  102. package/SVF-doxygen/html/html/search/all_8.js +1 -0
  103. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  104. package/SVF-doxygen/html/html/search/all_c.js +1 -1
  105. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  106. package/SVF-doxygen/html/html/search/all_e.js +5 -5
  107. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  108. package/SVF-doxygen/html/html/search/classes_7.js +1 -0
  109. package/SVF-doxygen/html/html/search/functions_0.js +1 -1
  110. package/SVF-doxygen/html/html/search/functions_2.js +2 -1
  111. package/SVF-doxygen/html/html/search/functions_6.js +1 -1
  112. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  113. package/SVF-doxygen/html/html/search/typedefs_d.js +1 -1
  114. package/SVF-doxygen/html/html/search/variables_14.js +2 -2
  115. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  116. package/SVF-doxygen/html/html/search/variables_3.js +1 -1
  117. package/SVF-doxygen/html/html/search/variables_7.js +1 -1
  118. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  119. package/SVF-doxygen/html/html/search/variables_e.js +2 -2
  120. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4-members.html +81 -0
  121. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html +131 -0
  122. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html +3 -3
  123. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SVFGNodeLockSpan_01_4.html +3 -3
  124. package/SVF-doxygen/html/html/structstd_1_1hash_3_01const_01SVF_1_1CondVar_3_01Cond_01_4_01_4.html +3 -3
  125. package/include/DDA/DDAVFSolver.h +1 -1
  126. package/include/Graphs/SVFGEdge.h +3 -3
  127. package/include/Graphs/SVFGNode.h +2 -2
  128. package/include/MTA/FSMPTA.h +1 -0
  129. package/include/MemoryModel/ConditionalPT.h +21 -5
  130. package/include/SABER/SaberSVFGBuilder.h +3 -3
  131. package/lib/Graphs/SVFGStat.cpp +1 -1
  132. package/lib/Graphs/ThreadCallGraph.cpp +4 -4
  133. package/lib/MTA/FSMPTA.cpp +7 -7
  134. package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
  135. package/lib/SABER/SaberSVFGBuilder.cpp +2 -1
  136. package/lib/WPA/FlowSensitive.cpp +2 -2
  137. package/lib/WPA/FlowSensitiveTBHC.cpp +2 -2
  138. package/lib/WPA/VersionedFlowSensitive.cpp +1 -1
  139. package/package.json +1 -1
@@ -89,8 +89,8 @@ Inheritance diagram for SVF::SaberSVFGBuilder:</div>
89
89
  Public Types</h2></td></tr>
90
90
  <tr class="memitem:a298a94f9b368e37767935a42e5ba954a"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>&lt; const <a class="el" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVFGNode</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SaberSVFGBuilder.html#a298a94f9b368e37767935a42e5ba954a">SVFGNodeSet</a></td></tr>
91
91
  <tr class="separator:a298a94f9b368e37767935a42e5ba954a"><td class="memSeparator" colspan="2">&#160;</td></tr>
92
- <tr class="memitem:ae8c189214a61febd7529ad7209d789f3"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt; <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>, <a class="el" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SaberSVFGBuilder.html#ae8c189214a61febd7529ad7209d789f3">NodeToPTSSMap</a></td></tr>
93
- <tr class="separator:ae8c189214a61febd7529ad7209d789f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
92
+ <tr class="memitem:a4cb1f607e33d106dfa178e822c5ab7e1"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt; <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>, <a class="el" href="namespaceSVF.html#a0c6594b4bae7924369bb61943c1da4fb">PointsTo</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SaberSVFGBuilder.html#a4cb1f607e33d106dfa178e822c5ab7e1">NodeToPTSSMap</a></td></tr>
93
+ <tr class="separator:a4cb1f607e33d106dfa178e822c5ab7e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
94
94
  <tr class="memitem:a8e07c6afc4ae6e2792431065c2948039"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList</a>&lt; <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SaberSVFGBuilder.html#a8e07c6afc4ae6e2792431065c2948039">WorkList</a></td></tr>
95
95
  <tr class="separator:a8e07c6afc4ae6e2792431065c2948039"><td class="memSeparator" colspan="2">&#160;</td></tr>
96
96
  <tr class="inherit_header pub_types_classSVF_1_1SVFGBuilder"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classSVF_1_1SVFGBuilder')"><img src="closed.png" alt="-"/>&#160;Public Types inherited from <a class="el" href="classSVF_1_1SVFGBuilder.html">SVF::SVFGBuilder</a></td></tr>
@@ -174,14 +174,14 @@ Private Member Functions</h2></td></tr>
174
174
  <tr class="memitem:a4bfa849a30d1982ae597d26b4a01dd0f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SaberSVFGBuilder.html#a4bfa849a30d1982ae597d26b4a01dd0f">accessGlobal</a> (<a class="el" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a> *pta, const <a class="el" href="classSVF_1_1PAGNode.html">PAGNode</a> *pagNode)</td></tr>
175
175
  <tr class="memdesc:a4bfa849a30d1982ae597d26b4a01dd0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether points-to of a <a class="el" href="classSVF_1_1PAGNode.html">PAGNode</a> points-to global variable. <a href="#a4bfa849a30d1982ae597d26b4a01dd0f">More...</a><br /></td></tr>
176
176
  <tr class="separator:a4bfa849a30d1982ae597d26b4a01dd0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
177
- <tr class="memitem:a7ed419e4356c1d9f6235449ab848d2ab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SaberSVFGBuilder.html#a7ed419e4356c1d9f6235449ab848d2ab">CollectPtsChain</a> (<a class="el" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a> *pta, <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> id, <a class="el" href="classSVF_1_1SaberSVFGBuilder.html#ae8c189214a61febd7529ad7209d789f3">NodeToPTSSMap</a> &amp;cachedPtsMap)</td></tr>
178
- <tr class="memdesc:a7ed419e4356c1d9f6235449ab848d2ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Collect objects along points-to chains. <a href="#a7ed419e4356c1d9f6235449ab848d2ab">More...</a><br /></td></tr>
179
- <tr class="separator:a7ed419e4356c1d9f6235449ab848d2ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
177
+ <tr class="memitem:a411e168e2a6c27e15186c609c5e216b3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a0c6594b4bae7924369bb61943c1da4fb">PointsTo</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SaberSVFGBuilder.html#a411e168e2a6c27e15186c609c5e216b3">CollectPtsChain</a> (<a class="el" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a> *pta, <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> id, <a class="el" href="classSVF_1_1SaberSVFGBuilder.html#a4cb1f607e33d106dfa178e822c5ab7e1">NodeToPTSSMap</a> &amp;cachedPtsMap)</td></tr>
178
+ <tr class="memdesc:a411e168e2a6c27e15186c609c5e216b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Collect objects along points-to chains. <a href="#a411e168e2a6c27e15186c609c5e216b3">More...</a><br /></td></tr>
179
+ <tr class="separator:a411e168e2a6c27e15186c609c5e216b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
180
180
  </table><table class="memberdecls">
181
181
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
182
182
  Private Attributes</h2></td></tr>
183
- <tr class="memitem:aa17b6decf323982b2efa28c5585b9835"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SaberSVFGBuilder.html#aa17b6decf323982b2efa28c5585b9835">globs</a></td></tr>
184
- <tr class="separator:aa17b6decf323982b2efa28c5585b9835"><td class="memSeparator" colspan="2">&#160;</td></tr>
183
+ <tr class="memitem:a967dba864a6032e448222525aedb1f2a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a0c6594b4bae7924369bb61943c1da4fb">PointsTo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SaberSVFGBuilder.html#a967dba864a6032e448222525aedb1f2a">globs</a></td></tr>
184
+ <tr class="separator:a967dba864a6032e448222525aedb1f2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
185
185
  <tr class="memitem:a9431a9dcbcf88b78e721b0347046e997"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1SaberSVFGBuilder.html#a298a94f9b368e37767935a42e5ba954a">SVFGNodeSet</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SaberSVFGBuilder.html#a9431a9dcbcf88b78e721b0347046e997">globSVFGNodes</a></td></tr>
186
186
  <tr class="memdesc:a9431a9dcbcf88b78e721b0347046e997"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store all global <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> nodes. <a href="#a9431a9dcbcf88b78e721b0347046e997">More...</a><br /></td></tr>
187
187
  <tr class="separator:a9431a9dcbcf88b78e721b0347046e997"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -209,14 +209,14 @@ Additional Inherited Members</h2></td></tr>
209
209
  <div class="textblock">
210
210
  <p class="definition">Definition at line <a class="el" href="SaberSVFGBuilder_8h_source.html#l00042">42</a> of file <a class="el" href="SaberSVFGBuilder_8h_source.html">SaberSVFGBuilder.h</a>.</p>
211
211
  </div><h2 class="groupheader">Member Typedef Documentation</h2>
212
- <a id="ae8c189214a61febd7529ad7209d789f3"></a>
213
- <h2 class="memtitle"><span class="permalink"><a href="#ae8c189214a61febd7529ad7209d789f3">&#9670;&nbsp;</a></span>NodeToPTSSMap</h2>
212
+ <a id="a4cb1f607e33d106dfa178e822c5ab7e1"></a>
213
+ <h2 class="memtitle"><span class="permalink"><a href="#a4cb1f607e33d106dfa178e822c5ab7e1">&#9670;&nbsp;</a></span>NodeToPTSSMap</h2>
214
214
 
215
215
  <div class="memitem">
216
216
  <div class="memproto">
217
217
  <table class="memname">
218
218
  <tr>
219
- <td class="memname">typedef <a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt;<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>, <a class="el" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&gt; <a class="el" href="classSVF_1_1SaberSVFGBuilder.html#ae8c189214a61febd7529ad7209d789f3">SVF::SaberSVFGBuilder::NodeToPTSSMap</a></td>
219
+ <td class="memname">typedef <a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt;<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>, <a class="el" href="namespaceSVF.html#a0c6594b4bae7924369bb61943c1da4fb">PointsTo</a>&gt; <a class="el" href="classSVF_1_1SaberSVFGBuilder.html#a4cb1f607e33d106dfa178e822c5ab7e1">SVF::SaberSVFGBuilder::NodeToPTSSMap</a></td>
220
220
  </tr>
221
221
  </table>
222
222
  </div><div class="memdoc">
@@ -355,9 +355,9 @@ Additional Inherited Members</h2></td></tr>
355
355
  <p>Whether points-to of a <a class="el" href="classSVF_1_1PAGNode.html">PAGNode</a> points-to global variable. </p>
356
356
  <p>Decide whether the node and its points-to contains a global objects </p>
357
357
 
358
- <p class="definition">Definition at line <a class="el" href="SaberSVFGBuilder_8cpp_source.html#l00134">134</a> of file <a class="el" href="SaberSVFGBuilder_8cpp_source.html">SaberSVFGBuilder.cpp</a>.</p>
359
- <div class="fragment"><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;{</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> = pagNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="namespaceSVF.html#a0c6594b4bae7924369bb61943c1da4fb">PointsTo</a> pts = pta-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; pts.set(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">return</span> pts.intersects(<a class="code" href="classSVF_1_1SaberSVFGBuilder.html#aa17b6decf323982b2efa28c5585b9835">globs</a>);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;}</div><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>
360
- <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_aa17b6decf323982b2efa28c5585b9835"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#aa17b6decf323982b2efa28c5585b9835">SVF::SaberSVFGBuilder::globs</a></div><div class="ttdeci">NodeBS globs</div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8h_source.html#l00099">SaberSVFGBuilder.h:99</a></div></div>
358
+ <p class="definition">Definition at line <a class="el" href="SaberSVFGBuilder_8cpp_source.html#l00135">135</a> of file <a class="el" href="SaberSVFGBuilder_8cpp_source.html">SaberSVFGBuilder.cpp</a>.</p>
359
+ <div class="fragment"><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;{</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> = pagNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="namespaceSVF.html#a0c6594b4bae7924369bb61943c1da4fb">PointsTo</a> pts = pta-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; pts.set(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">return</span> pts.intersects(<a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a967dba864a6032e448222525aedb1f2a">globs</a>);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;}</div><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>
360
+ <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_a967dba864a6032e448222525aedb1f2a"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#a967dba864a6032e448222525aedb1f2a">SVF::SaberSVFGBuilder::globs</a></div><div class="ttdeci">PointsTo globs</div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8h_source.html#l00099">SaberSVFGBuilder.h:99</a></div></div>
361
361
  <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#l00098">PointerAnalysisImpl.h:98</a></div></div>
362
362
  <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00164">GenericGraph.h:164</a></div></div>
363
363
  <div class="ttc" id="namespaceSVF_html_a0c6594b4bae7924369bb61943c1da4fb"><div class="ttname"><a href="namespaceSVF.html#a0c6594b4bae7924369bb61943c1da4fb">SVF::PointsTo</a></div><div class="ttdeci">NodeBS PointsTo</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00088">SVFBasicTypes.h:88</a></div></div>
@@ -433,8 +433,8 @@ Additional Inherited Members</h2></td></tr>
433
433
  <p>Add actual parameter SVFGNode for 1st argument of a deallocation like external function. </p>
434
434
  <p>Add actual parameter SVFGNode for 1st argument of a deallocation like external function In order to path sensitive leak detection </p>
435
435
 
436
- <p class="definition">Definition at line <a class="el" href="SaberSVFGBuilder_8cpp_source.html#l00251">251</a> of file <a class="el" href="SaberSVFGBuilder_8cpp_source.html">SaberSVFGBuilder.cpp</a>.</p>
437
- <div class="fragment"><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; <a class="code" href="classSVF_1_1PAG.html">PAG</a>* pag = <a class="code" href="classSVF_1_1PAG.html#ac8910c7330638bdf31c23d4cc03ba9c5">PAG::getPAG</a>();</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">for</span>(PAG::CSToArgsListMap::iterator it = pag-&gt;<a class="code" href="classSVF_1_1PAG.html#ae0151d49c9199a2899d8b872dc1ebcfc">getCallSiteArgsMap</a>().begin(),</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; eit = pag-&gt;<a class="code" href="classSVF_1_1PAG.html#ae0151d49c9199a2899d8b872dc1ebcfc">getCallSiteArgsMap</a>().end(); it!=eit; ++it)</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; <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> callees;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; callgraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a486f79252c216eb5a9f4c09261a24ae2">getCallees</a>(it-&gt;first, callees);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">for</span> (PTACallGraph::FunctionSet::const_iterator cit = callees.begin(),</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; ecit = callees.end(); cit != ecit; cit++)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = *cit;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SaberCheckerAPI.html#acf41a2b6de063da9ed492ef0da129036">SaberCheckerAPI::getCheckerAPI</a>()-&gt;<a class="code" href="classSVF_1_1SaberCheckerAPI.html#ab6d9c2435bdb1c01542cc75e9eef0a4e">isMemDealloc</a>(fun)</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; || <a class="code" href="classSVF_1_1SaberCheckerAPI.html#acf41a2b6de063da9ed492ef0da129036">SaberCheckerAPI::getCheckerAPI</a>()-&gt;<a class="code" href="classSVF_1_1SaberCheckerAPI.html#a970676d884d66da9fce00fe5b60c96ba">isFClose</a>(fun))</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a1aedb70211aa31a4741615e611d64397">PAG::PAGNodeList</a>&amp; arglist = it-&gt;second;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">for</span>(PAG::PAGNodeList::const_iterator ait = arglist.begin(), aeit = arglist.end(); ait!=aeit; ++ait){</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a> *pagNode = *ait;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">if</span> (pagNode-&gt;<a class="code" href="classSVF_1_1PAGNode.html#afa5f1f6b3b7ffff2c417d58db7ef6bc2">isPointer</a>()) {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#ac6a3fe78d1459a79055703ea4afa14c6">addActualParmVFGNode</a>(pagNode, it-&gt;first);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">getDefSVFGNode</a>(pagNode)-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1VFG.html#a01b8694a5ab7acf8df0213225550791b">getActualParmVFGNode</a>(pagNode, it-&gt;first)-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</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; }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFG_html_a8e7a945f4266e8dc7dcfff2ad6494bfb"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">SVF::SVFG::getDefSVFGNode</a></div><div class="ttdeci">const SVFGNode * getDefSVFGNode(const PAGNode *pagNode) const</div><div class="ttdoc">Given a pagNode, return its definition site. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00171">SVFG.h:171</a></div></div>
436
+ <p class="definition">Definition at line <a class="el" href="SaberSVFGBuilder_8cpp_source.html#l00252">252</a> of file <a class="el" href="SaberSVFGBuilder_8cpp_source.html">SaberSVFGBuilder.cpp</a>.</p>
437
+ <div class="fragment"><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;{</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="classSVF_1_1PAG.html">PAG</a>* pag = <a class="code" href="classSVF_1_1PAG.html#ac8910c7330638bdf31c23d4cc03ba9c5">PAG::getPAG</a>();</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">for</span>(PAG::CSToArgsListMap::iterator it = pag-&gt;<a class="code" href="classSVF_1_1PAG.html#ae0151d49c9199a2899d8b872dc1ebcfc">getCallSiteArgsMap</a>().begin(),</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; eit = pag-&gt;<a class="code" href="classSVF_1_1PAG.html#ae0151d49c9199a2899d8b872dc1ebcfc">getCallSiteArgsMap</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> callees;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; callgraph-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a486f79252c216eb5a9f4c09261a24ae2">getCallees</a>(it-&gt;first, callees);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">for</span> (PTACallGraph::FunctionSet::const_iterator cit = callees.begin(),</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; ecit = callees.end(); cit != ecit; cit++)</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = *cit;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SaberCheckerAPI.html#acf41a2b6de063da9ed492ef0da129036">SaberCheckerAPI::getCheckerAPI</a>()-&gt;<a class="code" href="classSVF_1_1SaberCheckerAPI.html#ab6d9c2435bdb1c01542cc75e9eef0a4e">isMemDealloc</a>(fun)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; || <a class="code" href="classSVF_1_1SaberCheckerAPI.html#acf41a2b6de063da9ed492ef0da129036">SaberCheckerAPI::getCheckerAPI</a>()-&gt;<a class="code" href="classSVF_1_1SaberCheckerAPI.html#a970676d884d66da9fce00fe5b60c96ba">isFClose</a>(fun))</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="classSVF_1_1PAG.html#a1aedb70211aa31a4741615e611d64397">PAG::PAGNodeList</a>&amp; arglist = it-&gt;second;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">for</span>(PAG::PAGNodeList::const_iterator ait = arglist.begin(), aeit = arglist.end(); ait!=aeit; ++ait){</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a> *pagNode = *ait;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">if</span> (pagNode-&gt;<a class="code" href="classSVF_1_1PAGNode.html#afa5f1f6b3b7ffff2c417d58db7ef6bc2">isPointer</a>()) {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#ac6a3fe78d1459a79055703ea4afa14c6">addActualParmVFGNode</a>(pagNode, it-&gt;first);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1VFG.html#a3c97d77bc0348471d6c098d5655f15b2">addIntraDirectVFEdge</a>(<a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">getDefSVFGNode</a>(pagNode)-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1VFG.html#a01b8694a5ab7acf8df0213225550791b">getActualParmVFGNode</a>(pagNode, it-&gt;first)-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;}</div><div class="ttc" id="classSVF_1_1SVFG_html_a8e7a945f4266e8dc7dcfff2ad6494bfb"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">SVF::SVFG::getDefSVFGNode</a></div><div class="ttdeci">const SVFGNode * getDefSVFGNode(const PAGNode *pagNode) const</div><div class="ttdoc">Given a pagNode, return its definition site. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00171">SVFG.h:171</a></div></div>
438
438
  <div class="ttc" id="classSVF_1_1PTACallGraph_html_a5f5a5ec7e707a21994d301cc07d32a5a"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">SVF::PTACallGraph::FunctionSet</a></div><div class="ttdeci">Set&lt; const SVFFunction * &gt; FunctionSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00228">PTACallGraph.h:228</a></div></div>
439
439
  <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00233">BasicTypes.h:233</a></div></div>
440
440
  <div class="ttc" id="classSVF_1_1PAG_html"><div class="ttname"><a href="classSVF_1_1PAG.html">SVF::PAG</a></div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00047">PAG.h:47</a></div></div>
@@ -482,20 +482,20 @@ Additional Inherited Members</h2></td></tr>
482
482
 
483
483
  <p>Reimplemented from <a class="el" href="classSVF_1_1SVFGBuilder.html#ae2d84f7527de200a2f269dc1c056a305">SVF::SVFGBuilder</a>.</p>
484
484
 
485
- <p class="definition">Definition at line <a class="el" href="SaberSVFGBuilder_8cpp_source.html#l00037">37</a> of file <a class="el" href="SaberSVFGBuilder_8cpp_source.html">SaberSVFGBuilder.cpp</a>.</p>
486
- <div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html">MemSSA</a>* mssa = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a49a910bc4ea6e98d1584e74a018badc9">getMSSA</a>();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a0920e9f9896531959d74ae61013d96d6">buildSVFG</a>();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* pta = mssa-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;\tCollect Global Variables\n&quot;</span>));</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a2d0492c50159a5f97a587874c6877286">collectGlobals</a>(pta);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;\tRemove Dereference Direct SVFG Edge\n&quot;</span>));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#ad8f4f63d2071be4eb5f6fb2fdf29a10a">rmDerefDirSVFGEdges</a>(pta);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#ae0a9c42c850bda29aeae2f47ad2b8f4a">rmIncomingEdgeForSUStore</a>(pta);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;\tAdd Sink SVFG Nodes\n&quot;</span>));</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#ab6870d6f6f5abc5417dcea771eaa31f7">AddExtActualParmSVFGNodes</a>(pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>());</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span>(pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a4880571f57542afc50da506dfe273183">printStat</a>())</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#adc9fbb4553472b238d6c3bb5062279cb">performStat</a>();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</div><div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_ae0a9c42c850bda29aeae2f47ad2b8f4a"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#ae0a9c42c850bda29aeae2f47ad2b8f4a">SVF::SaberSVFGBuilder::rmIncomingEdgeForSUStore</a></div><div class="ttdeci">void rmIncomingEdgeForSUStore(BVDataPTAImpl *pta)</div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8cpp_source.html#l00220">SaberSVFGBuilder.cpp:220</a></div></div>
485
+ <p class="definition">Definition at line <a class="el" href="SaberSVFGBuilder_8cpp_source.html#l00038">38</a> of file <a class="el" href="SaberSVFGBuilder_8cpp_source.html">SaberSVFGBuilder.cpp</a>.</p>
486
+ <div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html">MemSSA</a>* mssa = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a49a910bc4ea6e98d1584e74a018badc9">getMSSA</a>();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a0920e9f9896531959d74ae61013d96d6">buildSVFG</a>();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* pta = mssa-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;\tCollect Global Variables\n&quot;</span>));</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a2d0492c50159a5f97a587874c6877286">collectGlobals</a>(pta);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;\tRemove Dereference Direct SVFG Edge\n&quot;</span>));</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#ad8f4f63d2071be4eb5f6fb2fdf29a10a">rmDerefDirSVFGEdges</a>(pta);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#ae0a9c42c850bda29aeae2f47ad2b8f4a">rmIncomingEdgeForSUStore</a>(pta);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;\tAdd Sink SVFG Nodes\n&quot;</span>));</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#ab6870d6f6f5abc5417dcea771eaa31f7">AddExtActualParmSVFGNodes</a>(pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>());</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">if</span>(pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a4880571f57542afc50da506dfe273183">printStat</a>())</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#adc9fbb4553472b238d6c3bb5062279cb">performStat</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;}</div><div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_ae0a9c42c850bda29aeae2f47ad2b8f4a"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#ae0a9c42c850bda29aeae2f47ad2b8f4a">SVF::SaberSVFGBuilder::rmIncomingEdgeForSUStore</a></div><div class="ttdeci">void rmIncomingEdgeForSUStore(BVDataPTAImpl *pta)</div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8cpp_source.html#l00221">SaberSVFGBuilder.cpp:221</a></div></div>
487
487
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html">SVF::BVDataPTAImpl</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00042">PointerAnalysisImpl.h:42</a></div></div>
488
488
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00100">SVFUtil.cpp:100</a></div></div>
489
489
  <div class="ttc" id="classSVF_1_1SVFG_html_adc9fbb4553472b238d6c3bb5062279cb"><div class="ttname"><a href="classSVF_1_1SVFG.html#adc9fbb4553472b238d6c3bb5062279cb">SVF::SVFG::performStat</a></div><div class="ttdeci">void performStat()</div><div class="ttdoc">Perform statistics. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00760">SVFG.cpp:760</a></div></div>
490
490
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a4880571f57542afc50da506dfe273183"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a4880571f57542afc50da506dfe273183">SVF::PointerAnalysis::printStat</a></div><div class="ttdeci">bool printStat()</div><div class="ttdoc">Whether print statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00377">PointerAnalysis.h:377</a></div></div>
491
491
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a7c9b7e5fe37ae31ba84d167945ca57df"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">SVF::PointerAnalysis::getPTACallGraph</a></div><div class="ttdeci">PTACallGraph * getPTACallGraph() const</div><div class="ttdoc">Return call graph. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00177">PointerAnalysis.h:177</a></div></div>
492
- <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_a2d0492c50159a5f97a587874c6877286"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#a2d0492c50159a5f97a587874c6877286">SVF::SaberSVFGBuilder::collectGlobals</a></div><div class="ttdeci">void collectGlobals(BVDataPTAImpl *pta)</div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8cpp_source.html#l00065">SaberSVFGBuilder.cpp:65</a></div></div>
492
+ <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_a2d0492c50159a5f97a587874c6877286"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#a2d0492c50159a5f97a587874c6877286">SVF::SaberSVFGBuilder::collectGlobals</a></div><div class="ttdeci">void collectGlobals(BVDataPTAImpl *pta)</div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8cpp_source.html#l00066">SaberSVFGBuilder.cpp:66</a></div></div>
493
493
  <div class="ttc" id="classSVF_1_1SVFG_html_a0920e9f9896531959d74ae61013d96d6"><div class="ttname"><a href="classSVF_1_1SVFG.html#a0920e9f9896531959d74ae61013d96d6">SVF::SVFG::buildSVFG</a></div><div class="ttdeci">virtual void buildSVFG()</div><div class="ttdoc">Start building SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00219">SVFG.cpp:219</a></div></div>
494
494
  <div class="ttc" id="classSVF_1_1MemSSA_html"><div class="ttname"><a href="classSVF_1_1MemSSA.html">SVF::MemSSA</a></div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00046">MemSSA.h:46</a></div></div>
495
- <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_ab6870d6f6f5abc5417dcea771eaa31f7"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#ab6870d6f6f5abc5417dcea771eaa31f7">SVF::SaberSVFGBuilder::AddExtActualParmSVFGNodes</a></div><div class="ttdeci">virtual void AddExtActualParmSVFGNodes(PTACallGraph *callgraph)</div><div class="ttdoc">Add actual parameter SVFGNode for 1st argument of a deallocation like external function. </div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8cpp_source.html#l00251">SaberSVFGBuilder.cpp:251</a></div></div>
495
+ <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_ab6870d6f6f5abc5417dcea771eaa31f7"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#ab6870d6f6f5abc5417dcea771eaa31f7">SVF::SaberSVFGBuilder::AddExtActualParmSVFGNodes</a></div><div class="ttdeci">virtual void AddExtActualParmSVFGNodes(PTACallGraph *callgraph)</div><div class="ttdoc">Add actual parameter SVFGNode for 1st argument of a deallocation like external function. </div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8cpp_source.html#l00252">SaberSVFGBuilder.cpp:252</a></div></div>
496
496
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00047">SVFUtil.h:47</a></div></div>
497
497
  <div class="ttc" id="SVFBasicTypes_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00147">SVFBasicTypes.h:147</a></div></div>
498
- <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_ad8f4f63d2071be4eb5f6fb2fdf29a10a"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#ad8f4f63d2071be4eb5f6fb2fdf29a10a">SVF::SaberSVFGBuilder::rmDerefDirSVFGEdges</a></div><div class="ttdeci">void rmDerefDirSVFGEdges(BVDataPTAImpl *pta)</div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8cpp_source.html#l00144">SaberSVFGBuilder.cpp:144</a></div></div>
498
+ <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_ad8f4f63d2071be4eb5f6fb2fdf29a10a"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#ad8f4f63d2071be4eb5f6fb2fdf29a10a">SVF::SaberSVFGBuilder::rmDerefDirSVFGEdges</a></div><div class="ttdeci">void rmDerefDirSVFGEdges(BVDataPTAImpl *pta)</div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8cpp_source.html#l00145">SaberSVFGBuilder.cpp:145</a></div></div>
499
499
  <div class="ttc" id="classSVF_1_1MemSSA_html_ad40617a1907b9a6b8cc24888ce54a0ac"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">SVF::MemSSA::getPTA</a></div><div class="ttdeci">BVDataPTAImpl * getPTA() const</div><div class="ttdoc">Return PTA. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00315">MemSSA.h:315</a></div></div>
500
500
  <div class="ttc" id="classSVF_1_1SVFG_html_a49a910bc4ea6e98d1584e74a018badc9"><div class="ttname"><a href="classSVF_1_1SVFG.html#a49a910bc4ea6e98d1584e74a018badc9">SVF::SVFG::getMSSA</a></div><div class="ttdeci">MemSSA * getMSSA() const</div><div class="ttdoc">Get SVFG memory SSA. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00138">SVFG.h:138</a></div></div>
501
501
  <div class="ttc" id="classSVF_1_1SVFGBuilder_html_a26bc3b9c07472e454bc567cd8746caef"><div class="ttname"><a href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">SVF::SVFGBuilder::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="SVFGBuilder_8h_source.html#l00119">SVFGBuilder.h:119</a></div></div>
@@ -529,30 +529,30 @@ Additional Inherited Members</h2></td></tr>
529
529
  <p>Collect memory pointed global pointers, note that this collection is recursively performed, for example gp&ndash;&gt;obj&ndash;&gt;obj' obj and obj' are both considered global memory</p>
530
530
  <p>Recursively collect global memory objects </p>
531
531
 
532
- <p class="definition">Definition at line <a class="el" href="SaberSVFGBuilder_8cpp_source.html#l00065">65</a> of file <a class="el" href="SaberSVFGBuilder_8cpp_source.html">SaberSVFGBuilder.cpp</a>.</p>
533
- <div class="fragment"><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;{</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="classSVF_1_1PAG.html">PAG</a>* pag = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1VFG.html#a560e0d31a6a9ba4c2b0ac540c233fef1">getPAG</a>();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="namespaceSVF.html#a39d27055a14d9d6363c668ee215a4676">NodeVector</a> worklist;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">PAG::iterator</a> it = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; it++)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* pagNode = it-&gt;second;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;DummyValPN&gt;(pagNode) || SVFUtil::isa&lt;DummyObjPN&gt;(pagNode))</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1GepObjPN.html">GepObjPN</a>* gepobj = SVFUtil::dyn_cast&lt;GepObjPN&gt;(pagNode)) {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;DummyObjPN&gt;(pag-&gt;<a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(gepobj-&gt;getBaseNode())))</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = pagNode-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a45be6b7b2f1f9754ea47e511e65d46ae">getValue</a>())</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val))</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; worklist.push_back(it-&gt;first);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#ae8c189214a61febd7529ad7209d789f3">NodeToPTSSMap</a> cachedPtsMap;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">while</span>(!worklist.empty())</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> = worklist.back();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; worklist.pop_back();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#aa17b6decf323982b2efa28c5585b9835">globs</a>.set(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a0c6594b4bae7924369bb61943c1da4fb">PointsTo</a>&amp; pts = pta-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">for</span>(PointsTo::iterator it = pts.begin(), eit = pts.end(); it!=eit; ++it)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#aa17b6decf323982b2efa28c5585b9835">globs</a> |= <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a7ed419e4356c1d9f6235449ab848d2ab">CollectPtsChain</a>(pta,*it,cachedPtsMap);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</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#l00365">GenericGraph.h:365</a></div></div>
534
- <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_ae8c189214a61febd7529ad7209d789f3"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#ae8c189214a61febd7529ad7209d789f3">SVF::SaberSVFGBuilder::NodeToPTSSMap</a></div><div class="ttdeci">Map&lt; NodeID, NodeBS &gt; NodeToPTSSMap</div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8h_source.html#l00047">SaberSVFGBuilder.h:47</a></div></div>
532
+ <p class="definition">Definition at line <a class="el" href="SaberSVFGBuilder_8cpp_source.html#l00066">66</a> of file <a class="el" href="SaberSVFGBuilder_8cpp_source.html">SaberSVFGBuilder.cpp</a>.</p>
533
+ <div class="fragment"><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;{</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="classSVF_1_1PAG.html">PAG</a>* pag = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1VFG.html#a560e0d31a6a9ba4c2b0ac540c233fef1">getPAG</a>();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="namespaceSVF.html#a39d27055a14d9d6363c668ee215a4676">NodeVector</a> worklist;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">PAG::iterator</a> it = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; it++)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* pagNode = it-&gt;second;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;DummyValPN&gt;(pagNode) || SVFUtil::isa&lt;DummyObjPN&gt;(pagNode))</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</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_1GepObjPN.html">GepObjPN</a>* gepobj = SVFUtil::dyn_cast&lt;GepObjPN&gt;(pagNode)) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;DummyObjPN&gt;(pag-&gt;<a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(gepobj-&gt;getBaseNode())))</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val = pagNode-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a45be6b7b2f1f9754ea47e511e65d46ae">getValue</a>())</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GlobalVariable&gt;(val))</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; worklist.push_back(it-&gt;first);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a4cb1f607e33d106dfa178e822c5ab7e1">NodeToPTSSMap</a> cachedPtsMap;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">while</span>(!worklist.empty())</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> = worklist.back();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; worklist.pop_back();</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a967dba864a6032e448222525aedb1f2a">globs</a>.set(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a0c6594b4bae7924369bb61943c1da4fb">PointsTo</a>&amp; pts = pta-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">for</span>(PointsTo::iterator it = pts.begin(), eit = pts.end(); it!=eit; ++it)</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a967dba864a6032e448222525aedb1f2a">globs</a> |= <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a411e168e2a6c27e15186c609c5e216b3">CollectPtsChain</a>(pta,*it,cachedPtsMap);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</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#l00365">GenericGraph.h:365</a></div></div>
534
+ <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_a4cb1f607e33d106dfa178e822c5ab7e1"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#a4cb1f607e33d106dfa178e822c5ab7e1">SVF::SaberSVFGBuilder::NodeToPTSSMap</a></div><div class="ttdeci">Map&lt; NodeID, PointsTo &gt; NodeToPTSSMap</div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8h_source.html#l00047">SaberSVFGBuilder.h:47</a></div></div>
535
535
  <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>
536
536
  <div class="ttc" id="classSVF_1_1PAG_html"><div class="ttname"><a href="classSVF_1_1PAG.html">SVF::PAG</a></div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00047">PAG.h:47</a></div></div>
537
537
  <div class="ttc" id="classSVF_1_1PAGNode_html_a45be6b7b2f1f9754ea47e511e65d46ae"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a45be6b7b2f1f9754ea47e511e65d46ae">SVF::PAGNode::getValue</a></div><div class="ttdeci">const Value * getValue() const</div><div class="ttdoc">Get/has methods of the components. </div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00093">PAGNode.h:93</a></div></div>
538
538
  <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#l00369">GenericGraph.h:369</a></div></div>
539
539
  <div class="ttc" id="classSVF_1_1PAG_html_a3aa1c92eb8a6fab72996964de80f19ac"><div class="ttname"><a href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">SVF::PAG::getPAGNode</a></div><div class="ttdeci">PAGNode * getPAGNode(NodeID id) const</div><div class="ttdoc">Get PAGNode ID. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00539">PAG.h:539</a></div></div>
540
540
  <div class="ttc" id="classSVF_1_1GenericGraph_html_ac213302cf5c7cdf3b66f7b18649d0fbc"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVF::GenericGraph&lt; PAGNode, PAGEdge &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#l00337">GenericGraph.h:337</a></div></div>
541
- <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_aa17b6decf323982b2efa28c5585b9835"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#aa17b6decf323982b2efa28c5585b9835">SVF::SaberSVFGBuilder::globs</a></div><div class="ttdeci">NodeBS globs</div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8h_source.html#l00099">SaberSVFGBuilder.h:99</a></div></div>
541
+ <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_a967dba864a6032e448222525aedb1f2a"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#a967dba864a6032e448222525aedb1f2a">SVF::SaberSVFGBuilder::globs</a></div><div class="ttdeci">PointsTo globs</div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8h_source.html#l00099">SaberSVFGBuilder.h:99</a></div></div>
542
542
  <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#l00098">PointerAnalysisImpl.h:98</a></div></div>
543
543
  <div class="ttc" id="namespaceSVF_html_a39d27055a14d9d6363c668ee215a4676"><div class="ttname"><a href="namespaceSVF.html#a39d27055a14d9d6363c668ee215a4676">SVF::NodeVector</a></div><div class="ttdeci">std::vector&lt; NodeID &gt; NodeVector</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00117">SVFBasicTypes.h:117</a></div></div>
544
544
  <div class="ttc" id="classSVF_1_1VFG_html_a560e0d31a6a9ba4c2b0ac540c233fef1"><div class="ttname"><a href="classSVF_1_1VFG.html#a560e0d31a6a9ba4c2b0ac540c233fef1">SVF::VFG::getPAG</a></div><div class="ttdeci">PAG * getPAG() const</div><div class="ttdoc">Return PAG. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00129">VFG.h:129</a></div></div>
545
545
  <div class="ttc" id="classSVF_1_1PAGNode_html"><div class="ttname"><a href="classSVF_1_1PAGNode.html">SVF::PAGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00045">PAGNode.h:45</a></div></div>
546
546
  <div class="ttc" id="classSVF_1_1GepObjPN_html"><div class="ttname"><a href="classSVF_1_1GepObjPN.html">SVF::GepObjPN</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00453">PAGNode.h:453</a></div></div>
547
- <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_a7ed419e4356c1d9f6235449ab848d2ab"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#a7ed419e4356c1d9f6235449ab848d2ab">SVF::SaberSVFGBuilder::CollectPtsChain</a></div><div class="ttdeci">NodeBS &amp; CollectPtsChain(BVDataPTAImpl *pta, NodeID id, NodeToPTSSMap &amp;cachedPtsMap)</div><div class="ttdoc">Collect objects along points-to chains. </div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8cpp_source.html#l00100">SaberSVFGBuilder.cpp:100</a></div></div>
548
547
  <div class="ttc" id="classSVF_1_1SVFGBuilder_html_a26bc3b9c07472e454bc567cd8746caef"><div class="ttname"><a href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">SVF::SVFGBuilder::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="SVFGBuilder_8h_source.html#l00119">SVFGBuilder.h:119</a></div></div>
549
548
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00078">BasicTypes.h:78</a></div></div>
550
549
  <div class="ttc" id="namespaceSVF_html_a0c6594b4bae7924369bb61943c1da4fb"><div class="ttname"><a href="namespaceSVF.html#a0c6594b4bae7924369bb61943c1da4fb">SVF::PointsTo</a></div><div class="ttdeci">NodeBS PointsTo</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00088">SVFBasicTypes.h:88</a></div></div>
550
+ <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_a411e168e2a6c27e15186c609c5e216b3"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#a411e168e2a6c27e15186c609c5e216b3">SVF::SaberSVFGBuilder::CollectPtsChain</a></div><div class="ttdeci">PointsTo &amp; CollectPtsChain(BVDataPTAImpl *pta, NodeID id, NodeToPTSSMap &amp;cachedPtsMap)</div><div class="ttdoc">Collect objects along points-to chains. </div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8cpp_source.html#l00101">SaberSVFGBuilder.cpp:101</a></div></div>
551
551
  </div><!-- fragment -->
552
552
  </div>
553
553
  </div>
554
- <a id="a7ed419e4356c1d9f6235449ab848d2ab"></a>
555
- <h2 class="memtitle"><span class="permalink"><a href="#a7ed419e4356c1d9f6235449ab848d2ab">&#9670;&nbsp;</a></span>CollectPtsChain()</h2>
554
+ <a id="a411e168e2a6c27e15186c609c5e216b3"></a>
555
+ <h2 class="memtitle"><span class="permalink"><a href="#a411e168e2a6c27e15186c609c5e216b3">&#9670;&nbsp;</a></span>CollectPtsChain()</h2>
556
556
 
557
557
  <div class="memitem">
558
558
  <div class="memproto">
@@ -561,7 +561,7 @@ Additional Inherited Members</h2></td></tr>
561
561
  <td class="mlabels-left">
562
562
  <table class="memname">
563
563
  <tr>
564
- <td class="memname"><a class="el" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp; SaberSVFGBuilder::CollectPtsChain </td>
564
+ <td class="memname"><a class="el" href="namespaceSVF.html#a0c6594b4bae7924369bb61943c1da4fb">PointsTo</a> &amp; SaberSVFGBuilder::CollectPtsChain </td>
565
565
  <td>(</td>
566
566
  <td class="paramtype"><a class="el" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a> *&#160;</td>
567
567
  <td class="paramname"><em>pta</em>, </td>
@@ -575,7 +575,7 @@ Additional Inherited Members</h2></td></tr>
575
575
  <tr>
576
576
  <td class="paramkey"></td>
577
577
  <td></td>
578
- <td class="paramtype"><a class="el" href="classSVF_1_1SaberSVFGBuilder.html#ae8c189214a61febd7529ad7209d789f3">NodeToPTSSMap</a> &amp;&#160;</td>
578
+ <td class="paramtype"><a class="el" href="classSVF_1_1SaberSVFGBuilder.html#a4cb1f607e33d106dfa178e822c5ab7e1">NodeToPTSSMap</a> &amp;&#160;</td>
579
579
  <td class="paramname"><em>cachedPtsMap</em>&#160;</td>
580
580
  </tr>
581
581
  <tr>
@@ -593,8 +593,8 @@ Additional Inherited Members</h2></td></tr>
593
593
 
594
594
  <p>Collect objects along points-to chains. </p>
595
595
 
596
- <p class="definition">Definition at line <a class="el" href="SaberSVFGBuilder_8cpp_source.html#l00100">100</a> of file <a class="el" href="SaberSVFGBuilder_8cpp_source.html">SaberSVFGBuilder.cpp</a>.</p>
597
- <div class="fragment"><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="classSVF_1_1PAG.html">PAG</a>* pag = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1VFG.html#a560e0d31a6a9ba4c2b0ac540c233fef1">getPAG</a>();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> baseId = pag-&gt;<a class="code" href="classSVF_1_1PAG.html#ae1e22e620954e3e9ede3f2bf0ac90c36">getBaseObjNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; NodeToPTSSMap::iterator it = cachedPtsMap.find(baseId);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span>(it!=cachedPtsMap.end())</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="namespaceSVF.html#a0c6594b4bae7924369bb61943c1da4fb">PointsTo</a>&amp; pts = cachedPtsMap[baseId];</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; pts |= pag-&gt;<a class="code" href="classSVF_1_1PAG.html#a19c4e63ab6129d4e7aeae8b280bb057b">getFieldsAfterCollapse</a>(baseId);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a8e07c6afc4ae6e2792431065c2948039">WorkList</a> worklist;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">for</span>(PointsTo::iterator it = pts.begin(), eit = pts.end(); it!=eit; ++it)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(*it);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">while</span>(!worklist.empty())</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = worklist.pop();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a0c6594b4bae7924369bb61943c1da4fb">PointsTo</a>&amp; tmp = pta-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(nodeId);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">for</span>(PointsTo::iterator it = tmp.begin(), eit = tmp.end(); it!=eit; ++it)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; pts |= <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a7ed419e4356c1d9f6235449ab848d2ab">CollectPtsChain</a>(pta,*it,cachedPtsMap);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">return</span> pts;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;}</div><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>
596
+ <p class="definition">Definition at line <a class="el" href="SaberSVFGBuilder_8cpp_source.html#l00101">101</a> of file <a class="el" href="SaberSVFGBuilder_8cpp_source.html">SaberSVFGBuilder.cpp</a>.</p>
597
+ <div class="fragment"><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;{</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="classSVF_1_1PAG.html">PAG</a>* pag = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1VFG.html#a560e0d31a6a9ba4c2b0ac540c233fef1">getPAG</a>();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> baseId = pag-&gt;<a class="code" href="classSVF_1_1PAG.html#ae1e22e620954e3e9ede3f2bf0ac90c36">getBaseObjNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; NodeToPTSSMap::iterator it = cachedPtsMap.find(baseId);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span>(it!=cachedPtsMap.end())</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="namespaceSVF.html#a0c6594b4bae7924369bb61943c1da4fb">PointsTo</a>&amp; pts = cachedPtsMap[baseId];</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; pts |= pag-&gt;<a class="code" href="classSVF_1_1PAG.html#a19c4e63ab6129d4e7aeae8b280bb057b">getFieldsAfterCollapse</a>(baseId);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a8e07c6afc4ae6e2792431065c2948039">WorkList</a> worklist;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">for</span>(PointsTo::iterator it = pts.begin(), eit = pts.end(); it!=eit; ++it)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(*it);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">while</span>(!worklist.empty())</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = worklist.pop();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a0c6594b4bae7924369bb61943c1da4fb">PointsTo</a>&amp; tmp = pta-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(nodeId);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">for</span>(PointsTo::iterator it = tmp.begin(), eit = tmp.end(); it!=eit; ++it)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; pts |= <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a411e168e2a6c27e15186c609c5e216b3">CollectPtsChain</a>(pta,*it,cachedPtsMap);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">return</span> pts;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;}</div><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>
598
598
  <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_a8e07c6afc4ae6e2792431065c2948039"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#a8e07c6afc4ae6e2792431065c2948039">SVF::SaberSVFGBuilder::WorkList</a></div><div class="ttdeci">FIFOWorkList&lt; NodeID &gt; WorkList</div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8h_source.html#l00048">SaberSVFGBuilder.h:48</a></div></div>
599
599
  <div class="ttc" id="classSVF_1_1PAG_html"><div class="ttname"><a href="classSVF_1_1PAG.html">SVF::PAG</a></div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00047">PAG.h:47</a></div></div>
600
600
  <div class="ttc" id="classSVF_1_1PAG_html_a19c4e63ab6129d4e7aeae8b280bb057b"><div class="ttname"><a href="classSVF_1_1PAG.html#a19c4e63ab6129d4e7aeae8b280bb057b">SVF::PAG::getFieldsAfterCollapse</a></div><div class="ttdeci">NodeBS getFieldsAfterCollapse(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00800">PAG.cpp:800</a></div></div>
@@ -602,9 +602,9 @@ Additional Inherited Members</h2></td></tr>
602
602
  <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#l00098">PointerAnalysisImpl.h:98</a></div></div>
603
603
  <div class="ttc" id="classSVF_1_1PAG_html_ae1e22e620954e3e9ede3f2bf0ac90c36"><div class="ttname"><a href="classSVF_1_1PAG.html#ae1e22e620954e3e9ede3f2bf0ac90c36">SVF::PAG::getBaseObjNode</a></div><div class="ttdeci">NodeID getBaseObjNode(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00717">PAG.h:717</a></div></div>
604
604
  <div class="ttc" id="classSVF_1_1VFG_html_a560e0d31a6a9ba4c2b0ac540c233fef1"><div class="ttname"><a href="classSVF_1_1VFG.html#a560e0d31a6a9ba4c2b0ac540c233fef1">SVF::VFG::getPAG</a></div><div class="ttdeci">PAG * getPAG() const</div><div class="ttdoc">Return PAG. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00129">VFG.h:129</a></div></div>
605
- <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_a7ed419e4356c1d9f6235449ab848d2ab"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#a7ed419e4356c1d9f6235449ab848d2ab">SVF::SaberSVFGBuilder::CollectPtsChain</a></div><div class="ttdeci">NodeBS &amp; CollectPtsChain(BVDataPTAImpl *pta, NodeID id, NodeToPTSSMap &amp;cachedPtsMap)</div><div class="ttdoc">Collect objects along points-to chains. </div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8cpp_source.html#l00100">SaberSVFGBuilder.cpp:100</a></div></div>
606
605
  <div class="ttc" id="classSVF_1_1SVFGBuilder_html_a26bc3b9c07472e454bc567cd8746caef"><div class="ttname"><a href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">SVF::SVFGBuilder::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="SVFGBuilder_8h_source.html#l00119">SVFGBuilder.h:119</a></div></div>
607
606
  <div class="ttc" id="namespaceSVF_html_a0c6594b4bae7924369bb61943c1da4fb"><div class="ttname"><a href="namespaceSVF.html#a0c6594b4bae7924369bb61943c1da4fb">SVF::PointsTo</a></div><div class="ttdeci">NodeBS PointsTo</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00088">SVFBasicTypes.h:88</a></div></div>
607
+ <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_a411e168e2a6c27e15186c609c5e216b3"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#a411e168e2a6c27e15186c609c5e216b3">SVF::SaberSVFGBuilder::CollectPtsChain</a></div><div class="ttdeci">PointsTo &amp; CollectPtsChain(BVDataPTAImpl *pta, NodeID id, NodeToPTSSMap &amp;cachedPtsMap)</div><div class="ttdoc">Collect objects along points-to chains. </div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8cpp_source.html#l00101">SaberSVFGBuilder.cpp:101</a></div></div>
608
608
  </div><!-- fragment -->
609
609
  </div>
610
610
  </div>
@@ -681,8 +681,8 @@ Additional Inherited Members</h2></td></tr>
681
681
  <p>Return TRUE if this is a strong update STORE statement. </p>
682
682
  <p>Find the unique element in cpts </p>
683
683
 
684
- <p class="definition">Definition at line <a class="el" href="SaberSVFGBuilder_8cpp_source.html#l00186">186</a> of file <a class="el" href="SaberSVFGBuilder_8cpp_source.html">SaberSVFGBuilder.cpp</a>.</p>
685
- <div class="fragment"><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;{</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordtype">bool</span> isSU = <span class="keyword">false</span>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* store = SVFUtil::dyn_cast&lt;StoreSVFGNode&gt;(node))</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a0c6594b4bae7924369bb61943c1da4fb">PointsTo</a>&amp; dstCPSet = pta-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(store-&gt;getPAGDstNodeID());</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">if</span> (dstCPSet.count() == 1)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; PointsTo::iterator it = dstCPSet.begin();</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; singleton = *it;</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; <span class="comment">// Strong update can be made if this points-to target is not heap, array or field-insensitive.</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">if</span> (!pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ae6ea391ac44dffeb6899bb44323c5361">isHeapMemObj</a>(singleton) &amp;&amp; !pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a89dfeedf8e3e91603a1e9c73e3608a73">isArrayMemObj</a>(singleton)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; &amp;&amp; <a class="code" href="classSVF_1_1PAG.html#ac8910c7330638bdf31c23d4cc03ba9c5">PAG::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1PAG.html#a459e2ef671d002ef6edf25cf0bfb7924">getBaseObj</a>(singleton)-&gt;<a class="code" href="classSVF_1_1MemObj.html#a9d50a00ff608df21f50b3b2823128901">isFieldInsensitive</a>() == <span class="keyword">false</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; &amp;&amp; !pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a108380f6f0b67654bb7c7676686096c8">isLocalVarInRecursiveFun</a>(singleton))</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; isSU = <span class="keyword">true</span>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</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; <span class="keywordflow">return</span> isSU;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;}</div><div class="ttc" id="classSVF_1_1StoreVFGNode_html"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html">SVF::StoreVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00237">VFGNode.h:237</a></div></div>
684
+ <p class="definition">Definition at line <a class="el" href="SaberSVFGBuilder_8cpp_source.html#l00187">187</a> of file <a class="el" href="SaberSVFGBuilder_8cpp_source.html">SaberSVFGBuilder.cpp</a>.</p>
685
+ <div class="fragment"><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;{</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordtype">bool</span> isSU = <span class="keyword">false</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>* store = SVFUtil::dyn_cast&lt;StoreSVFGNode&gt;(node))</div><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="keyword">const</span> <a class="code" href="namespaceSVF.html#a0c6594b4bae7924369bb61943c1da4fb">PointsTo</a>&amp; dstCPSet = pta-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(store-&gt;getPAGDstNodeID());</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">if</span> (dstCPSet.count() == 1)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; PointsTo::iterator it = dstCPSet.begin();</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; singleton = *it;</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; <span class="comment">// Strong update can be made if this points-to target is not heap, array or field-insensitive.</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">if</span> (!pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ae6ea391ac44dffeb6899bb44323c5361">isHeapMemObj</a>(singleton) &amp;&amp; !pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a89dfeedf8e3e91603a1e9c73e3608a73">isArrayMemObj</a>(singleton)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; &amp;&amp; <a class="code" href="classSVF_1_1PAG.html#ac8910c7330638bdf31c23d4cc03ba9c5">PAG::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1PAG.html#a459e2ef671d002ef6edf25cf0bfb7924">getBaseObj</a>(singleton)-&gt;<a class="code" href="classSVF_1_1MemObj.html#a9d50a00ff608df21f50b3b2823128901">isFieldInsensitive</a>() == <span class="keyword">false</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; &amp;&amp; !pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a108380f6f0b67654bb7c7676686096c8">isLocalVarInRecursiveFun</a>(singleton))</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; isSU = <span class="keyword">true</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</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="keywordflow">return</span> isSU;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;}</div><div class="ttc" id="classSVF_1_1StoreVFGNode_html"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html">SVF::StoreVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00237">VFGNode.h:237</a></div></div>
686
686
  <div class="ttc" id="classSVF_1_1MemObj_html_a9d50a00ff608df21f50b3b2823128901"><div class="ttname"><a href="classSVF_1_1MemObj.html#a9d50a00ff608df21f50b3b2823128901">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="MemModel_8h_source.html#l00337">MemModel.h:337</a></div></div>
687
687
  <div class="ttc" id="classSVF_1_1PAG_html_ac8910c7330638bdf31c23d4cc03ba9c5"><div class="ttname"><a href="classSVF_1_1PAG.html#ac8910c7330638bdf31c23d4cc03ba9c5">SVF::PAG::getPAG</a></div><div class="ttdeci">static PAG * getPAG(bool buildFromFile=false)</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00162">PAG.h:162</a></div></div>
688
688
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a89dfeedf8e3e91603a1e9c73e3608a73"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a89dfeedf8e3e91603a1e9c73e3608a73">SVF::PointerAnalysis::isArrayMemObj</a></div><div class="ttdeci">bool isArrayMemObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00334">PointerAnalysis.h:334</a></div></div>
@@ -720,8 +720,8 @@ Additional Inherited Members</h2></td></tr>
720
720
  <p>Remove direct value-flow edge to a dereference point for Saber source-sink memory error detection for example, given two statements: p = alloc; q = *p, the direct <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> edge between them is deleted Because those edges only stand for values used at the dereference points but they can not pass the value to other definitions </p>
721
721
  <p>for store, connect the RHS/LHS pointer to its def </p>
722
722
 
723
- <p class="definition">Definition at line <a class="el" href="SaberSVFGBuilder_8cpp_source.html#l00144">144</a> of file <a class="el" href="SaberSVFGBuilder_8cpp_source.html">SaberSVFGBuilder.cpp</a>.</p>
724
- <div class="fragment"><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;{</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">SVFG::iterator</a> it = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StmtVFGNode.html">StmtSVFGNode</a>* stmtNode = SVFUtil::dyn_cast&lt;StmtSVFGNode&gt;(node))</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;StoreSVFGNode&gt;(stmtNode))</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* def = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">getDefSVFGNode</a>(stmtNode-&gt;getPAGDstNode());</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50">getIntraVFGEdge</a>(def,stmtNode,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d">SVFGEdge::IntraDirectVF</a>);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge &amp;&amp; <span class="stringliteral">&quot;Edge not found!&quot;</span>);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a931d8b82e10a54d68c68cf6bd80264be">removeSVFGEdge</a>(edge);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a4bfa849a30d1982ae597d26b4a01dd0f">accessGlobal</a>(pta,stmtNode-&gt;getPAGDstNode()))</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a9431a9dcbcf88b78e721b0347046e997">globSVFGNodes</a>.insert(stmtNode);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadSVFGNode&gt;(stmtNode))</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* def = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">getDefSVFGNode</a>(stmtNode-&gt;getPAGSrcNode());</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50">getIntraVFGEdge</a>(def,stmtNode,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d">SVFGEdge::IntraDirectVF</a>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge &amp;&amp; <span class="stringliteral">&quot;Edge not found!&quot;</span>);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a931d8b82e10a54d68c68cf6bd80264be">removeSVFGEdge</a>(edge);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a4bfa849a30d1982ae597d26b4a01dd0f">accessGlobal</a>(pta,stmtNode-&gt;getPAGSrcNode()))</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a9431a9dcbcf88b78e721b0347046e997">globSVFGNodes</a>.insert(stmtNode);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</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#l00365">GenericGraph.h:365</a></div></div>
723
+ <p class="definition">Definition at line <a class="el" href="SaberSVFGBuilder_8cpp_source.html#l00145">145</a> of file <a class="el" href="SaberSVFGBuilder_8cpp_source.html">SaberSVFGBuilder.cpp</a>.</p>
724
+ <div class="fragment"><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;{</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">SVFG::iterator</a> it = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StmtVFGNode.html">StmtSVFGNode</a>* stmtNode = SVFUtil::dyn_cast&lt;StmtSVFGNode&gt;(node))</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;StoreSVFGNode&gt;(stmtNode))</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* def = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">getDefSVFGNode</a>(stmtNode-&gt;getPAGDstNode());</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50">getIntraVFGEdge</a>(def,stmtNode,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d">SVFGEdge::IntraDirectVF</a>);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge &amp;&amp; <span class="stringliteral">&quot;Edge not found!&quot;</span>);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a931d8b82e10a54d68c68cf6bd80264be">removeSVFGEdge</a>(edge);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a4bfa849a30d1982ae597d26b4a01dd0f">accessGlobal</a>(pta,stmtNode-&gt;getPAGDstNode()))</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a9431a9dcbcf88b78e721b0347046e997">globSVFGNodes</a>.insert(stmtNode);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadSVFGNode&gt;(stmtNode))</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* def = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">getDefSVFGNode</a>(stmtNode-&gt;getPAGSrcNode());</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50">getIntraVFGEdge</a>(def,stmtNode,<a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d">SVFGEdge::IntraDirectVF</a>);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge &amp;&amp; <span class="stringliteral">&quot;Edge not found!&quot;</span>);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a931d8b82e10a54d68c68cf6bd80264be">removeSVFGEdge</a>(edge);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a4bfa849a30d1982ae597d26b4a01dd0f">accessGlobal</a>(pta,stmtNode-&gt;getPAGSrcNode()))</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a9431a9dcbcf88b78e721b0347046e997">globSVFGNodes</a>.insert(stmtNode);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</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#l00365">GenericGraph.h:365</a></div></div>
725
725
  <div class="ttc" id="classSVF_1_1SVFG_html_a931d8b82e10a54d68c68cf6bd80264be"><div class="ttname"><a href="classSVF_1_1SVFG.html#a931d8b82e10a54d68c68cf6bd80264be">SVF::SVFG::removeSVFGEdge</a></div><div class="ttdeci">void removeSVFGEdge(SVFGEdge *edge)</div><div class="ttdoc">Remove a SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00237">SVFG.h:237</a></div></div>
726
726
  <div class="ttc" id="classSVF_1_1VFGEdge_html_a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a08201e6cbff4817e44568747a966b71d">SVF::VFGEdge::IntraDirectVF</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00053">VFGEdge.h:53</a></div></div>
727
727
  <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>
@@ -730,7 +730,7 @@ Additional Inherited Members</h2></td></tr>
730
730
  <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_a9431a9dcbcf88b78e721b0347046e997"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#a9431a9dcbcf88b78e721b0347046e997">SVF::SaberSVFGBuilder::globSVFGNodes</a></div><div class="ttdeci">SVFGNodeSet globSVFGNodes</div><div class="ttdoc">Store all global SVFG nodes. </div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8h_source.html#l00101">SaberSVFGBuilder.h:101</a></div></div>
731
731
  <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#l00369">GenericGraph.h:369</a></div></div>
732
732
  <div class="ttc" id="classSVF_1_1VFG_html_a241d0489bf0315460e2b07db87e7847c"><div class="ttname"><a href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">SVF::VFG::iterator</a></div><div class="ttdeci">VFGNodeIDToNodeMapTy::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00077">VFG.h:77</a></div></div>
733
- <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_a4bfa849a30d1982ae597d26b4a01dd0f"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#a4bfa849a30d1982ae597d26b4a01dd0f">SVF::SaberSVFGBuilder::accessGlobal</a></div><div class="ttdeci">bool accessGlobal(BVDataPTAImpl *pta, const PAGNode *pagNode)</div><div class="ttdoc">Whether points-to of a PAGNode points-to global variable. </div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8cpp_source.html#l00134">SaberSVFGBuilder.cpp:134</a></div></div>
733
+ <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_a4bfa849a30d1982ae597d26b4a01dd0f"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#a4bfa849a30d1982ae597d26b4a01dd0f">SVF::SaberSVFGBuilder::accessGlobal</a></div><div class="ttdeci">bool accessGlobal(BVDataPTAImpl *pta, const PAGNode *pagNode)</div><div class="ttdoc">Whether points-to of a PAGNode points-to global variable. </div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8cpp_source.html#l00135">SaberSVFGBuilder.cpp:135</a></div></div>
734
734
  <div class="ttc" id="classSVF_1_1VFG_html_ae1348fd6d196ee8a6bd8d98022464d50"><div class="ttname"><a href="classSVF_1_1VFG.html#ae1348fd6d196ee8a6bd8d98022464d50">SVF::VFG::getIntraVFGEdge</a></div><div class="ttdeci">VFGEdge * getIntraVFGEdge(const VFGNode *src, const VFGNode *dst, VFGEdge::VFGEdgeK kind)</div><div class="ttdoc">Get a SVFG edge according to src and dst. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00747">VFG.cpp:747</a></div></div>
735
735
  <div class="ttc" id="classSVF_1_1StmtVFGNode_html"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html">SVF::StmtVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00115">VFGNode.h:115</a></div></div>
736
736
  <div class="ttc" id="classSVF_1_1SVFGBuilder_html_a26bc3b9c07472e454bc567cd8746caef"><div class="ttname"><a href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">SVF::SVFGBuilder::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="SVFGBuilder_8h_source.html#l00119">SVFGBuilder.h:119</a></div></div>
@@ -765,11 +765,11 @@ Additional Inherited Members</h2></td></tr>
765
765
  <p>Remove Incoming Edge for strong-update (SU) store instruction Because the SU node does not receive indirect value</p>
766
766
  <p>e.g., L1: *p = O; (singleton) L2: *p = _; (SU here) We should remove the indirect value flow L1 -&gt; L2 Because the points-to set of O from L1 does not pass to that after L2 </p>
767
767
 
768
- <p class="definition">Definition at line <a class="el" href="SaberSVFGBuilder_8cpp_source.html#l00220">220</a> of file <a class="el" href="SaberSVFGBuilder_8cpp_source.html">SaberSVFGBuilder.cpp</a>.</p>
769
- <div class="fragment"><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;{</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">SVFG::iterator</a> it = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StmtVFGNode.html">StmtSVFGNode</a>* stmtNode = SVFUtil::dyn_cast&lt;StmtSVFGNode&gt;(node))</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="keywordflow">if</span>(SVFUtil::isa&lt;StoreSVFGNode&gt;(stmtNode) &amp;&amp; SVFUtil::isa&lt;StoreInst&gt;(stmtNode-&gt;getValue()))</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> singleton;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a21c20865a0093192978cec09ce09f20b">isStrongUpdate</a>(node, singleton, pta)) {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;SVFGEdge*&gt;</a> toRemove;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> it2 = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), eit2 = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); it2 != eit2; ++it2) {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> ((*it2)-&gt;isIndirectVFGEdge()) {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; toRemove.insert(*it2);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge: toRemove) {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a931d8b82e10a54d68c68cf6bd80264be">removeSVFGEdge</a>(edge);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</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; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</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#l00365">GenericGraph.h:365</a></div></div>
768
+ <p class="definition">Definition at line <a class="el" href="SaberSVFGBuilder_8cpp_source.html#l00221">221</a> of file <a class="el" href="SaberSVFGBuilder_8cpp_source.html">SaberSVFGBuilder.cpp</a>.</p>
769
+ <div class="fragment"><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;{</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">SVFG::iterator</a> it = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</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="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StmtVFGNode.html">StmtSVFGNode</a>* stmtNode = SVFUtil::dyn_cast&lt;StmtSVFGNode&gt;(node))</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;StoreSVFGNode&gt;(stmtNode) &amp;&amp; SVFUtil::isa&lt;StoreInst&gt;(stmtNode-&gt;getValue()))</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> singleton;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SaberSVFGBuilder.html#a21c20865a0093192978cec09ce09f20b">isStrongUpdate</a>(node, singleton, pta)) {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;SVFGEdge*&gt;</a> toRemove;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> it2 = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), eit2 = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); it2 != eit2; ++it2) {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span> ((*it2)-&gt;isIndirectVFGEdge()) {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; toRemove.insert(*it2);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge: toRemove) {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <a class="code" href="classSVF_1_1SVFGBuilder.html#a26bc3b9c07472e454bc567cd8746caef">svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a931d8b82e10a54d68c68cf6bd80264be">removeSVFGEdge</a>(edge);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</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; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</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;}</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#l00365">GenericGraph.h:365</a></div></div>
770
770
  <div class="ttc" id="classSVF_1_1SVFG_html_a931d8b82e10a54d68c68cf6bd80264be"><div class="ttname"><a href="classSVF_1_1SVFG.html#a931d8b82e10a54d68c68cf6bd80264be">SVF::SVFG::removeSVFGEdge</a></div><div class="ttdeci">void removeSVFGEdge(SVFGEdge *edge)</div><div class="ttdoc">Remove a SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00237">SVFG.h:237</a></div></div>
771
771
  <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>
772
- <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_a21c20865a0093192978cec09ce09f20b"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#a21c20865a0093192978cec09ce09f20b">SVF::SaberSVFGBuilder::isStrongUpdate</a></div><div class="ttdeci">bool isStrongUpdate(const SVFGNode *node, NodeID &amp;singleton, BVDataPTAImpl *pta)</div><div class="ttdoc">Return TRUE if this is a strong update STORE statement. </div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8cpp_source.html#l00186">SaberSVFGBuilder.cpp:186</a></div></div>
772
+ <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_a21c20865a0093192978cec09ce09f20b"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#a21c20865a0093192978cec09ce09f20b">SVF::SaberSVFGBuilder::isStrongUpdate</a></div><div class="ttdeci">bool isStrongUpdate(const SVFGNode *node, NodeID &amp;singleton, BVDataPTAImpl *pta)</div><div class="ttdoc">Return TRUE if this is a strong update STORE statement. </div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8cpp_source.html#l00187">SaberSVFGBuilder.cpp:187</a></div></div>
773
773
  <div class="ttc" id="classSVF_1_1GenericNode_html_ae5b113921530eee6afe58a65d8e5b3a7"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">SVF::GenericNode::InEdgeBegin</a></div><div class="ttdeci">iterator InEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00209">GenericGraph.h:209</a></div></div>
774
774
  <div class="ttc" id="classSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
775
775
  <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#l00369">GenericGraph.h:369</a></div></div>
@@ -784,8 +784,8 @@ Additional Inherited Members</h2></td></tr>
784
784
  </div>
785
785
  </div>
786
786
  <h2 class="groupheader">Member Data Documentation</h2>
787
- <a id="aa17b6decf323982b2efa28c5585b9835"></a>
788
- <h2 class="memtitle"><span class="permalink"><a href="#aa17b6decf323982b2efa28c5585b9835">&#9670;&nbsp;</a></span>globs</h2>
787
+ <a id="a967dba864a6032e448222525aedb1f2a"></a>
788
+ <h2 class="memtitle"><span class="permalink"><a href="#a967dba864a6032e448222525aedb1f2a">&#9670;&nbsp;</a></span>globs</h2>
789
789
 
790
790
  <div class="memitem">
791
791
  <div class="memproto">
@@ -794,7 +794,7 @@ Additional Inherited Members</h2></td></tr>
794
794
  <td class="mlabels-left">
795
795
  <table class="memname">
796
796
  <tr>
797
- <td class="memname"><a class="el" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> SVF::SaberSVFGBuilder::globs</td>
797
+ <td class="memname"><a class="el" href="namespaceSVF.html#a0c6594b4bae7924369bb61943c1da4fb">PointsTo</a> SVF::SaberSVFGBuilder::globs</td>
798
798
  </tr>
799
799
  </table>
800
800
  </td>