svf-tools 1.0.412 → 1.0.415

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 (164) hide show
  1. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +3 -3
  2. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +3 -3
  3. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +5 -5
  4. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +9 -9
  5. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +4 -4
  6. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  7. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +3 -3
  8. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +5 -5
  9. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +1 -1
  11. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +14 -14
  12. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +6 -6
  13. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +21 -21
  14. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +8 -8
  15. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
  17. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +89 -88
  18. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +15 -15
  19. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +19 -19
  20. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +71 -69
  21. package/SVF-doxygen/html/html/SVFG_8h_source.html +41 -41
  22. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +2 -2
  23. package/SVF-doxygen/html/html/SVFUtil_8h.html +2 -2
  24. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +2 -2
  25. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
  26. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
  27. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +1 -1
  28. package/SVF-doxygen/html/html/VFGNode_8h.html +1 -1
  29. package/SVF-doxygen/html/html/VFGNode_8h_source.html +197 -195
  30. package/SVF-doxygen/html/html/VFG_8cpp_source.html +89 -72
  31. package/SVF-doxygen/html/html/VFG_8h_source.html +39 -39
  32. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +7 -7
  33. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +2 -2
  34. package/SVF-doxygen/html/html/WPAStat_8h_source.html +2 -2
  35. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode-members.html +46 -45
  36. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +24 -21
  37. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode-members.html +46 -45
  38. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +25 -22
  39. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode-members.html +45 -44
  40. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +59 -22
  41. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode-members.html +46 -45
  42. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +61 -24
  43. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode-members.html +51 -50
  44. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +50 -14
  45. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +6 -6
  46. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode-members.html +44 -43
  47. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +23 -20
  48. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode-members.html +52 -51
  49. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +69 -32
  50. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode-members.html +46 -45
  51. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +59 -24
  52. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +2 -2
  53. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +2 -2
  54. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode-members.html +52 -51
  55. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +70 -33
  56. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +2 -2
  57. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode-members.html +51 -50
  58. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +50 -14
  59. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
  60. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +2 -2
  61. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode-members.html +46 -45
  62. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +53 -17
  63. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
  64. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +32 -32
  65. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +2 -2
  66. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +17 -17
  67. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode-members.html +47 -46
  68. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +24 -21
  69. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode-members.html +47 -46
  70. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +22 -19
  71. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode-members.html +45 -44
  72. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +65 -28
  73. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode-members.html +49 -48
  74. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +65 -28
  75. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode-members.html +51 -50
  76. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +50 -14
  77. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +2 -2
  78. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode-members.html +58 -57
  79. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +45 -42
  80. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode-members.html +56 -55
  81. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +40 -37
  82. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +2 -2
  83. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +2 -2
  84. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode-members.html +56 -55
  85. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +26 -23
  86. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode-members.html +57 -56
  87. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +26 -23
  88. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode-members.html +54 -53
  89. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +50 -14
  90. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +2 -2
  91. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode-members.html +44 -43
  92. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +48 -13
  93. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode-members.html +53 -52
  94. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +36 -33
  95. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +32 -32
  96. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +1 -2
  97. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode-members.html +46 -45
  98. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +58 -21
  99. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode-members.html +53 -52
  100. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +71 -34
  101. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +2 -2
  102. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +2 -2
  103. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +77 -77
  104. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  105. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +29 -29
  106. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +1 -1
  107. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +7 -7
  108. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode-members.html +51 -50
  109. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +35 -32
  110. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode-members.html +54 -53
  111. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +51 -14
  112. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +2 -2
  113. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode-members.html +55 -54
  114. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +76 -39
  115. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +70 -70
  116. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +2 -2
  117. package/SVF-doxygen/html/html/classSVF_1_1VFGNode-members.html +43 -42
  118. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +41 -9
  119. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +10 -10
  120. package/SVF-doxygen/html/html/functions_func_g.html +32 -12
  121. package/SVF-doxygen/html/html/functions_func_t.html +2 -2
  122. package/SVF-doxygen/html/html/functions_g.html +27 -7
  123. package/SVF-doxygen/html/html/functions_i.html +1 -1
  124. package/SVF-doxygen/html/html/functions_l.html +5 -5
  125. package/SVF-doxygen/html/html/functions_p.html +6 -6
  126. package/SVF-doxygen/html/html/functions_r.html +8 -8
  127. package/SVF-doxygen/html/html/functions_t.html +8 -6
  128. package/SVF-doxygen/html/html/functions_v.html +3 -3
  129. package/SVF-doxygen/html/html/namespaceSVF.html +1 -1
  130. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +7 -7
  131. package/SVF-doxygen/html/html/namespacemembers_p.html +1 -1
  132. package/SVF-doxygen/html/html/namespacemembers_type_p.html +1 -1
  133. package/SVF-doxygen/html/html/search/all_10.js +5 -5
  134. package/SVF-doxygen/html/html/search/all_12.js +3 -3
  135. package/SVF-doxygen/html/html/search/all_13.js +3 -3
  136. package/SVF-doxygen/html/html/search/all_14.js +7 -7
  137. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  138. package/SVF-doxygen/html/html/search/all_7.js +1 -0
  139. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  140. package/SVF-doxygen/html/html/search/all_c.js +3 -3
  141. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  142. package/SVF-doxygen/html/html/search/all_e.js +3 -3
  143. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  144. package/SVF-doxygen/html/html/search/functions_10.js +1 -1
  145. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  146. package/SVF-doxygen/html/html/search/functions_6.js +1 -0
  147. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  148. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  149. package/SVF-doxygen/html/html/search/typedefs_f.js +1 -1
  150. package/SVF-doxygen/html/html/search/variables_14.js +4 -4
  151. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  152. package/SVF-doxygen/html/html/search/variables_e.js +2 -2
  153. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +48 -48
  154. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +36 -36
  155. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SVFGNodeLockSpan_01_4.html +1 -1
  156. package/include/Graphs/SVFGNode.h +6 -1
  157. package/include/Graphs/VFG.h +1 -1
  158. package/include/Graphs/VFGNode.h +38 -3
  159. package/include/Util/SVFUtil.h +1 -1
  160. package/lib/Graphs/SVFG.cpp +9 -0
  161. package/lib/Graphs/VFG.cpp +86 -0
  162. package/lib/Util/NodeIDAllocator.cpp +2 -2
  163. package/lib/WPA/AndersenStat.cpp +0 -8
  164. package/package.json +1 -1
@@ -68,7 +68,7 @@ $(function() {
68
68
  <div class="contents">
69
69
  <a href="FlowSensitiveStat_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- FlowSensitiveStat.cpp -- Statistics for flow-sensitive pointer analysis-//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===-----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * FlowSensitiveStat.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: 27/11/2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: yesen</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LLVMUtil_8h.html">SVF-FE/LLVMUtil.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Andersen_8h.html">WPA/Andersen.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="WPAStat_8h.html">WPA/WPAStat.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="FlowSensitive_8h.html">WPA/FlowSensitive.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitiveStat.html#ab4c205136b22a13b54ceb48135730d23"> 42</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitiveStat.html#ab4c205136b22a13b54ceb48135730d23">FlowSensitiveStat::clearStat</a>()</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; _NumOfNullPtr = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; _NumOfConstantPtr = 0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; _NumOfBlackholePtr = 0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; _MaxPtsSize = _MaxTopLvlPtsSize = 0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; _AvgPtsSize = _AvgTopLvlPtsSize = 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; _AvgAddrTakenVarPtsSize = _NumOfAddrTakeVar = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; _MaxAddrTakenVarPts = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; _TotalPtsSize = 0;</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; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=IN; i&lt;=OUT; i++)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; _NumOfSVFGNodesHaveInOut[i] = 0;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; _NumOfFormalInSVFGNodesHaveInOut[i] = 0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; _NumOfFormalOutSVFGNodesHaveInOut[i] = 0;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; _NumOfActualInSVFGNodesHaveInOut[i] = 0;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; _NumOfActualOutSVFGNodesHaveInOut[i] = 0;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; _NumOfLoadSVFGNodesHaveInOut[i] = 0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; _NumOfStoreSVFGNodesHaveInOut[i] = 0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; _NumOfMSSAPhiSVFGNodesHaveInOut[i] = 0;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; _NumOfVarHaveINOUTPts[i] = 0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; _NumOfVarHaveEmptyINOUTPts[i] = 0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; _NumOfVarHaveINOUTPtsInFormalIn[i] = 0;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; _NumOfVarHaveINOUTPtsInFormalOut[i] = 0;;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; _NumOfVarHaveINOUTPtsInActualIn[i] = 0;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; _NumOfVarHaveINOUTPtsInActualOut[i] = 0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; _NumOfVarHaveINOUTPtsInLoad[i] = 0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; _NumOfVarHaveINOUTPtsInStore[i] = 0;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; _NumOfVarHaveINOUTPtsInMSSAPhi[i] = 0;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; _PotentialNumOfVarHaveINOUTPts[i] = 0;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; _MaxInOutPtsSize[i] = 0;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; _AvgInOutPtsSize[i] = 0;</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;}</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitiveStat.html#a059047d05e9873a624e333162a460571"> 85</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitiveStat.html#a059047d05e9873a624e333162a460571">FlowSensitiveStat::performStat</a>()</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;{</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;FlowSensitive&gt;(fspta) &amp;&amp; <span class="stringliteral">&quot;not an flow-sensitive pta pass!! what else??&quot;</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; endClk();</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; clearStat();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = fspta-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">getPAG</a>();</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="comment">// stat null ptr number</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; statNullPtr();</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; <span class="comment">// stat points-to set information</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; statPtsSize();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">// stat address-taken variables&#39; points-to</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; statAddrVarPtsSize();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fiObjNumber = 0;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fsObjNumber = 0;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;SymID&gt;</a> nodeSet;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVFIR::const_iterator</a> nodeIt = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), nodeEit = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); nodeIt != nodeEit; nodeIt++)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = nodeIt-&gt;first;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode = nodeIt-&gt;second;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ObjVar&gt;(pagNode))</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a> * memObj = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">getBaseObj</a>(nodeId);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SymID</a> baseId = memObj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">if</span> (nodeSet.insert(baseId).second)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span> (memObj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>())</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; fiObjNumber++;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; fsObjNumber++;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</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;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordtype">unsigned</span> numOfCopy = 0;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordtype">unsigned</span> numOfStore = 0;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">unsigned</span> numOfNode = 0;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFG::iterator</a> svfgNodeIt = fspta-&gt;svfg-&gt;begin();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFG::iterator</a> svfgNodeEit = fspta-&gt;svfg-&gt;end();</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">for</span> (; svfgNodeIt != svfgNodeEit; ++svfgNodeIt)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; numOfNode++;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* svfgNode = svfgNodeIt-&gt;second;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;CopySVFGNode&gt;(svfgNode))</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; numOfCopy++;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;StoreSVFGNode&gt;(svfgNode))</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; numOfStore++;</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;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#acfed70588cf921694db35990ec3c7497">PTAStat::performStat</a>();</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; timeStatMap[TotalAnalysisTime] = (endTime - startTime)/<a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; timeStatMap[<span class="stringliteral">&quot;SolveTime&quot;</span>] = fspta-&gt;solveTime;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; timeStatMap[<span class="stringliteral">&quot;SCCTime&quot;</span>] = fspta-&gt;sccTime;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; timeStatMap[<span class="stringliteral">&quot;ProcessTime&quot;</span>] = fspta-&gt;processTime;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; timeStatMap[<span class="stringliteral">&quot;PropagationTime&quot;</span>] = fspta-&gt;propagationTime;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; timeStatMap[<span class="stringliteral">&quot;DirectPropaTime&quot;</span>] = fspta-&gt;directPropaTime;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; timeStatMap[<span class="stringliteral">&quot;IndirectPropaTime&quot;</span>] = fspta-&gt;indirectPropaTime;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; timeStatMap[<span class="stringliteral">&quot;Strong/WeakUpdTime&quot;</span>] = fspta-&gt;updateTime;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; timeStatMap[<span class="stringliteral">&quot;AddrTime&quot;</span>] = fspta-&gt;addrTime;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; timeStatMap[<span class="stringliteral">&quot;CopyTime&quot;</span>] = fspta-&gt;copyTime;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; timeStatMap[<span class="stringliteral">&quot;GepTime&quot;</span>] = fspta-&gt;gepTime;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; timeStatMap[<span class="stringliteral">&quot;LoadTime&quot;</span>] = fspta-&gt;loadTime;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; timeStatMap[<span class="stringliteral">&quot;StoreTime&quot;</span>] = fspta-&gt;storeTime;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; timeStatMap[<span class="stringliteral">&quot;UpdateCGTime&quot;</span>] = fspta-&gt;updateCallGraphTime;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; timeStatMap[<span class="stringliteral">&quot;PhiTime&quot;</span>] = fspta-&gt;phiTime;</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; PTNumStatMap[TotalNumOfPointers] = pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a0212f3fe2f37363e8060f292c8cf7668">getValueNodeNum</a>() + pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a8a24e0bf9f95fc1519d4013e0e82dec9">getFieldValNodeNum</a>();</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; PTNumStatMap[TotalNumOfObjects] = pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a82528aff779ccf8f723f57507dd2d991">getObjectNodeNum</a>() + pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3bbaafd80dfcae6ccc82c3d8b9d303ea">getFieldObjNodeNum</a>();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; PTNumStatMap[NumOfPointers] = pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a0212f3fe2f37363e8060f292c8cf7668">getValueNodeNum</a>();</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; PTNumStatMap[NumOfMemObjects] = pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a82528aff779ccf8f723f57507dd2d991">getObjectNodeNum</a>();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; PTNumStatMap[NumOfGepFieldPointers] = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a8a24e0bf9f95fc1519d4013e0e82dec9">getFieldValNodeNum</a>();</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; PTNumStatMap[NumOfGepFieldObjects] = pag-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a3bbaafd80dfcae6ccc82c3d8b9d303ea">getFieldObjNodeNum</a>();</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; PTNumStatMap[NumOfCopys] = numOfCopy;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; PTNumStatMap[NumOfStores] = numOfStore;</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; PTNumStatMap[NumOfIterations] = fspta-&gt;numOfIteration;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; PTNumStatMap[NumOfIndirectEdgeSolved] = fspta-&gt;getNumOfResolvedIndCallEdge();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; PTNumStatMap[NumOfNullPointer] = _NumOfNullPtr;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;PointsToConstPtr&quot;</span>] = _NumOfConstantPtr;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;PointsToBlkPtr&quot;</span>] = _NumOfBlackholePtr;</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; PTNumStatMap[<span class="stringliteral">&quot;StrongUpdates&quot;</span>] = fspta-&gt;svfgHasSU.count();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;SNodesHaveIN&quot;</span>] = _NumOfSVFGNodesHaveInOut[IN];</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;SNodesHaveOUT&quot;</span>] = _NumOfSVFGNodesHaveInOut[OUT];</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; PTNumStatMap[<span class="stringliteral">&quot;FI_SNodesHaveIN&quot;</span>] = _NumOfFormalInSVFGNodesHaveInOut[IN];</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;FI_SNodesHaveOUT&quot;</span>] = _NumOfFormalInSVFGNodesHaveInOut[OUT];</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;FO_SNodesHaveIN&quot;</span>] = _NumOfFormalOutSVFGNodesHaveInOut[IN];</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;FO_SNodesHaveOUT&quot;</span>] = _NumOfFormalOutSVFGNodesHaveInOut[OUT];</div><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; PTNumStatMap[<span class="stringliteral">&quot;AI_SNodesHaveIN&quot;</span>] = _NumOfActualInSVFGNodesHaveInOut[IN];</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;AI_SNodesHaveOUT&quot;</span>] = _NumOfActualInSVFGNodesHaveInOut[OUT];</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; PTNumStatMap[<span class="stringliteral">&quot;AO_SNodesHaveIN&quot;</span>] = _NumOfActualOutSVFGNodesHaveInOut[IN];</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;AO_SNodesHaveOUT&quot;</span>] = _NumOfActualOutSVFGNodesHaveInOut[OUT];</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;LD_SNodesHaveIN&quot;</span>] = _NumOfLoadSVFGNodesHaveInOut[IN];</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;LD_SNodesHaveOUT&quot;</span>] = _NumOfLoadSVFGNodesHaveInOut[OUT];</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;ST_SNodesHaveIN&quot;</span>] = _NumOfStoreSVFGNodesHaveInOut[IN];</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;ST_SNodesHaveOUT&quot;</span>] = _NumOfStoreSVFGNodesHaveInOut[OUT];</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;PHI_SNodesHaveIN&quot;</span>] = _NumOfMSSAPhiSVFGNodesHaveInOut[IN];</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;PHI_SNodesHaveOUT&quot;</span>] = _NumOfMSSAPhiSVFGNodesHaveInOut[OUT];</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; <span class="comment">/*-----------------------------------------------------*/</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="comment">// SVFIR nodes.</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;VarHaveIN&quot;</span>] = _NumOfVarHaveINOUTPts[IN];</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;VarHaveOUT&quot;</span>] = _NumOfVarHaveINOUTPts[OUT];</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; PTNumStatMap[<span class="stringliteral">&quot;PotentialVarHaveIN&quot;</span>] = _PotentialNumOfVarHaveINOUTPts[IN];</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;PotentialVarHaveOUT&quot;</span>] = _PotentialNumOfVarHaveINOUTPts[OUT];</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;VarHaveEmptyIN&quot;</span>] = _NumOfVarHaveEmptyINOUTPts[IN];</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;VarHaveEmptyOUT&quot;</span>] = _NumOfVarHaveEmptyINOUTPts[OUT];</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;VarHaveIN_FI&quot;</span>] = _NumOfVarHaveINOUTPtsInFormalIn[IN];</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;VarHaveOUT_FI&quot;</span>] = _NumOfVarHaveINOUTPtsInFormalIn[OUT];</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;VarHaveIN_FO&quot;</span>] = _NumOfVarHaveINOUTPtsInFormalOut[IN];</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;VarHaveOUT_FO&quot;</span>] = _NumOfVarHaveINOUTPtsInFormalOut[OUT];</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;VarHaveIN_AI&quot;</span>] = _NumOfVarHaveINOUTPtsInActualIn[IN];</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;VarHaveOUT_AI&quot;</span>] = _NumOfVarHaveINOUTPtsInActualIn[OUT];</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; PTNumStatMap[<span class="stringliteral">&quot;VarHaveIN_AO&quot;</span>] = _NumOfVarHaveINOUTPtsInActualOut[IN];</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;VarHaveOUT_AO&quot;</span>] = _NumOfVarHaveINOUTPtsInActualOut[OUT];</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; PTNumStatMap[<span class="stringliteral">&quot;VarHaveIN_LD&quot;</span>] = _NumOfVarHaveINOUTPtsInLoad[IN];</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;VarHaveOUT_LD&quot;</span>] = _NumOfVarHaveINOUTPtsInLoad[OUT];</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; PTNumStatMap[<span class="stringliteral">&quot;VarHaveIN_ST&quot;</span>] = _NumOfVarHaveINOUTPtsInStore[IN];</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;VarHaveOUT_ST&quot;</span>] = _NumOfVarHaveINOUTPtsInStore[OUT];</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; PTNumStatMap[<span class="stringliteral">&quot;VarHaveIN_PHI&quot;</span>] = _NumOfVarHaveINOUTPtsInMSSAPhi[IN];</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;VarHaveOUT_PHI&quot;</span>] = _NumOfVarHaveINOUTPtsInMSSAPhi[OUT];</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;MaxPtsSize&quot;</span>] = _MaxPtsSize;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;MaxTopLvlPtsSize&quot;</span>] = _MaxTopLvlPtsSize;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;MaxINPtsSize&quot;</span>] = _MaxInOutPtsSize[IN];</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;MaxOUTPtsSize&quot;</span>] = _MaxInOutPtsSize[OUT];</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; timeStatMap[<span class="stringliteral">&quot;AvgPtsSize&quot;</span>] = _AvgPtsSize;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; timeStatMap[<span class="stringliteral">&quot;AvgTopLvlPtsSize&quot;</span>] = _AvgTopLvlPtsSize;</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; PTNumStatMap[<span class="stringliteral">&quot;NumOfAddrTakenVar&quot;</span>] = _NumOfAddrTakeVar;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; timeStatMap[<span class="stringliteral">&quot;AvgAddrTakenVarPts&quot;</span>] = (_NumOfAddrTakeVar == 0) ?</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; 0 : ((<span class="keywordtype">double</span>)_AvgAddrTakenVarPtsSize / _NumOfAddrTakeVar);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;MaxAddrTakenVarPts&quot;</span>] = _MaxAddrTakenVarPts;</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; timeStatMap[<span class="stringliteral">&quot;AvgINPtsSize&quot;</span>] = _AvgInOutPtsSize[IN];</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; timeStatMap[<span class="stringliteral">&quot;AvgOUTPtsSize&quot;</span>] = _AvgInOutPtsSize[OUT];</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;ProcessedAddr&quot;</span>] = fspta-&gt;numOfProcessedAddr;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;ProcessedCopy&quot;</span>] = fspta-&gt;numOfProcessedCopy;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;ProcessedGep&quot;</span>] = fspta-&gt;numOfProcessedGep;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;ProcessedLoad&quot;</span>] = fspta-&gt;numOfProcessedLoad;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;ProcessedStore&quot;</span>] = fspta-&gt;numOfProcessedStore;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;ProcessedPhi&quot;</span>] = fspta-&gt;numOfProcessedPhi;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;ProcessedAParam&quot;</span>] = fspta-&gt;numOfProcessedActualParam;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;ProcessedFRet&quot;</span>] = fspta-&gt;numOfProcessedFormalRet;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;ProcessedMSSANode&quot;</span>] = fspta-&gt;numOfProcessedMSSANode;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;NumOfNodesInSCC&quot;</span>] = fspta-&gt;numOfNodesInSCC;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;MaxSCCSize&quot;</span>] = fspta-&gt;maxSCCSize;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; PTNumStatMap[<span class="stringliteral">&quot;NumOfSCC&quot;</span>] = fspta-&gt;numOfSCC;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; timeStatMap[<span class="stringliteral">&quot;AverageSCCSize&quot;</span>] = (fspta-&gt;numOfSCC == 0) ? 0 :</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; ((<span class="keywordtype">double</span>)fspta-&gt;numOfNodesInSCC / fspta-&gt;numOfSCC);</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="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n****Flow-Sensitive Pointer Analysis Statistics****\n&quot;</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">PTAStat::printStat</a>();</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;}</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div><div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitiveStat.html#a36f7be42772b2df6f7594c51b7dc4770"> 271</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitiveStat.html#a36f7be42772b2df6f7594c51b7dc4770">FlowSensitiveStat::statNullPtr</a>()</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;{</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; _NumOfNullPtr = 0;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> iter = fspta-&gt;getPAG()-&gt;begin(), eiter = fspta-&gt;getPAG()-&gt;end();</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; iter != eiter; ++iter)</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; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> pagNodeId = iter-&gt;first;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode = iter-&gt;second;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; inComingStore = pagNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6">getIncomingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; outGoingLoad = pagNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a927733580b47be5ffcfced44ba9fd6c3">getOutgoingEdges</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">if</span> (inComingStore.empty()==<span class="keyword">false</span> || outGoingLoad.empty()==<span class="keyword">false</span>)</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = fspta-&gt;getPts(pagNodeId);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">if</span>(fspta-&gt;containBlackHoleNode(pts))</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; _NumOfConstantPtr++;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">if</span>(fspta-&gt;containConstantNode(pts))</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; _NumOfBlackholePtr++;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span>(pts.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>())</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; std::string str;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;DummyValVar&gt;(pagNode) &amp;&amp; !SVFUtil::isa&lt;DummyObjVar&gt;(pagNode))</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="comment">// if a pointer is in dead function, we do not care</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a4dcfe3e66a16813350ec8dffd47c5644">isPtrInDeadFunction</a>(pagNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()) == <span class="keyword">false</span>)</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; _NumOfNullPtr++;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;##Null Pointer : (NodeID &quot;</span> &lt;&lt; pagNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; &lt;&lt; <span class="stringliteral">&quot;) PtrName:&quot;</span> &lt;&lt; pagNode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()-&gt;getName();</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(rawstr.str());</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; _NumOfNullPtr++;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;##Null Pointer : (NodeID &quot;</span> &lt;&lt; pagNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(rawstr.str());</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;}</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitiveStat.html#af51e5b90f7bc52e3657a708c7bc5bb75"> 322</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitiveStat.html#af51e5b90f7bc52e3657a708c7bc5bb75">FlowSensitiveStat::statPtsSize</a>()</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;{</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="comment">// TODO: needs to be made to work for persistent.</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;FlowSensitive::MutDFPTDataTy&gt;(fspta-&gt;getPTDataTy()))</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="comment">// stat of IN set</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; statInOutPtsSize(fspta-&gt;getDFInputMap(), IN);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="comment">// stat of OUT set</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; statInOutPtsSize(fspta-&gt;getDFOutputMap(), OUT);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> totalValidTopLvlPointers = 0;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> topTopLvlPtsSize = 0;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> iter = fspta-&gt;getPAG()-&gt;begin(), eiter = fspta-&gt;getPAG()-&gt;end();</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; iter != eiter; ++iter)</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node = iter-&gt;first;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">if</span> (fspta-&gt;getPAG()-&gt;isValidTopLevelPtr(iter-&gt;second) == <span class="keyword">false</span>)</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> size = fspta-&gt;getPts(node).count();</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; totalValidTopLvlPointers++;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; topTopLvlPtsSize+=size;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">if</span>(size &gt; _MaxPtsSize) _MaxPtsSize = size;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">if</span> (size &gt; _MaxTopLvlPtsSize) _MaxTopLvlPtsSize = size;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">if</span> (totalValidTopLvlPointers != 0)</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; _AvgTopLvlPtsSize = (double)topTopLvlPtsSize/totalValidTopLvlPointers;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; _TotalPtsSize += topTopLvlPtsSize;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> totalPointer = totalValidTopLvlPointers + _NumOfVarHaveINOUTPts[IN] + _NumOfVarHaveINOUTPts[OUT];</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">if</span> (totalPointer != 0)</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; _AvgPtsSize = (double) _TotalPtsSize / totalPointer;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;}</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;</div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitiveStat.html#a8ae7448f6210b6c759a33e6fc8a8cee8"> 361</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitiveStat.html#a8ae7448f6210b6c759a33e6fc8a8cee8">FlowSensitiveStat::statInOutPtsSize</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FlowSensitiveStat.html#a55d45e82ea3d338114e50da877bcfb75">DFInOutMap</a>&amp; data, <a class="code" href="classSVF_1_1FlowSensitiveStat.html#ab11996ab5606f51c977b9b1385c13d71">ENUM_INOUT</a> inOrOut)</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;{</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="comment">// Get number of nodes which have IN/OUT set</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; _NumOfSVFGNodesHaveInOut[inOrOut] = data.size();</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> inOutPtsSize = 0;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; DFInOutMap::const_iterator it = data.begin();</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; DFInOutMap::const_iterator eit = data.end();</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = fspta-&gt;svfg-&gt;getSVFGNode(it-&gt;first);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="comment">// Count number of SVFG nodes have IN/OUT set.</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;FormalINSVFGNode&gt;(node))</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; _NumOfFormalInSVFGNodesHaveInOut[inOrOut]++;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;FormalOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; _NumOfFormalOutSVFGNodesHaveInOut[inOrOut]++;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ActualINSVFGNode&gt;(node))</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; _NumOfActualInSVFGNodesHaveInOut[inOrOut]++;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ActualOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; _NumOfActualOutSVFGNodesHaveInOut[inOrOut]++;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;LoadSVFGNode&gt;(node))</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; _NumOfLoadSVFGNodesHaveInOut[inOrOut]++;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;StoreSVFGNode&gt;(node))</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; _NumOfStoreSVFGNodesHaveInOut[inOrOut]++;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;MSSAPHISVFGNode&gt;(node))</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; _NumOfMSSAPhiSVFGNodesHaveInOut[inOrOut]++;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;unexpected node have IN/OUT set&quot;</span>);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="comment">/*-----------------------------------------------------*/</span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="comment">// Count SVFIR nodes and their points-to set size.</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1FlowSensitiveStat.html#a1b605e86f33e79f7d7cd88dc54f2c19e">PtsMap</a>&amp; cptsMap = it-&gt;second;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; PtsMap::const_iterator ptsIt = cptsMap.begin();</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; PtsMap::const_iterator ptsEit = cptsMap.end();</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">for</span> (; ptsIt != ptsEit; ++ptsIt)</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">if</span> (ptsIt-&gt;second.empty()) </div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; _NumOfVarHaveEmptyINOUTPts[inOrOut]++;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> ptsNum = ptsIt-&gt;second.count(); </div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="comment">// Only node with non-empty points-to set are counted.</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; _NumOfVarHaveINOUTPts[inOrOut]++;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;FormalINSVFGNode&gt;(node))</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; _NumOfVarHaveINOUTPtsInFormalIn[inOrOut]++;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;FormalOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; _NumOfVarHaveINOUTPtsInFormalOut[inOrOut]++;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ActualINSVFGNode&gt;(node))</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; _NumOfVarHaveINOUTPtsInActualIn[inOrOut]++;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ActualOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; _NumOfVarHaveINOUTPtsInActualOut[inOrOut]++;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;LoadSVFGNode&gt;(node))</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; _NumOfVarHaveINOUTPtsInLoad[inOrOut]++;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;StoreSVFGNode&gt;(node))</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; _NumOfVarHaveINOUTPtsInStore[inOrOut]++;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;MSSAPHISVFGNode&gt;(node))</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; _NumOfVarHaveINOUTPtsInMSSAPhi[inOrOut]++;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;unexpected node have IN/OUT set&quot;</span>);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; inOutPtsSize += ptsNum;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">if</span> (ptsNum &gt; _MaxInOutPtsSize[inOrOut])</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; _MaxInOutPtsSize[inOrOut] = ptsNum;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">if</span> (ptsNum &gt; _MaxPtsSize) _MaxPtsSize = ptsNum;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">if</span> (_NumOfVarHaveINOUTPts[inOrOut] != 0)</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; _AvgInOutPtsSize[inOrOut] = (double)inOutPtsSize / _NumOfVarHaveINOUTPts[inOrOut];</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; _TotalPtsSize += inOutPtsSize;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="comment">// How many IN/OUT PTSs could we have *potentially* had?</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="comment">// l&#39;-o-&gt;l, l&#39;&#39;-o-&gt;l, ..., means there is a possibility of 1 IN PTS.</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="comment">// *p = q &amp;&amp; { o } in pts_ander(p) means there is a possibility of 1 OUT PTS.</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="comment">// For OUTs at stores, we must also account for WU/SUs.</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a> *svfg = fspta-&gt;svfg;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVFG::const_iterator</a> it = svfg-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != svfg-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a> *sn = it-&gt;second;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="comment">// Unique objects coming into s.</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> incomingObjects;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a> *e : sn-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>())</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; {</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1IndirectSVFGEdge.html">IndirectSVFGEdge</a> *ie = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html">IndirectSVFGEdge</a>&gt;(e);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">if</span> (!ie) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : ie-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a30aca718d25924f1babdf348bb0ace71">getPointsTo</a>()) incomingObjects.set(o);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; }</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; _PotentialNumOfVarHaveINOUTPts[IN] += incomingObjects.count();</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <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;(sn))</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> p = store-&gt;getPAGDstNodeID();</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="comment">// Reuse incomingObjects; what&#39;s already in there will be propagated forwarded</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="comment">// as a WU/SU, and what&#39;s not (first defined at the store), will be added.</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : fspta-&gt;ander-&gt;getPts(p)) incomingObjects.set(o);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; _PotentialNumOfVarHaveINOUTPts[OUT] += incomingObjects.count();</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; }</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; }</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;}</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;</div><div class="line"><a name="l00476"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitiveStat.html#a81785227a688389c68171a1fbd55fa9b"> 476</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitiveStat.html#a81785227a688389c68171a1fbd55fa9b">FlowSensitiveStat::statAddrVarPtsSize</a>()</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;{</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; SVFG::SVFGNodeIDToNodeMapTy::const_iterator it = fspta-&gt;svfg-&gt;begin();</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; SVFG::SVFGNodeIDToNodeMapTy::const_iterator eit = fspta-&gt;svfg-&gt;end();</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; {</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</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="l00483"></a><span class="lineno"> 483</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="l00484"></a><span class="lineno"> 484</span>&#160; {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; calculateAddrVarPts(store-&gt;getPAGDstNodeID(), store);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; }</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;}</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div><div class="line"><a name="l00493"></a><span class="lineno"><a class="line" href="classSVF_1_1FlowSensitiveStat.html#a04466753c771238c6e1cc57964061dce"> 493</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FlowSensitiveStat.html#a04466753c771238c6e1cc57964061dce">FlowSensitiveStat::calculateAddrVarPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> pointer, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* svfg_node)</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;{</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = fspta-&gt;getPts(pointer);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; _NumOfAddrTakeVar += pts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>();</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> ptsIt = pts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>();</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> ptsEit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">for</span> (; ptsIt != ptsEit; ++ptsIt)</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptd = *ptsIt;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; cpts = fspta-&gt;getDFOutPtsSet(svfg_node, ptd);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; _AvgAddrTakenVarPtsSize += cpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>();</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">if</span> (cpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>() &gt; _MaxAddrTakenVarPts)</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; _MaxAddrTakenVarPts = cpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>();</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;}</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;</div><div class="ttc" id="Andersen_8h_html"><div class="ttname"><a href="Andersen_8h.html">Andersen.h</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00361">GenericGraph.h:361</a></div></div>
71
- <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#l00235">VFGNode.h:235</a></div></div>
71
+ <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#l00240">VFGNode.h:240</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00404">SymbolTableInfo.h:404</a></div></div>
73
73
  <div class="ttc" id="WPAStat_8h_html"><div class="ttname"><a href="WPAStat_8h.html">WPAStat.h</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00182">GenericGraph.h:182</a></div></div>
@@ -121,7 +121,7 @@ Functions</h2></td></tr>
121
121
 
122
122
  <p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00503">503</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
123
123
  <div class="fragment"><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;{</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">if</span> (copy-&gt;<a class="code" href="classSVF_1_1StmtVFGNode.html#aae94dd9031a6662d509627e602aef532">getInst</a>() == <span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = copy-&gt;<a class="code" href="classSVF_1_1StmtVFGNode.html#aae94dd9031a6662d509627e602aef532">getInst</a>();</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *mdNode = inst-&gt;getMetadata(<a class="code" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a02b3f4190d325c921922c25e319dc8d9">cppUtil::ctir::vtInitMDName</a>);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">if</span> (mdNode == <span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *type = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a>&gt;(mdNode);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(type != <span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;TBHC: bad ctir.vt.init metadata&quot;</span>);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">return</span> dchg-&gt;<a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(type);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1cppUtil_1_1ctir_html_a02b3f4190d325c921922c25e319dc8d9"><div class="ttname"><a href="namespaceSVF_1_1cppUtil_1_1ctir.html#a02b3f4190d325c921922c25e319dc8d9">SVF::cppUtil::ctir::vtInitMDName</a></div><div class="ttdeci">const std::string vtInitMDName</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00119">CPPUtil.h:119</a></div></div>
124
- <div class="ttc" id="classSVF_1_1StmtVFGNode_html_aae94dd9031a6662d509627e602aef532"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#aae94dd9031a6662d509627e602aef532">SVF::StmtVFGNode::getInst</a></div><div class="ttdeci">const Instruction * getInst() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00182">VFGNode.h:182</a></div></div>
124
+ <div class="ttc" id="classSVF_1_1StmtVFGNode_html_aae94dd9031a6662d509627e602aef532"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#aae94dd9031a6662d509627e602aef532">SVF::StmtVFGNode::getInst</a></div><div class="ttdeci">const Instruction * getInst() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00185">VFGNode.h:185</a></div></div>
125
125
  <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>
126
126
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
127
127
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a079feacdcc3783f4a9108a3b2d2aed2c"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">SVF::DCHGraph::getCanonicalType</a></div><div class="ttdeci">const DIType * getCanonicalType(const DIType *t)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00713">DCHG.cpp:713</a></div></div>
@@ -71,20 +71,20 @@ $(function() {
71
71
  <div class="ttc" id="Andersen_8h_html"><div class="ttname"><a href="Andersen_8h.html">Andersen.h</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1DCHGraph_html_a0788694fbff155949fc4f4d6487c223e"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a0788694fbff155949fc4f4d6487c223e">SVF::DCHGraph::getNumFields</a></div><div class="ttdeci">unsigned getNumFields(const DIType *base)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00335">DCHG.h:335</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00361">GenericGraph.h:361</a></div></div>
74
- <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#l00235">VFGNode.h:235</a></div></div>
74
+ <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#l00240">VFGNode.h:240</a></div></div>
75
75
  <div class="ttc" id="classSVF_1_1FlowSensitive_html_a3574977acd161925cadcb05de6d3247d"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a3574977acd161925cadcb05de6d3247d">SVF::FlowSensitive::propagateFromAPToFP</a></div><div class="ttdeci">virtual bool propagateFromAPToFP(const ActualParmSVFGNode *ap, const SVFGNode *dst)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00326">FlowSensitive.cpp:326</a></div></div>
76
76
  <div class="ttc" id="namespaceSVF_1_1cppUtil_1_1ctir_html_a02b3f4190d325c921922c25e319dc8d9"><div class="ttname"><a href="namespaceSVF_1_1cppUtil_1_1ctir.html#a02b3f4190d325c921922c25e319dc8d9">SVF::cppUtil::ctir::vtInitMDName</a></div><div class="ttdeci">const std::string vtInitMDName</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00119">CPPUtil.h:119</a></div></div>
77
77
  <div class="ttc" id="classSVF_1_1WPASolver_html_a4af1c3e72f5af96c4facff672108da58"><div class="ttname"><a href="classSVF_1_1WPASolver.html#a4af1c3e72f5af96c4facff672108da58">SVF::WPASolver::pushIntoWorklist</a></div><div class="ttdeci">virtual void pushIntoWorklist(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="WPASolver_8h_source.html#l00162">WPASolver.h:162</a></div></div>
78
- <div class="ttc" id="classSVF_1_1ActualParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualParmVFGNode.html">SVF::ActualParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00831">VFGNode.h:831</a></div></div>
78
+ <div class="ttc" id="classSVF_1_1ActualParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualParmVFGNode.html">SVF::ActualParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00856">VFGNode.h:856</a></div></div>
79
79
  <div class="ttc" id="WPAStat_8h_html"><div class="ttname"><a href="WPAStat_8h.html">WPAStat.h</a></div></div>
80
- <div class="ttc" id="classSVF_1_1AddrVFGNode_html"><div class="ttname"><a href="classSVF_1_1AddrVFGNode.html">SVF::AddrVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00747">VFGNode.h:747</a></div></div>
80
+ <div class="ttc" id="classSVF_1_1AddrVFGNode_html"><div class="ttname"><a href="classSVF_1_1AddrVFGNode.html">SVF::AddrVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00770">VFGNode.h:770</a></div></div>
81
81
  <div class="ttc" id="classSVF_1_1FlowSensitive_html_aae032e5f5d53b131d0112dc8faa464a9"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">SVF::FlowSensitive::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00250">FlowSensitive.h:250</a></div></div>
82
- <div class="ttc" id="classSVF_1_1StmtVFGNode_html_a04986961ad507be9fcf141ab51787da8"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">SVF::StmtVFGNode::getPAGDstNodeID</a></div><div class="ttdeci">NodeID getPAGDstNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00143">VFGNode.h:143</a></div></div>
82
+ <div class="ttc" id="classSVF_1_1StmtVFGNode_html_a04986961ad507be9fcf141ab51787da8"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">SVF::StmtVFGNode::getPAGDstNodeID</a></div><div class="ttdeci">NodeID getPAGDstNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00146">VFGNode.h:146</a></div></div>
83
83
  <div class="ttc" id="classSVF_1_1FlowSensitive_html"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html">SVF::FlowSensitive</a></div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00049">FlowSensitive.h:49</a></div></div>
84
84
  <div class="ttc" id="CPPUtil_8h_html"><div class="ttname"><a href="CPPUtil_8h.html">CPPUtil.h</a></div></div>
85
85
  <div class="ttc" id="classSVF_1_1FlowSensitive_html_aab4f70210eb1e6447a24697d3b459067"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aab4f70210eb1e6447a24697d3b459067">SVF::FlowSensitive::loadTime</a></div><div class="ttdeci">double loadTime</div><div class="ttdoc">time of load edges </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00315">FlowSensitive.h:315</a></div></div>
86
86
  <div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_a0eb8335dd45b35b20d34c981b86b059c"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#a0eb8335dd45b35b20d34c981b86b059c">SVF::FlowSensitiveTBHC::processPhi</a></div><div class="ttdeci">virtual bool processPhi(const PHISVFGNode *phi) override</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00494">FlowSensitiveTBHC.cpp:494</a></div></div>
87
- <div class="ttc" id="classSVF_1_1StmtVFGNode_html_aae94dd9031a6662d509627e602aef532"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#aae94dd9031a6662d509627e602aef532">SVF::StmtVFGNode::getInst</a></div><div class="ttdeci">const Instruction * getInst() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00182">VFGNode.h:182</a></div></div>
87
+ <div class="ttc" id="classSVF_1_1StmtVFGNode_html_aae94dd9031a6662d509627e602aef532"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#aae94dd9031a6662d509627e602aef532">SVF::StmtVFGNode::getInst</a></div><div class="ttdeci">const Instruction * getInst() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00185">VFGNode.h:185</a></div></div>
88
88
  <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>
89
89
  <div class="ttc" id="classSVF_1_1FlowSensitive_html_a38f3ed35185addf701d4401bfdd5f29b"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a38f3ed35185addf701d4401bfdd5f29b">SVF::FlowSensitive::addrTime</a></div><div class="ttdeci">double addrTime</div><div class="ttdoc">time of handling address edges </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00312">FlowSensitive.h:312</a></div></div>
90
90
  <div class="ttc" id="classSVF_1_1FlowSensitive_html_aa401cc90de4e1c6842f08a43a28c5aa1"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aa401cc90de4e1c6842f08a43a28c5aa1">SVF::FlowSensitive::processCopy</a></div><div class="ttdeci">virtual bool processCopy(const CopySVFGNode *copy)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00433">FlowSensitive.cpp:433</a></div></div>
@@ -99,13 +99,13 @@ $(function() {
99
99
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ac51cd735739a2499196a87323172a6a6"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ac51cd735739a2499196a87323172a6a6">SVF::TypeBasedHeapCloning::setType</a></div><div class="ttdeci">void setType(NodeID o, const DIType *t)</div><div class="ttdoc">Sets the type (in objToType) of o. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00053">TypeBasedHeapCloning.cpp:53</a></div></div>
100
100
  <div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_ab6525ac133151692176a03227f81bcac"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#ab6525ac133151692176a03227f81bcac">SVF::FlowSensitiveTBHC::processCopy</a></div><div class="ttdeci">virtual bool processCopy(const CopySVFGNode *copy) override</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00516">FlowSensitiveTBHC.cpp:516</a></div></div>
101
101
  <div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_a80052c89d1a9f54cfbf8f9790110899d"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#a80052c89d1a9f54cfbf8f9790110899d">SVF::FlowSensitiveTBHC::determineWhichGepsAreLoads</a></div><div class="ttdeci">void determineWhichGepsAreLoads(void)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00574">FlowSensitiveTBHC.cpp:574</a></div></div>
102
- <div class="ttc" id="classSVF_1_1CopyVFGNode_html"><div class="ttname"><a href="classSVF_1_1CopyVFGNode.html">SVF::CopyVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00274">VFGNode.h:274</a></div></div>
102
+ <div class="ttc" id="classSVF_1_1CopyVFGNode_html"><div class="ttname"><a href="classSVF_1_1CopyVFGNode.html">SVF::CopyVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00281">VFGNode.h:281</a></div></div>
103
103
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a59a9c7b8a7ec392ac609f10c8dac8d7f"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a59a9c7b8a7ec392ac609f10c8dac8d7f">SVF::TypeBasedHeapCloning::isBlkObjOrConstantObj</a></div><div class="ttdeci">bool isBlkObjOrConstantObj(NodeID o) const</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00036">TypeBasedHeapCloning.cpp:36</a></div></div>
104
- <div class="ttc" id="classSVF_1_1PHIVFGNode_html"><div class="ttname"><a href="classSVF_1_1PHIVFGNode.html">SVF::PHIVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00624">VFGNode.h:624</a></div></div>
104
+ <div class="ttc" id="classSVF_1_1PHIVFGNode_html"><div class="ttname"><a href="classSVF_1_1PHIVFGNode.html">SVF::PHIVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00645">VFGNode.h:645</a></div></div>
105
105
  <div class="ttc" id="classSVF_1_1FlowSensitive_html_a267f7198600dde3054feb40def7a6681"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a267f7198600dde3054feb40def7a6681">SVF::FlowSensitive::analyze</a></div><div class="ttdeci">virtual void analyze()</div><div class="ttdoc">Flow sensitive analysis. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00086">FlowSensitive.cpp:86</a></div></div>
106
106
  <div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_a4c5fb70aafc3a589b7b1e82ba8f61a6f"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#a4c5fb70aafc3a589b7b1e82ba8f61a6f">SVF::FlowSensitiveTBHC::initialize</a></div><div class="ttdeci">virtual void initialize() override</div><div class="ttdoc">Initialize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00034">FlowSensitiveTBHC.cpp:34</a></div></div>
107
107
  <div class="ttc" id="cuddInt_8c_html_a5beb39637a978181c7c17714ac96672e"><div class="ttname"><a href="cuddInt_8c.html#a5beb39637a978181c7c17714ac96672e">empty</a></div><div class="ttdeci">static DdNode * empty</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l28567">cuddInt.c:28567</a></div></div>
108
- <div class="ttc" id="classSVF_1_1GepVFGNode_html"><div class="ttname"><a href="classSVF_1_1GepVFGNode.html">SVF::GepVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00585">VFGNode.h:585</a></div></div>
108
+ <div class="ttc" id="classSVF_1_1GepVFGNode_html"><div class="ttname"><a href="classSVF_1_1GepVFGNode.html">SVF::GepVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00604">VFGNode.h:604</a></div></div>
109
109
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
110
110
  <div class="ttc" id="classSVF_1_1DCHGraph_html"><div class="ttname"><a href="classSVF_1_1DCHGraph.html">SVF::DCHGraph</a></div><div class="ttdoc">Dwarf based CHG. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00208">DCHG.h:208</a></div></div>
111
111
  <div class="ttc" id="classSVF_1_1FlowSensitive_html_afed358369102f01f6fe88b1433e704c3"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#afed358369102f01f6fe88b1433e704c3">SVF::FlowSensitive::finalize</a></div><div class="ttdeci">virtual void finalize()</div><div class="ttdoc">Finalize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00131">FlowSensitive.cpp:131</a></div></div>
@@ -113,7 +113,7 @@ $(function() {
113
113
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ae7073c07bfd7912f888d54d4652c7cc2"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ae7073c07bfd7912f888d54d4652c7cc2">SVF::BVDataPTAImpl::unionPts</a></div><div class="ttdeci">virtual bool unionPts(NodeID id, const PointsTo &amp;target)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00124">PointerAnalysisImpl.h:124</a></div></div>
114
114
  <div class="ttc" id="classSVF_1_1DFPTData_html_a88cf9cd48ee5c1b8b3c71b379f23ab6b"><div class="ttname"><a href="classSVF_1_1DFPTData.html#a88cf9cd48ee5c1b8b3c71b379f23ab6b">SVF::DFPTData::updateDFInFromIn</a></div><div class="ttdeci">virtual bool updateDFInFromIn(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar)=0</div></div>
115
115
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a0890235fa3725c23435ea3245c52c038"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a0890235fa3725c23435ea3245c52c038">SVF::TypeBasedHeapCloning::setPAG</a></div><div class="ttdeci">void setPAG(SVFIR *pag)</div><div class="ttdoc">SVFIR must be set by extending class once the SVFIR is available. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00031">TypeBasedHeapCloning.cpp:31</a></div></div>
116
- <div class="ttc" id="classSVF_1_1StmtVFGNode_html_a4dd7615f42971da9b6ec1dc04f0ec4e6"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a4dd7615f42971da9b6ec1dc04f0ec4e6">SVF::StmtVFGNode::getPAGEdge</a></div><div class="ttdeci">const PAGEdge * getPAGEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00133">VFGNode.h:133</a></div></div>
116
+ <div class="ttc" id="classSVF_1_1StmtVFGNode_html_a4dd7615f42971da9b6ec1dc04f0ec4e6"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a4dd7615f42971da9b6ec1dc04f0ec4e6">SVF::StmtVFGNode::getPAGEdge</a></div><div class="ttdeci">const PAGEdge * getPAGEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00136">VFGNode.h:136</a></div></div>
117
117
  <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00102">SVFBasicTypes.h:102</a></div></div>
118
118
  <div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_a15b8610fd7456d158a9e640c69d401a0"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#a15b8610fd7456d158a9e640c69d401a0">SVF::FlowSensitiveTBHC::propAlongDirectEdge</a></div><div class="ttdeci">virtual bool propAlongDirectEdge(const DirectSVFGEdge *edge) override</div><div class="ttdoc">Propagate points-to information along a DIRECT SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00184">FlowSensitiveTBHC.cpp:184</a></div></div>
119
119
  <div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_a3af0297eb75ac4009433be44bb286d30"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#a3af0297eb75ac4009433be44bb286d30">SVF::FlowSensitiveTBHC::expandFIObjs</a></div><div class="ttdeci">virtual void expandFIObjs(const PointsTo &amp;pts, PointsTo &amp;expandedPts) override</div><div class="ttdoc">Expand FI objects. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00642">FlowSensitiveTBHC.cpp:642</a></div></div>
@@ -157,7 +157,7 @@ $(function() {
157
157
  <div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_ad53c6aebdcfa9fa334ccff4c68efa8ae"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#ad53c6aebdcfa9fa334ccff4c68efa8ae">SVF::FlowSensitiveTBHC::unionPtsFromIn</a></div><div class="ttdeci">virtual bool unionPtsFromIn(const SVFGNode *stmt, NodeID srcVar, NodeID dstVar) override</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00548">FlowSensitiveTBHC.cpp:548</a></div></div>
158
158
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a1a7b51e7d959795c00383721b013834d"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a1a7b51e7d959795c00383721b013834d">SVF::TypeBasedHeapCloning::dumpStats</a></div><div class="ttdeci">void dumpStats(void)</div><div class="ttdoc">Dump some statistics we tracked. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00731">TypeBasedHeapCloning.cpp:731</a></div></div>
159
159
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ae42ec334a7dfc96a5ead2d2845ca3b22"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ae42ec334a7dfc96a5ead2d2845ca3b22">SVF::TypeBasedHeapCloning::validateTBHCTests</a></div><div class="ttdeci">void validateTBHCTests(SVFModule *svfMod)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00562">TypeBasedHeapCloning.cpp:562</a></div></div>
160
- <div class="ttc" id="classSVF_1_1StmtVFGNode_html_a791a01f5d3528f8a8bf19369b5c61c37"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">SVF::StmtVFGNode::getPAGSrcNodeID</a></div><div class="ttdeci">NodeID getPAGSrcNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00138">VFGNode.h:138</a></div></div>
160
+ <div class="ttc" id="classSVF_1_1StmtVFGNode_html_a791a01f5d3528f8a8bf19369b5c61c37"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">SVF::StmtVFGNode::getPAGSrcNodeID</a></div><div class="ttdeci">NodeID getPAGSrcNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00141">VFGNode.h:141</a></div></div>
161
161
  <div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_abce5580e93cba1e591a0bac4e9070816"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#abce5580e93cba1e591a0bac4e9070816">SVF::FlowSensitiveTBHC::processAddr</a></div><div class="ttdeci">virtual bool processAddr(const AddrSVFGNode *addr) override</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00217">FlowSensitiveTBHC.cpp:217</a></div></div>
162
162
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ae2cc7cd0803dbd90639140e71b06b1b5"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ae2cc7cd0803dbd90639140e71b06b1b5">SVF::PointerAnalysis::getCHGraph</a></div><div class="ttdeci">CommonCHGraph * getCHGraph() const</div><div class="ttdoc">get CHGraph </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00439">PointerAnalysis.h:439</a></div></div>
163
163
  <div class="ttc" id="namespaceSVF_html_a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f"><div class="ttname"><a href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">SVF::MayAlias</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00195">SVFBasicTypes.h:195</a></div></div>
@@ -166,7 +166,7 @@ $(function() {
166
166
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ad043ab95900849a5a894ca4bada4e032"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ad043ab95900849a5a894ca4bada4e032">SVF::TypeBasedHeapCloning::getGepObjsFromMemObj</a></div><div class="ttdeci">const NodeBS &amp; getGepObjsFromMemObj(const MemObj *memObj, unsigned offset)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00132">TypeBasedHeapCloning.cpp:132</a></div></div>
167
167
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00155">PointerAnalysis.h:155</a></div></div>
168
168
  <div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_a734e01c66832346c61d4cda38db84f4a"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#a734e01c66832346c61d4cda38db84f4a">SVF::FlowSensitiveTBHC::allReuse</a></div><div class="ttdeci">bool allReuse</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8h_source.html#l00112">FlowSensitiveTBHC.h:112</a></div></div>
169
- <div class="ttc" id="classSVF_1_1LoadVFGNode_html"><div class="ttname"><a href="classSVF_1_1LoadVFGNode.html">SVF::LoadVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00196">VFGNode.h:196</a></div></div>
169
+ <div class="ttc" id="classSVF_1_1LoadVFGNode_html"><div class="ttname"><a href="classSVF_1_1LoadVFGNode.html">SVF::LoadVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00199">VFGNode.h:199</a></div></div>
170
170
  <div class="ttc" id="classSVF_1_1FlowSensitive_html_a43e8ca2e69e6e8643c9abd1fa231d305"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a43e8ca2e69e6e8643c9abd1fa231d305">SVF::FlowSensitive::svfgHasSU</a></div><div class="ttdeci">NodeBS svfgHasSU</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00320">FlowSensitive.h:320</a></div></div>
171
171
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a5681d78630ca8770dd493ef3841ec683"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a5681d78630ca8770dd493ef3841ec683">SVF::TypeBasedHeapCloning::getAllocationSite</a></div><div class="ttdeci">NodeID getAllocationSite(NodeID o) const</div><div class="ttdoc">Returns the allocation site (from objToAllocation) of o. Asserts existence. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00069">TypeBasedHeapCloning.cpp:69</a></div></div>
172
172
  <div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_abf5cca7e8332930c8f6adbfdb6f72629"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#abf5cca7e8332930c8f6adbfdb6f72629">SVF::FlowSensitiveTBHC::propDFOutToIn</a></div><div class="ttdeci">virtual bool propDFOutToIn(const SVFGNode *srcStmt, NodeID srcVar, const SVFGNode *dstStmt, NodeID dstVar) override</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00567">FlowSensitiveTBHC.cpp:567</a></div></div>
@@ -193,7 +193,7 @@ $(function() {
193
193
  <div class="ttc" id="classSVF_1_1GepStmt_html_a959a9c95d25f90fd7acc8e6e36056b56"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a959a9c95d25f90fd7acc8e6e36056b56">SVF::GepStmt::getConstantFieldIdx</a></div><div class="ttdeci">s32_t getConstantFieldIdx() const</div><div class="ttdoc">Field index of the gep statement if it access the field of a struct. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00453">SVFStatements.h:453</a></div></div>
194
194
  <div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_aab08c9a0527138599e58e72f69071ecb"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#aab08c9a0527138599e58e72f69071ecb">SVF::FlowSensitiveTBHC::propDFInToIn</a></div><div class="ttdeci">virtual bool propDFInToIn(const SVFGNode *srcStmt, NodeID srcVar, const SVFGNode *dstStmt, NodeID dstVar) override</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00560">FlowSensitiveTBHC.cpp:560</a></div></div>
195
195
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
196
- <div class="ttc" id="classSVF_1_1PHIVFGNode_html_a103e55e670ce614cabc13b8dc5b17b91"><div class="ttname"><a href="classSVF_1_1PHIVFGNode.html#a103e55e670ce614cabc13b8dc5b17b91">SVF::PHIVFGNode::isPTANode</a></div><div class="ttdeci">bool isPTANode() const</div><div class="ttdoc">Whether this phi node is of pointer type (used for pointer analysis). </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00638">VFGNode.h:638</a></div></div>
196
+ <div class="ttc" id="classSVF_1_1PHIVFGNode_html_a103e55e670ce614cabc13b8dc5b17b91"><div class="ttname"><a href="classSVF_1_1PHIVFGNode.html#a103e55e670ce614cabc13b8dc5b17b91">SVF::PHIVFGNode::isPTANode</a></div><div class="ttdeci">bool isPTANode() const</div><div class="ttdoc">Whether this phi node is of pointer type (used for pointer analysis). </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00659">VFGNode.h:659</a></div></div>
197
197
  <div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_a2c47ba37bd250be455a21d1f0049d556"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#a2c47ba37bd250be455a21d1f0049d556">SVF::FlowSensitiveTBHC::getRawCTirMetadata</a></div><div class="ttdeci">static const MDNode * getRawCTirMetadata(const SVFGNode *)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00614">FlowSensitiveTBHC.cpp:614</a></div></div>
198
198
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_af90d2ccb01402c5ca9d7a059f345c816"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#af90d2ccb01402c5ca9d7a059f345c816">SVF::PointerAnalysis::isFIObjNode</a></div><div class="ttdeci">bool isFIObjNode(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00337">PointerAnalysis.h:337</a></div></div>
199
199
  <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#l00165">GenericGraph.h:165</a></div></div>
@@ -202,7 +202,7 @@ $(function() {
202
202
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0b6c03af568b70903da6b200ac86c951"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">SVF::SVFStmt::isPTAEdge</a></div><div class="ttdeci">bool isPTAEdge() const</div><div class="ttdoc">Whether src and dst nodes are both of pointer type. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00058">SVFStatements.cpp:58</a></div></div>
203
203
  <div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_acd6ade2b73c19d1eb7faf0e457becba6"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#acd6ade2b73c19d1eb7faf0e457becba6">SVF::FlowSensitiveTBHC::gepToSVFGRetrievers</a></div><div class="ttdeci">Map&lt; NodeID, NodeBS &gt; gepToSVFGRetrievers</div><div class="ttdoc">Maps GEP objects to the SVFG nodes that retrieved them with getGepObjClones. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8h_source.html#l00115">FlowSensitiveTBHC.h:115</a></div></div>
204
204
  <div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ae520e0551e63223a908f92a6b9667356"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ae520e0551e63223a908f92a6b9667356">SVF::TypeBasedHeapCloning::getFilterSet</a></div><div class="ttdeci">PointsTo &amp; getFilterSet(NodeID loc)</div><div class="ttdoc">Returns the filter set of a location. Not const; could create empty PointsTo. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00113">TypeBasedHeapCloning.cpp:113</a></div></div>
205
- <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#l00113">VFGNode.h:113</a></div></div>
205
+ <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#l00116">VFGNode.h:116</a></div></div>
206
206
  <div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_ab9615acdb43219c39f40e886f5baf803"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#ab9615acdb43219c39f40e886f5baf803">SVF::FlowSensitiveTBHC::updateInFromOut</a></div><div class="ttdeci">virtual bool updateInFromOut(const SVFGNode *srcStmt, NodeID srcVar, const SVFGNode *dstStmt, NodeID dstVar) override</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00541">FlowSensitiveTBHC.cpp:541</a></div></div>
207
207
  <div class="ttc" id="classSVF_1_1DFPTData_html_a506a2be8f909663d59245254bddea00b"><div class="ttname"><a href="classSVF_1_1DFPTData.html#a506a2be8f909663d59245254bddea00b">SVF::DFPTData::updateAllDFInFromIn</a></div><div class="ttdeci">virtual bool updateAllDFInFromIn(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar)=0</div><div class="ttdoc">Union (IN[dstLoc::dstVar], IN[srcLoc:srcVar]. There is no flag check, unlike the above. </div></div>
208
208
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
@@ -212,7 +212,7 @@ $(function() {
212
212
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">SVF::PointerAnalysis::PTATY</a></div><div class="ttdeci">PTATY</div><div class="ttdoc">Pointer analysis type list. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00062">PointerAnalysis.h:62</a></div></div>
213
213
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
214
214
  <div class="ttc" id="classSVF_1_1IndirectSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1IndirectSVFGEdge.html">SVF::IndirectSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00042">SVFGEdge.h:42</a></div></div>
215
- <div class="ttc" id="classSVF_1_1FormalRetVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalRetVFGNode.html">SVF::FormalRetVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l01004">VFGNode.h:1004</a></div></div>
215
+ <div class="ttc" id="classSVF_1_1FormalRetVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalRetVFGNode.html">SVF::FormalRetVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l01035">VFGNode.h:1035</a></div></div>
216
216
  <div class="ttc" id="classSVF_1_1FlowSensitive_html_a82b76087363b26fbe749653935569de7"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a82b76087363b26fbe749653935569de7">SVF::FlowSensitive::storeTime</a></div><div class="ttdeci">double storeTime</div><div class="ttdoc">time of store edges </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00316">FlowSensitive.h:316</a></div></div>
217
217
  <div class="ttc" id="FlowSensitiveTBHC_8cpp_html_af72d866f4ffed004e104b686d4f94cb3"><div class="ttname"><a href="FlowSensitiveTBHC_8cpp.html#af72d866f4ffed004e104b686d4f94cb3">getVTInitType</a></div><div class="ttdeci">static const DIType * getVTInitType(const CopySVFGNode *copy, DCHGraph *dchg)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00503">FlowSensitiveTBHC.cpp:503</a></div></div>
218
218
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a3550ea3f087ec557a6fe076bc443b05d"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a3550ea3f087ec557a6fe076bc443b05d">SVF::PointerAnalysis::print_stat</a></div><div class="ttdeci">bool print_stat</div><div class="ttdoc">User input flags. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00139">PointerAnalysis.h:139</a></div></div>