svf-tools 1.0.577 → 1.0.578

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 (153) hide show
  1. package/SVF-doxygen/html/html/CFLAlias_8cpp.html +0 -1
  2. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +18 -25
  3. package/SVF-doxygen/html/html/CFLAlias_8h.html +1 -8
  4. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +23 -49
  5. package/SVF-doxygen/html/html/CFLBase_8h.html +103 -0
  6. package/SVF-doxygen/html/html/CFLBase_8h_source.html +124 -0
  7. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +2 -2
  8. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +5 -4
  9. package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +24 -19
  10. package/SVF-doxygen/html/html/CFLStat_8h.html +1 -0
  11. package/SVF-doxygen/html/html/CFLStat_8h_source.html +22 -21
  12. package/SVF-doxygen/html/html/CFLVF_8cpp.html +0 -2
  13. package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +5 -8
  14. package/SVF-doxygen/html/html/CFLVF_8h.html +3 -8
  15. package/SVF-doxygen/html/html/CFLVF_8h_source.html +12 -26
  16. package/SVF-doxygen/html/html/CHG_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/CHG_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
  19. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/ConsG_8h_source.html +1 -1
  21. package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
  22. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +1 -1
  23. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
  24. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +1 -1
  25. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  28. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  29. package/SVF-doxygen/html/html/IRGraph_8h_source.html +1 -1
  30. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
  32. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  34. package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
  35. package/SVF-doxygen/html/html/TCT_8h_source.html +1 -1
  36. package/SVF-doxygen/html/html/VFG_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
  38. package/SVF-doxygen/html/html/annotated.html +271 -270
  39. package/SVF-doxygen/html/html/cfl_8cpp.html +6 -9
  40. package/SVF-doxygen/html/html/cfl_8cpp_source.html +6 -8
  41. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +9 -8
  42. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.png +0 -0
  43. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +75 -71
  44. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +239 -679
  45. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.png +0 -0
  46. package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +275 -0
  47. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +1341 -0
  48. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.png +0 -0
  49. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph-members.html +21 -20
  50. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +33 -3
  51. package/SVF-doxygen/html/html/classSVF_1_1CFLStat-members.html +2 -2
  52. package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +58 -58
  53. package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +91 -72
  54. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +243 -274
  55. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.png +0 -0
  56. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  57. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
  58. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +21 -20
  59. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  60. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +12 -11
  61. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.png +0 -0
  62. package/SVF-doxygen/html/html/classes.html +96 -95
  63. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  64. package/SVF-doxygen/html/html/dir_ae8aa099e368efaa962140c6624142bc.html +2 -0
  65. package/SVF-doxygen/html/html/files.html +8 -7
  66. package/SVF-doxygen/html/html/functions_0x7e.html +2 -5
  67. package/SVF-doxygen/html/html/functions_a.html +10 -9
  68. package/SVF-doxygen/html/html/functions_c.html +28 -28
  69. package/SVF-doxygen/html/html/functions_f.html +17 -16
  70. package/SVF-doxygen/html/html/functions_func.html +6 -5
  71. package/SVF-doxygen/html/html/functions_func_0x7e.html +2 -5
  72. package/SVF-doxygen/html/html/functions_func_c.html +29 -21
  73. package/SVF-doxygen/html/html/functions_func_f.html +4 -1
  74. package/SVF-doxygen/html/html/functions_func_g.html +14 -11
  75. package/SVF-doxygen/html/html/functions_func_i.html +10 -7
  76. package/SVF-doxygen/html/html/functions_func_p.html +1 -1
  77. package/SVF-doxygen/html/html/functions_func_s.html +2 -2
  78. package/SVF-doxygen/html/html/functions_g.html +18 -17
  79. package/SVF-doxygen/html/html/functions_i.html +10 -7
  80. package/SVF-doxygen/html/html/functions_l.html +6 -6
  81. package/SVF-doxygen/html/html/functions_m.html +2 -2
  82. package/SVF-doxygen/html/html/functions_n.html +14 -11
  83. package/SVF-doxygen/html/html/functions_o.html +15 -15
  84. package/SVF-doxygen/html/html/functions_p.html +19 -15
  85. package/SVF-doxygen/html/html/functions_r.html +3 -7
  86. package/SVF-doxygen/html/html/functions_s.html +16 -16
  87. package/SVF-doxygen/html/html/functions_t.html +9 -6
  88. package/SVF-doxygen/html/html/functions_type_c.html +0 -1
  89. package/SVF-doxygen/html/html/functions_v.html +6 -6
  90. package/SVF-doxygen/html/html/functions_vars_a.html +1 -1
  91. package/SVF-doxygen/html/html/functions_vars_c.html +0 -1
  92. package/SVF-doxygen/html/html/functions_vars_g.html +2 -4
  93. package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
  94. package/SVF-doxygen/html/html/functions_vars_n.html +11 -8
  95. package/SVF-doxygen/html/html/functions_vars_p.html +1 -1
  96. package/SVF-doxygen/html/html/functions_vars_s.html +2 -4
  97. package/SVF-doxygen/html/html/functions_vars_t.html +9 -6
  98. package/SVF-doxygen/html/html/hierarchy.html +58 -57
  99. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  100. package/SVF-doxygen/html/html/namespaceSVF.html +2 -0
  101. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  102. package/SVF-doxygen/html/html/search/all_1.js +2 -2
  103. package/SVF-doxygen/html/html/search/all_10.js +11 -11
  104. package/SVF-doxygen/html/html/search/all_11.js +2 -2
  105. package/SVF-doxygen/html/html/search/all_12.js +11 -11
  106. package/SVF-doxygen/html/html/search/all_13.js +9 -8
  107. package/SVF-doxygen/html/html/search/all_15.js +4 -4
  108. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  109. package/SVF-doxygen/html/html/search/all_19.js +1 -2
  110. package/SVF-doxygen/html/html/search/all_3.js +5 -2
  111. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  112. package/SVF-doxygen/html/html/search/all_7.js +4 -3
  113. package/SVF-doxygen/html/html/search/all_9.js +2 -2
  114. package/SVF-doxygen/html/html/search/all_c.js +4 -4
  115. package/SVF-doxygen/html/html/search/all_d.js +3 -3
  116. package/SVF-doxygen/html/html/search/all_e.js +11 -10
  117. package/SVF-doxygen/html/html/search/all_f.js +2 -2
  118. package/SVF-doxygen/html/html/search/classes_2.js +1 -0
  119. package/SVF-doxygen/html/html/search/files_2.js +1 -0
  120. package/SVF-doxygen/html/html/search/functions_0.js +1 -1
  121. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  122. package/SVF-doxygen/html/html/search/functions_17.js +1 -2
  123. package/SVF-doxygen/html/html/search/functions_2.js +3 -1
  124. package/SVF-doxygen/html/html/search/functions_5.js +1 -1
  125. package/SVF-doxygen/html/html/search/functions_6.js +2 -1
  126. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  127. package/SVF-doxygen/html/html/search/functions_f.js +1 -1
  128. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
  129. package/SVF-doxygen/html/html/search/variables_1.js +1 -1
  130. package/SVF-doxygen/html/html/search/variables_10.js +1 -1
  131. package/SVF-doxygen/html/html/search/variables_12.js +2 -2
  132. package/SVF-doxygen/html/html/search/variables_13.js +9 -8
  133. package/SVF-doxygen/html/html/search/variables_3.js +1 -1
  134. package/SVF-doxygen/html/html/search/variables_7.js +2 -2
  135. package/SVF-doxygen/html/html/search/variables_9.js +1 -1
  136. package/SVF-doxygen/html/html/search/variables_c.js +1 -1
  137. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  138. package/SVF-doxygen/html/html/search/variables_e.js +9 -8
  139. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +1 -1
  140. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +2 -2
  141. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +1 -1
  142. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  143. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  144. package/include/CFL/CFLAlias.h +10 -47
  145. package/include/CFL/CFLBase.h +111 -0
  146. package/include/CFL/CFLStat.h +4 -2
  147. package/include/CFL/CFLVF.h +13 -23
  148. package/include/Graphs/CFLGraph.h +5 -0
  149. package/lib/CFL/CFLAlias.cpp +60 -52
  150. package/lib/CFL/CFLStat.cpp +11 -19
  151. package/lib/CFL/CFLVF.cpp +40 -35
  152. package/package.json +1 -1
  153. package/tools/CFL/cfl.cpp +12 -25
@@ -66,23 +66,23 @@ $(function() {
66
66
  <div class="title">CFLStat.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="CFLStat_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">//===- CFLStat.cpp -- Statistics of CFL Reachability&#39;s 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"> * CFLStat.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: 17 Sep, 2022</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Pei Xu</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="CFLStat_8h.html">CFL/CFLStat.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacestd.html">std</a>;</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;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CFLStat.html#aab012b94d23df8f5c78e74934aebf024">CFLStat::_MaxPtsSize</a> = 0;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CFLStat.html#ab6a95a6c55e582958cae3327e482ef7f">CFLStat::_NumOfCycles</a> = 0;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CFLStat.html#a9866844333afd0bfffd336778e97ae02">CFLStat::_NumOfPWCCycles</a> = 0;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CFLStat.html#a404decd93db2bbcd36682cfdc3e5549c">CFLStat::_NumOfNodesInCycles</a> = 0;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CFLStat.html#a3601b07709f1eef4c4685cc90a1648e2">CFLStat::_MaxNumOfNodesInSCC</a> = 0;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1CFLStat.html#a1038d77be761d3033237724330631d3e">CFLStat::CollapseTime</a> = <span class="stringliteral">&quot;CollapseTime&quot;</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLStat.html#abde1d6206fcde988c3959affc8afbbad"> 47</a></span>&#160;<a class="code" href="classSVF_1_1CFLStat.html#abde1d6206fcde988c3959affc8afbbad">CFLStat::CFLStat</a>(<a class="code" href="classSVF_1_1CFLAlias.html">CFLAlias</a>* <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>): <a class="code" href="classSVF_1_1PTAStat.html">PTAStat</a>(p),pta(p)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#ab3e6256784b06ef36c0f93a88c7d8590">_NumOfNullPtr</a> = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#a4e0b174c9387ffa3bca0eb1976e489fb">_NumOfConstantPtr</a>= 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#af4a3e4fded0ea25bf29f91b08b335236">_NumOfBlackholePtr</a> = 0;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a730cc814fede3edb563aa9957c869e9e">startClk</a>();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLStat.html#a915d2f3c684646f813687445c2d22622"> 58</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFLStat.html#a915d2f3c684646f813687445c2d22622">CFLStat::collectCFLInfo</a>(<a class="code" href="classSVF_1_1CFLGraph.html">CFLGraph</a>* <a class="code" href="classSVF_1_1CFLGraph.html">CFLGraph</a>)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;{</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#ab6a95a6c55e582958cae3327e482ef7f">_NumOfCycles</a> = 0;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#a9866844333afd0bfffd336778e97ae02">_NumOfPWCCycles</a> = 0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#a404decd93db2bbcd36682cfdc3e5549c">_NumOfNodesInCycles</a> = 0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">NodeSet</a> repNodes;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; repNodes.clear();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;}</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLStat.html#ae235e945a6856cfad961ba752b75d409"> 72</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFLStat.html#ae235e945a6856cfad961ba752b75d409">CFLStat::collectCycleInfo</a>(<a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>* consCG)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#ab6a95a6c55e582958cae3327e482ef7f">_NumOfCycles</a> = 0;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#a9866844333afd0bfffd336778e97ae02">_NumOfPWCCycles</a> = 0;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#a404decd93db2bbcd36682cfdc3e5549c">_NumOfNodesInCycles</a> = 0;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">NodeSet</a> repNodes;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; repNodes.clear();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">ConstraintGraph::iterator</a> it = consCG-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = consCG-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="comment">// sub nodes have been removed from the constraint graph, only rep nodes are left.</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> repNode = consCG-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#a39b973543acdcdc5493832cc9d0f586f">sccRepNode</a>(it-&gt;first);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>&amp; subNodes = consCG-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#aed605b010e313f4b11e95b83fe50e3b3">sccSubNodes</a>(repNode);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> clone = subNodes;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> it = subNodes.<a class="code" href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">begin</a>(), eit = subNodes.<a class="code" href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">end</a>(); it != eit; ++it)</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="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = *it;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode = <a class="code" href="classSVF_1_1CFLStat.html#a23c6ba004928f8ac6c9b12bd7ad49881">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(nodeId);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ObjVar&gt;(pagNode) &amp;&amp; <a class="code" href="classSVF_1_1CFLStat.html#a23c6ba004928f8ac6c9b12bd7ad49881">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">isFieldInsensitive</a>(nodeId))</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> baseId = consCG-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#a6e8c46641da751fe3369c9d5407ce415">getBaseObjVar</a>(nodeId);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; clone.<a class="code" href="classSVF_1_1SparseBitVector.html#ad5337b5aeed50f8b7ffd56b14ee25c9f">reset</a>(nodeId);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; clone.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(baseId);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = clone.<a class="code" href="classSVF_1_1SparseBitVector.html#a9f96e6a886fa69e07cda5dbfaed8b7c9">count</a>();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">if</span> (num &gt; 1)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">if</span>(repNodes.insert(repNode).second)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#a404decd93db2bbcd36682cfdc3e5549c">_NumOfNodesInCycles</a> += num;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">if</span>(consCG-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#a84468bc9355d31e8c3e18369036ddf5c">isPWCNode</a>(repNode))</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#a9866844333afd0bfffd336778e97ae02">_NumOfPWCCycles</a> ++;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">if</span>( num &gt; <a class="code" href="classSVF_1_1CFLStat.html#a3601b07709f1eef4c4685cc90a1648e2">_MaxNumOfNodesInSCC</a>)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#a3601b07709f1eef4c4685cc90a1648e2">_MaxNumOfNodesInSCC</a> = num;</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; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#ab6a95a6c55e582958cae3327e482ef7f">_NumOfCycles</a> += repNodes.size();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;}</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLStat.html#a58ad0e3bdb93c985ffc7242dba074fea"> 112</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFLStat.html#a58ad0e3bdb93c985ffc7242dba074fea">CFLStat::constraintGraphStat</a>()</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;{</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</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; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfCopys = 0;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfGeps = 0;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> totalNodeNumber = 0;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> cgNodeNumber = 0;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> objNodeNumber = 0;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> addrtotalIn = 0;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> addrmaxIn = 0;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> addrmaxOut = 0;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> copytotalIn = 0;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> copymaxIn = 0;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> copymaxOut = 0;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> loadtotalIn = 0;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> loadmaxIn = 0;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> loadmaxOut = 0;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> storetotalIn = 0;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> storemaxIn = 0;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> storemaxOut = 0;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordtype">double</span> storeavgIn = (double)storetotalIn/cgNodeNumber;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">double</span> loadavgIn = (double)loadtotalIn/cgNodeNumber;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordtype">double</span> copyavgIn = (double)copytotalIn/cgNodeNumber;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordtype">double</span> addravgIn = (double)addrtotalIn/cgNodeNumber;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordtype">double</span> avgIn = (double)(addrtotalIn + copytotalIn + loadtotalIn + storetotalIn)/cgNodeNumber;</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;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfCGNode&quot;</span>] = totalNodeNumber;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;TotalValidNode&quot;</span>] = cgNodeNumber;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;TotalValidObjNode&quot;</span>] = objNodeNumber;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfCopys&quot;</span>] = numOfCopys;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfGeps&quot;</span>] = numOfGeps;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxInCopyEdge&quot;</span>] = copymaxIn;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxOutCopyEdge&quot;</span>] = copymaxOut;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxInLoadEdge&quot;</span>] = loadmaxIn;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxOutLoadEdge&quot;</span>] = loadmaxOut;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxInStoreEdge&quot;</span>] = storemaxIn;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxOutStoreEdge&quot;</span>] = storemaxOut;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;AvgIn/OutStoreEdge&quot;</span>] = storeavgIn;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxInAddrEdge&quot;</span>] = addrmaxIn;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxOutAddrEdge&quot;</span>] = addrmaxOut;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a5383691a34426a1a997b5eed387f1831">timeStatMap</a>[<span class="stringliteral">&quot;AvgIn/OutCopyEdge&quot;</span>] = copyavgIn;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a5383691a34426a1a997b5eed387f1831">timeStatMap</a>[<span class="stringliteral">&quot;AvgIn/OutLoadEdge&quot;</span>] = loadavgIn;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a5383691a34426a1a997b5eed387f1831">timeStatMap</a>[<span class="stringliteral">&quot;AvgIn/OutAddrEdge&quot;</span>] = addravgIn;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a5383691a34426a1a997b5eed387f1831">timeStatMap</a>[<span class="stringliteral">&quot;AvgIn/OutEdge&quot;</span>] = avgIn;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a178fcefed6ffffc78bbe9b23e0e1babe">PTAStat::printStat</a>(<span class="stringliteral">&quot;CFL Graph Stats&quot;</span>);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;}</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLStat.html#a6bcca58ff4481dee06b06eb17ed603ea"> 166</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFLStat.html#a6bcca58ff4481dee06b06eb17ed603ea">CFLStat::statNullPtr</a>()</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;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#ab3e6256784b06ef36c0f93a88c7d8590">_NumOfNullPtr</a> = 0;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> iter = <a class="code" href="classSVF_1_1CFLStat.html#a23c6ba004928f8ac6c9b12bd7ad49881">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eiter = <a class="code" href="classSVF_1_1CFLStat.html#a23c6ba004928f8ac6c9b12bd7ad49881">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; iter != eiter; ++iter)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> pagNodeId = iter-&gt;first;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode = iter-&gt;second;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ValVar&gt;(pagNode) == <span class="keyword">false</span>)</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</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="l00178"></a><span class="lineno"> 178</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="l00179"></a><span class="lineno"> 179</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="l00180"></a><span class="lineno"> 180</span>&#160; {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = <a class="code" href="classSVF_1_1CFLStat.html#a23c6ba004928f8ac6c9b12bd7ad49881">pta</a>-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(pagNodeId);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CFLStat.html#a23c6ba004928f8ac6c9b12bd7ad49881">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a56368369bc37e37b13f19e5eb1890063">containBlackHoleNode</a>(pts))</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#af4a3e4fded0ea25bf29f91b08b335236">_NumOfBlackholePtr</a>++;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CFLStat.html#a23c6ba004928f8ac6c9b12bd7ad49881">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#afa7d9f6209904acd7893ae583e28dafd">containConstantNode</a>(pts))</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#a4e0b174c9387ffa3bca0eb1976e489fb">_NumOfConstantPtr</a>++;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">if</span>(pts.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>())</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; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</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="l00194"></a><span class="lineno"> 194</span>&#160; {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="comment">// if a pointer is in dead function, we do not care</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a33b2c83db77cd2ac72b1d591789ef1c5">SymbolTableInfo::isPtrInUncalledFunction</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="l00197"></a><span class="lineno"> 197</span>&#160; {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#ab3e6256784b06ef36c0f93a88c7d8590">_NumOfNullPtr</a>++;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</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="l00200"></a><span class="lineno"> 200</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="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(rawstr.str());</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="comment">//pagNode-&gt;getValue()-&gt;dump();</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#ab3e6256784b06ef36c0f93a88c7d8590">_NumOfNullPtr</a>++;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</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>() &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(rawstr.str());</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; }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</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;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;}</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLStat.html#a1d85a7c4b2c22d3d8e0115212362d83b"> 220</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFLStat.html#a1d85a7c4b2c22d3d8e0115212362d83b">CFLStat::performStat</a>()</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;{</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; assert(SVFUtil::isa&lt;CFLAlias&gt;(<a class="code" href="classSVF_1_1CFLStat.html#a23c6ba004928f8ac6c9b12bd7ad49881">pta</a>) &amp;&amp; <span class="stringliteral">&quot;not an CFLAlias pass!! what else??&quot;</span>);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a1b7f1e3381de87f75f06cddb9c6c1ec1">endClk</a>();</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="comment">// SVFIR* pag = pta-&gt;getPAG();</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="classSVF_1_1CFLGraph.html">CFLGraph</a>* <a class="code" href="classSVF_1_1CFLGraph.html">CFLGraph</a> = <a class="code" href="classSVF_1_1CFLStat.html#a23c6ba004928f8ac6c9b12bd7ad49881">pta</a>-&gt;<a class="code" href="classSVF_1_1CFLAlias.html#ade2773347ef08df69713e14cf1a24352">getCFLGraph</a>();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="comment">// collect cfl graph infor</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#a915d2f3c684646f813687445c2d22622">collectCFLInfo</a>(CFLGraph);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="comment">// delete CFLGraph;</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="comment">// collect constraint graph cycles</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="comment">// collectCycleInfo(consCG);</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="comment">// stat null ptr number</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#a6bcca58ff4481dee06b06eb17ed603ea">statNullPtr</a>();</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> totalPointers = 0;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> totalTopLevPointers = 0;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> totalPtsSize = 0;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> totalTopLevPtsSize = 0;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> iter = <a class="code" href="classSVF_1_1CFLStat.html#a23c6ba004928f8ac6c9b12bd7ad49881">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eiter = <a class="code" href="classSVF_1_1CFLStat.html#a23c6ba004928f8ac6c9b12bd7ad49881">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>();</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; iter != eiter; ++iter)</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; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node = iter-&gt;first;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = <a class="code" href="classSVF_1_1CFLStat.html#a23c6ba004928f8ac6c9b12bd7ad49881">pta</a>-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(node);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> size = pts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; totalPointers++;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; totalPtsSize+=size;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLStat.html#a23c6ba004928f8ac6c9b12bd7ad49881">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a5c3b194ebada47baaccf0e9f3ab1a139">isValidTopLevelPtr</a>(<a class="code" href="classSVF_1_1CFLStat.html#a23c6ba004928f8ac6c9b12bd7ad49881">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(node)))</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; totalTopLevPointers++;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; totalTopLevPtsSize+=size;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">if</span>(size &gt; <a class="code" href="classSVF_1_1CFLStat.html#aab012b94d23df8f5c78e74934aebf024">_MaxPtsSize</a> )</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#aab012b94d23df8f5c78e74934aebf024">_MaxPtsSize</a> = size;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#ad6de9d3f25c20705768000c987af0eb6">PTAStat::performStat</a>();</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#a58ad0e3bdb93c985ffc7242dba074fea">constraintGraphStat</a>();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;PointsToConstPtr&quot;</span>] = <a class="code" href="classSVF_1_1CFLStat.html#a4e0b174c9387ffa3bca0eb1976e489fb">_NumOfConstantPtr</a>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;PointsToBlkPtr&quot;</span>] = <a class="code" href="classSVF_1_1CFLStat.html#af4a3e4fded0ea25bf29f91b08b335236">_NumOfBlackholePtr</a>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a178fcefed6ffffc78bbe9b23e0e1babe">PTAStat::printStat</a>(<span class="stringliteral">&quot;CFL Alias Analysis Stats&quot;</span>);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;}</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="ttc" id="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">SVF::SparseBitVector::SparseBitVectorIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00534">SparseBitVector.h:534</a></div></div>
69
+ <a href="CFLStat_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">//===- CFLStat.cpp -- Statistics of CFL Reachability&#39;s 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"> * CFLStat.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: 17 Sep, 2022</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Pei Xu</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="CFLStat_8h.html">CFL/CFLStat.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacestd.html">std</a>;</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;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CFLStat.html#aab012b94d23df8f5c78e74934aebf024">CFLStat::_MaxPtsSize</a> = 0;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CFLStat.html#ab6a95a6c55e582958cae3327e482ef7f">CFLStat::_NumOfCycles</a> = 0;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CFLStat.html#a9866844333afd0bfffd336778e97ae02">CFLStat::_NumOfPWCCycles</a> = 0;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CFLStat.html#a404decd93db2bbcd36682cfdc3e5549c">CFLStat::_NumOfNodesInCycles</a> = 0;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CFLStat.html#a3601b07709f1eef4c4685cc90a1648e2">CFLStat::_MaxNumOfNodesInSCC</a> = 0;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1CFLStat.html#a1038d77be761d3033237724330631d3e">CFLStat::CollapseTime</a> = <span class="stringliteral">&quot;CollapseTime&quot;</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLStat.html#ada5680cabe65962be3a574a8a740f59c"> 47</a></span>&#160;<a class="code" href="classSVF_1_1CFLStat.html#ada5680cabe65962be3a574a8a740f59c">CFLStat::CFLStat</a>(<a class="code" href="classSVF_1_1CFLBase.html">CFLBase</a>* <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>): <a class="code" href="classSVF_1_1PTAStat.html">PTAStat</a>(p),pta(p)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a730cc814fede3edb563aa9957c869e9e">startClk</a>();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLStat.html#a915d2f3c684646f813687445c2d22622"> 55</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFLStat.html#a915d2f3c684646f813687445c2d22622">CFLStat::collectCFLInfo</a>(<a class="code" href="classSVF_1_1CFLGraph.html">CFLGraph</a>* <a class="code" href="classSVF_1_1CFLGraph.html">CFLGraph</a>)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfNodes&quot;</span>] = CFLGraph-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">getTotalNodeNum</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfEdges&quot;</span>] = CFLGraph-&gt;<a class="code" href="classSVF_1_1CFLGraph.html#afcf910a94a3b081067f5a55599475a16">getCFLEdges</a>().size();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a178fcefed6ffffc78bbe9b23e0e1babe">PTAStat::printStat</a>(<span class="stringliteral">&quot;CFLGraph Stats&quot;</span>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;}</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLStat.html#ae235e945a6856cfad961ba752b75d409"> 68</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFLStat.html#ae235e945a6856cfad961ba752b75d409">CFLStat::collectCycleInfo</a>(<a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>* consCG)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;{</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#ab6a95a6c55e582958cae3327e482ef7f">_NumOfCycles</a> = 0;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#a9866844333afd0bfffd336778e97ae02">_NumOfPWCCycles</a> = 0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#a404decd93db2bbcd36682cfdc3e5549c">_NumOfNodesInCycles</a> = 0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">NodeSet</a> repNodes;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; repNodes.clear();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">ConstraintGraph::iterator</a> it = consCG-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = consCG-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</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; <span class="comment">// sub nodes have been removed from the constraint graph, only rep nodes are left.</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> repNode = consCG-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#a39b973543acdcdc5493832cc9d0f586f">sccRepNode</a>(it-&gt;first);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>&amp; subNodes = consCG-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#aed605b010e313f4b11e95b83fe50e3b3">sccSubNodes</a>(repNode);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> clone = subNodes;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> it = subNodes.<a class="code" href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">begin</a>(), eit = subNodes.<a class="code" href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">end</a>(); it != eit; ++it)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId = *it;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode = <a class="code" href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(nodeId);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ObjVar&gt;(pagNode) &amp;&amp; <a class="code" href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">isFieldInsensitive</a>(nodeId))</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="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> baseId = consCG-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#a6e8c46641da751fe3369c9d5407ce415">getBaseObjVar</a>(nodeId);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; clone.<a class="code" href="classSVF_1_1SparseBitVector.html#ad5337b5aeed50f8b7ffd56b14ee25c9f">reset</a>(nodeId);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; clone.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(baseId);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</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="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = clone.<a class="code" href="classSVF_1_1SparseBitVector.html#a9f96e6a886fa69e07cda5dbfaed8b7c9">count</a>();</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span> (num &gt; 1)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">if</span>(repNodes.insert(repNode).second)</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; <a class="code" href="classSVF_1_1CFLStat.html#a404decd93db2bbcd36682cfdc3e5549c">_NumOfNodesInCycles</a> += num;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">if</span>(consCG-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#a84468bc9355d31e8c3e18369036ddf5c">isPWCNode</a>(repNode))</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#a9866844333afd0bfffd336778e97ae02">_NumOfPWCCycles</a> ++;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span>( num &gt; <a class="code" href="classSVF_1_1CFLStat.html#a3601b07709f1eef4c4685cc90a1648e2">_MaxNumOfNodesInSCC</a>)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#a3601b07709f1eef4c4685cc90a1648e2">_MaxNumOfNodesInSCC</a> = num;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#ab6a95a6c55e582958cae3327e482ef7f">_NumOfCycles</a> += repNodes.size();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;}</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLStat.html#a58ad0e3bdb93c985ffc7242dba074fea"> 108</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFLStat.html#a58ad0e3bdb93c985ffc7242dba074fea">CFLStat::constraintGraphStat</a>()</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;{</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</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; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfCopys = 0;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfGeps = 0;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> totalNodeNumber = 0;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> cgNodeNumber = 0;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> objNodeNumber = 0;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> addrtotalIn = 0;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> addrmaxIn = 0;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> addrmaxOut = 0;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> copytotalIn = 0;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> copymaxIn = 0;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> copymaxOut = 0;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> loadtotalIn = 0;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> loadmaxIn = 0;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> loadmaxOut = 0;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> storetotalIn = 0;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> storemaxIn = 0;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> storemaxOut = 0;</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; <span class="keywordtype">double</span> storeavgIn = (double)storetotalIn/cgNodeNumber;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">double</span> loadavgIn = (double)loadtotalIn/cgNodeNumber;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordtype">double</span> copyavgIn = (double)copytotalIn/cgNodeNumber;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordtype">double</span> addravgIn = (double)addrtotalIn/cgNodeNumber;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordtype">double</span> avgIn = (double)(addrtotalIn + copytotalIn + loadtotalIn + storetotalIn)/cgNodeNumber;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfCGNode&quot;</span>] = totalNodeNumber;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;TotalValidNode&quot;</span>] = cgNodeNumber;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;TotalValidObjNode&quot;</span>] = objNodeNumber;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfCopys&quot;</span>] = numOfCopys;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;NumOfGeps&quot;</span>] = numOfGeps;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxInCopyEdge&quot;</span>] = copymaxIn;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxOutCopyEdge&quot;</span>] = copymaxOut;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxInLoadEdge&quot;</span>] = loadmaxIn;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxOutLoadEdge&quot;</span>] = loadmaxOut;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxInStoreEdge&quot;</span>] = storemaxIn;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxOutStoreEdge&quot;</span>] = storemaxOut;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;AvgIn/OutStoreEdge&quot;</span>] = storeavgIn;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxInAddrEdge&quot;</span>] = addrmaxIn;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;MaxOutAddrEdge&quot;</span>] = addrmaxOut;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a5383691a34426a1a997b5eed387f1831">timeStatMap</a>[<span class="stringliteral">&quot;AvgIn/OutCopyEdge&quot;</span>] = copyavgIn;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a5383691a34426a1a997b5eed387f1831">timeStatMap</a>[<span class="stringliteral">&quot;AvgIn/OutLoadEdge&quot;</span>] = loadavgIn;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a5383691a34426a1a997b5eed387f1831">timeStatMap</a>[<span class="stringliteral">&quot;AvgIn/OutAddrEdge&quot;</span>] = addravgIn;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a5383691a34426a1a997b5eed387f1831">timeStatMap</a>[<span class="stringliteral">&quot;AvgIn/OutEdge&quot;</span>] = avgIn;</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; <a class="code" href="classSVF_1_1SVFStat.html#a178fcefed6ffffc78bbe9b23e0e1babe">PTAStat::printStat</a>(<span class="stringliteral">&quot;CFL Graph Stats&quot;</span>);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;}</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLStat.html#a6bcca58ff4481dee06b06eb17ed603ea"> 162</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFLStat.html#a6bcca58ff4481dee06b06eb17ed603ea">CFLStat::statNullPtr</a>()</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;{</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#ab3e6256784b06ef36c0f93a88c7d8590">_NumOfNullPtr</a> = 0;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> iter = <a class="code" href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eiter = <a class="code" href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>();</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; iter != eiter; ++iter)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> pagNodeId = iter-&gt;first;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode = iter-&gt;second;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ValVar&gt;(pagNode) == <span class="keyword">false</span>)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</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="l00174"></a><span class="lineno"> 174</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="l00175"></a><span class="lineno"> 175</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="l00176"></a><span class="lineno"> 176</span>&#160; {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = <a class="code" href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">pta</a>-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(pagNodeId);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a56368369bc37e37b13f19e5eb1890063">containBlackHoleNode</a>(pts))</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#af4a3e4fded0ea25bf29f91b08b335236">_NumOfBlackholePtr</a>++;</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; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#afa7d9f6209904acd7893ae583e28dafd">containConstantNode</a>(pts))</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#a4e0b174c9387ffa3bca0eb1976e489fb">_NumOfConstantPtr</a>++;</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; <span class="keywordflow">if</span>(pts.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>())</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</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="l00190"></a><span class="lineno"> 190</span>&#160; {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="comment">// if a pointer is in dead function, we do not care</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a33b2c83db77cd2ac72b1d591789ef1c5">SymbolTableInfo::isPtrInUncalledFunction</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="l00193"></a><span class="lineno"> 193</span>&#160; {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#ab3e6256784b06ef36c0f93a88c7d8590">_NumOfNullPtr</a>++;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</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="l00196"></a><span class="lineno"> 196</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="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(rawstr.str());</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="comment">//pagNode-&gt;getValue()-&gt;dump();</span></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; }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">else</span></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; <a class="code" href="classSVF_1_1CFLStat.html#ab3e6256784b06ef36c0f93a88c7d8590">_NumOfNullPtr</a>++;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</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>() &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(rawstr.str());</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</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;}</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="classSVF_1_1CFLStat.html#a1d85a7c4b2c22d3d8e0115212362d83b"> 216</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFLStat.html#a1d85a7c4b2c22d3d8e0115212362d83b">CFLStat::performStat</a>()</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;{</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; assert((SVFUtil::isa&lt;CFLAlias&gt;(<a class="code" href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">pta</a>)||SVFUtil::isa&lt;CFLVF&gt;(<a class="code" href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">pta</a>)) &amp;&amp; <span class="stringliteral">&quot;not an CFLAlias pass!! what else??&quot;</span>);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a1b7f1e3381de87f75f06cddb9c6c1ec1">endClk</a>();</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="code" href="classSVF_1_1CFLGraph.html">CFLGraph</a>* <a class="code" href="classSVF_1_1CFLGraph.html">CFLGraph</a> = <a class="code" href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">pta</a>-&gt;<a class="code" href="classSVF_1_1CFLBase.html#aa17cbd1303b97e9e26ed77129d10b99c">getCFLGraph</a>();</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#a915d2f3c684646f813687445c2d22622">collectCFLInfo</a>(CFLGraph);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">pta</a>-&gt;<a class="code" href="classSVF_1_1CFLBase.html#aa4c08dc36c2694d507618fa2f755cd37">countSumEdges</a>();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a5383691a34426a1a997b5eed387f1831">timeStatMap</a>[<span class="stringliteral">&quot;AnalysisTime&quot;</span>] = <a class="code" href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">pta</a>-&gt;<a class="code" href="classSVF_1_1CFLBase.html#aadadb80fdc1d2a3258463043bcde6e36">timeOfSolving</a>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;SumEdges&quot;</span>] = <a class="code" href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">pta</a>-&gt;<a class="code" href="classSVF_1_1CFLBase.html#aad77c4e9fb9a3fdceb222fbdec192c51">numOfSumEdges</a>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a178fcefed6ffffc78bbe9b23e0e1babe">PTAStat::printStat</a>(<span class="stringliteral">&quot;CFL-reachability analysis Stats&quot;</span>);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> totalPointers = 0;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> totalTopLevPointers = 0;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> totalPtsSize = 0;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> totalTopLevPtsSize = 0;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> iter = <a class="code" href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eiter = <a class="code" href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>();</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; iter != eiter; ++iter)</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; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node = iter-&gt;first;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = <a class="code" href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">pta</a>-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(node);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> size = pts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>();</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; totalPointers++;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; totalPtsSize+=size;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a5c3b194ebada47baaccf0e9f3ab1a139">isValidTopLevelPtr</a>(<a class="code" href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(node)))</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; totalTopLevPointers++;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; totalTopLevPtsSize+=size;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">if</span>(size &gt; <a class="code" href="classSVF_1_1CFLStat.html#aab012b94d23df8f5c78e74934aebf024">_MaxPtsSize</a> )</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#aab012b94d23df8f5c78e74934aebf024">_MaxPtsSize</a> = size;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="classSVF_1_1PTAStat.html#ad6de9d3f25c20705768000c987af0eb6">PTAStat::performStat</a>();</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="classSVF_1_1CFLStat.html#a58ad0e3bdb93c985ffc7242dba074fea">constraintGraphStat</a>();</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;PointsToConstPtr&quot;</span>] = <a class="code" href="classSVF_1_1CFLStat.html#a4e0b174c9387ffa3bca0eb1976e489fb">_NumOfConstantPtr</a>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">PTNumStatMap</a>[<span class="stringliteral">&quot;PointsToBlkPtr&quot;</span>] = <a class="code" href="classSVF_1_1CFLStat.html#af4a3e4fded0ea25bf29f91b08b335236">_NumOfBlackholePtr</a>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a178fcefed6ffffc78bbe9b23e0e1babe">PTAStat::printStat</a>(<span class="stringliteral">&quot;CFL Alias Analysis Stats&quot;</span>);</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;</div><div class="ttc" id="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">SVF::SparseBitVector::SparseBitVectorIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00534">SparseBitVector.h:534</a></div></div>
70
+ <div class="ttc" id="classSVF_1_1CFLBase_html_aa4c08dc36c2694d507618fa2f755cd37"><div class="ttname"><a href="classSVF_1_1CFLBase.html#aa4c08dc36c2694d507618fa2f755cd37">SVF::CFLBase::countSumEdges</a></div><div class="ttdeci">virtual void countSumEdges()=0</div></div>
70
71
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
71
72
  <div class="ttc" id="cJSON_8cpp_html_a009ef1d888ab6dbe77e6b42b0b39f1ae"><div class="ttname"><a href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a></div><div class="ttdeci">cJSON * p</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02559">cJSON.cpp:2559</a></div></div>
72
- <div class="ttc" id="classSVF_1_1CFLAlias_html"><div class="ttname"><a href="classSVF_1_1CFLAlias.html">SVF::CFLAlias</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00048">CFLAlias.h:48</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1SVFStat_html_a1b7f1e3381de87f75f06cddb9c6c1ec1"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a1b7f1e3381de87f75f06cddb9c6c1ec1">SVF::SVFStat::endClk</a></div><div class="ttdeci">virtual void endClk()</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00063">SVFStat.h:63</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a56368369bc37e37b13f19e5eb1890063"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a56368369bc37e37b13f19e5eb1890063">SVF::PointerAnalysis::containBlackHoleNode</a></div><div class="ttdeci">bool containBlackHoleNode(const PointsTo &amp;pts)</div><div class="ttdoc">Determine whether a points-to contains a black hole or constant node. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00292">PointerAnalysis.h:292</a></div></div>
75
75
  <div class="ttc" id="namespaceSVF_html_a212231734fa43d5c7414137deaac7df3"><div class="ttname"><a href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">SVF::NodeSet</a></div><div class="ttdeci">Set&lt; NodeID &gt; NodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00122">SVFBasicTypes.h:122</a></div></div>
76
+ <div class="ttc" id="classSVF_1_1GenericGraph_html_a8c8d16036008f87c7811586047599858"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">SVF::GenericGraph::getTotalNodeNum</a></div><div class="ttdeci">u32_t getTotalNodeNum() const</div><div class="ttdoc">Get total number of node/edge. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00418">GenericGraph.h:418</a></div></div>
76
77
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVF::SVFStmt::Load</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
77
- <div class="ttc" id="classSVF_1_1CFLStat_html_ab3e6256784b06ef36c0f93a88c7d8590"><div class="ttname"><a href="classSVF_1_1CFLStat.html#ab3e6256784b06ef36c0f93a88c7d8590">SVF::CFLStat::_NumOfNullPtr</a></div><div class="ttdeci">u32_t _NumOfNullPtr</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00061">CFLStat.h:61</a></div></div>
78
+ <div class="ttc" id="classSVF_1_1CFLStat_html_ab3e6256784b06ef36c0f93a88c7d8590"><div class="ttname"><a href="classSVF_1_1CFLStat.html#ab3e6256784b06ef36c0f93a88c7d8590">SVF::CFLStat::_NumOfNullPtr</a></div><div class="ttdeci">u32_t _NumOfNullPtr</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00063">CFLStat.h:63</a></div></div>
78
79
  <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#l00019">MTAResultValidator.h:19</a></div></div>
79
80
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html">SVF::ConstraintGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00044">ConsG.h:44</a></div></div>
81
+ <div class="ttc" id="classSVF_1_1CFLStat_html_a6fc506f947be6c9309cc8914c6a8c3e0"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a6fc506f947be6c9309cc8914c6a8c3e0">SVF::CFLStat::pta</a></div><div class="ttdeci">CFLBase * pta</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00053">CFLStat.h:53</a></div></div>
80
82
  <div class="ttc" id="classSVF_1_1CFLGraph_html"><div class="ttname"><a href="classSVF_1_1CFLGraph.html">SVF::CFLGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8h_source.html#l00086">CFLGraph.h:86</a></div></div>
81
- <div class="ttc" id="classSVF_1_1CFLStat_html_a9866844333afd0bfffd336778e97ae02"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a9866844333afd0bfffd336778e97ae02">SVF::CFLStat::_NumOfPWCCycles</a></div><div class="ttdeci">static u32_t _NumOfPWCCycles</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00058">CFLStat.h:58</a></div></div>
83
+ <div class="ttc" id="classSVF_1_1CFLStat_html_a9866844333afd0bfffd336778e97ae02"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a9866844333afd0bfffd336778e97ae02">SVF::CFLStat::_NumOfPWCCycles</a></div><div class="ttdeci">static u32_t _NumOfPWCCycles</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00060">CFLStat.h:60</a></div></div>
82
84
  <div class="ttc" id="CFLStat_8h_html"><div class="ttname"><a href="CFLStat_8h.html">CFLStat.h</a></div></div>
83
- <div class="ttc" id="classSVF_1_1CFLAlias_html_ade2773347ef08df69713e14cf1a24352"><div class="ttname"><a href="classSVF_1_1CFLAlias.html#ade2773347ef08df69713e14cf1a24352">SVF::CFLAlias::getCFLGraph</a></div><div class="ttdeci">CFLGraph * getCFLGraph()</div><div class="ttdoc">Get CFL graph. </div><div class="ttdef"><b>Definition:</b> <a href="CFLAlias_8h_source.html#l00146">CFLAlias.h:146</a></div></div>
84
- <div class="ttc" id="classSVF_1_1CFLStat_html_a1d85a7c4b2c22d3d8e0115212362d83b"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a1d85a7c4b2c22d3d8e0115212362d83b">SVF::CFLStat::performStat</a></div><div class="ttdeci">virtual void performStat()</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8cpp_source.html#l00220">CFLStat.cpp:220</a></div></div>
85
- <div class="ttc" id="classSVF_1_1CFLStat_html_abde1d6206fcde988c3959affc8afbbad"><div class="ttname"><a href="classSVF_1_1CFLStat.html#abde1d6206fcde988c3959affc8afbbad">SVF::CFLStat::CFLStat</a></div><div class="ttdeci">CFLStat(CFLAlias *p)</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8cpp_source.html#l00047">CFLStat.cpp:47</a></div></div>
85
+ <div class="ttc" id="classSVF_1_1CFLStat_html_a1d85a7c4b2c22d3d8e0115212362d83b"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a1d85a7c4b2c22d3d8e0115212362d83b">SVF::CFLStat::performStat</a></div><div class="ttdeci">virtual void performStat()</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8cpp_source.html#l00216">CFLStat.cpp:216</a></div></div>
86
86
  <div class="ttc" id="classSVF_1_1SVFStat_html_a11c34e8ba16769d218432d9504ba26a0"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a11c34e8ba16769d218432d9504ba26a0">SVF::SVFStat::PTNumStatMap</a></div><div class="ttdeci">NUMStatMap PTNumStatMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00074">SVFStat.h:74</a></div></div>
87
87
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a8cd7b6c6fd8b030b1421d95a086359f4"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVF::SVFStmt::SVFStmtSetTy</a></div><div class="ttdeci">GenericNode&lt; SVFVar, SVFStmt &gt;::GEdgeSetTy SVFStmtSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00177">SVFStatements.h:177</a></div></div>
88
88
  <div class="ttc" id="classSVF_1_1SparseBitVector_html_ad5337b5aeed50f8b7ffd56b14ee25c9f"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#ad5337b5aeed50f8b7ffd56b14ee25c9f">SVF::SparseBitVector::reset</a></div><div class="ttdeci">void reset(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00722">SparseBitVector.h:722</a></div></div>
@@ -95,48 +95,53 @@ $(function() {
95
95
  <div class="ttc" id="classSVF_1_1SVFStat_html_a730cc814fede3edb563aa9957c869e9e"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a730cc814fede3edb563aa9957c869e9e">SVF::SVFStat::startClk</a></div><div class="ttdeci">virtual void startClk()</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00058">SVFStat.h:58</a></div></div>
96
96
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
97
97
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a077caa1b10ab84d101d79fc7ea50db2d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVF::SVFUtil::writeWrnMsg</a></div><div class="ttdeci">void writeWrnMsg(std::string msg)</div><div class="ttdoc">Writes a message run through wrnMsg. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00067">SVFUtil.cpp:67</a></div></div>
98
- <div class="ttc" id="classSVF_1_1CFLStat_html_a6bcca58ff4481dee06b06eb17ed603ea"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a6bcca58ff4481dee06b06eb17ed603ea">SVF::CFLStat::statNullPtr</a></div><div class="ttdeci">void statNullPtr()</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8cpp_source.html#l00166">CFLStat.cpp:166</a></div></div>
98
+ <div class="ttc" id="classSVF_1_1CFLStat_html_a6bcca58ff4481dee06b06eb17ed603ea"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a6bcca58ff4481dee06b06eb17ed603ea">SVF::CFLStat::statNullPtr</a></div><div class="ttdeci">void statNullPtr()</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8cpp_source.html#l00162">CFLStat.cpp:162</a></div></div>
99
99
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a84468bc9355d31e8c3e18369036ddf5c"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a84468bc9355d31e8c3e18369036ddf5c">SVF::ConstraintGraph::isPWCNode</a></div><div class="ttdeci">bool isPWCNode(NodeID nodeId)</div><div class="ttdoc">Check/Set PWC (positive weight cycle) flag. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00348">ConsG.h:348</a></div></div>
100
- <div class="ttc" id="classSVF_1_1CFLStat_html_a404decd93db2bbcd36682cfdc3e5549c"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a404decd93db2bbcd36682cfdc3e5549c">SVF::CFLStat::_NumOfNodesInCycles</a></div><div class="ttdeci">static u32_t _NumOfNodesInCycles</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00059">CFLStat.h:59</a></div></div>
100
+ <div class="ttc" id="classSVF_1_1CFLStat_html_a404decd93db2bbcd36682cfdc3e5549c"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a404decd93db2bbcd36682cfdc3e5549c">SVF::CFLStat::_NumOfNodesInCycles</a></div><div class="ttdeci">static u32_t _NumOfNodesInCycles</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00061">CFLStat.h:61</a></div></div>
101
101
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00369">GenericGraph.h:369</a></div></div>
102
102
  <div class="ttc" id="classSVF_1_1GenericGraph_html_ac213302cf5c7cdf3b66f7b18649d0fbc"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVF::GenericGraph&lt; ConstraintNode, ConstraintEdge &gt;::iterator</a></div><div class="ttdeci">IDToNodeMapTy::iterator iterator</div><div class="ttdoc">Node Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00342">GenericGraph.h:342</a></div></div>
103
103
  <div class="ttc" id="classSVF_1_1SVFStat_html_a178fcefed6ffffc78bbe9b23e0e1babe"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a178fcefed6ffffc78bbe9b23e0e1babe">SVF::SVFStat::printStat</a></div><div class="ttdeci">virtual void printStat(std::string str=&quot;&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00066">SVFStat.cpp:66</a></div></div>
104
- <div class="ttc" id="classSVF_1_1CFLStat_html_a1038d77be761d3033237724330631d3e"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a1038d77be761d3033237724330631d3e">SVF::CFLStat::CollapseTime</a></div><div class="ttdeci">static const char * CollapseTime</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00054">CFLStat.h:54</a></div></div>
104
+ <div class="ttc" id="classSVF_1_1CFLStat_html_a1038d77be761d3033237724330631d3e"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a1038d77be761d3033237724330631d3e">SVF::CFLStat::CollapseTime</a></div><div class="ttdeci">static const char * CollapseTime</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00056">CFLStat.h:56</a></div></div>
105
105
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee289e298e421448caaa604b7eb34fcb"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">SVF::BVDataPTAImpl::getPts</a></div><div class="ttdeci">virtual const PointsTo &amp; getPts(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00099">PointerAnalysisImpl.h:99</a></div></div>
106
- <div class="ttc" id="classSVF_1_1CFLStat_html_a58ad0e3bdb93c985ffc7242dba074fea"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a58ad0e3bdb93c985ffc7242dba074fea">SVF::CFLStat::constraintGraphStat</a></div><div class="ttdeci">void constraintGraphStat()</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8cpp_source.html#l00112">CFLStat.cpp:112</a></div></div>
106
+ <div class="ttc" id="classSVF_1_1CFLStat_html_a58ad0e3bdb93c985ffc7242dba074fea"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a58ad0e3bdb93c985ffc7242dba074fea">SVF::CFLStat::constraintGraphStat</a></div><div class="ttdeci">void constraintGraphStat()</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8cpp_source.html#l00108">CFLStat.cpp:108</a></div></div>
107
107
  <div class="ttc" id="classSVF_1_1PointsTo_html_a879783ba6629e500af9aa7dfcda2563d"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">SVF::PointsTo::count</a></div><div class="ttdeci">u32_t count(void) const</div><div class="ttdoc">Returns number of elements. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00107">PointsTo.cpp:107</a></div></div>
108
108
  <div class="ttc" id="classSVF_1_1SVFVar_html_a927733580b47be5ffcfced44ba9fd6c3"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a927733580b47be5ffcfced44ba9fd6c3">SVF::SVFVar::getOutgoingEdges</a></div><div class="ttdeci">SVFStmt::SVFStmtSetTy &amp; getOutgoingEdges(SVFStmt::PEDGEK kind)</div><div class="ttdoc">Get outgoing SVFIR statements (edges) </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00147">SVFVariables.h:147</a></div></div>
109
109
  <div class="ttc" id="classSVF_1_1SVFIR_html_a5c3b194ebada47baaccf0e9f3ab1a139"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5c3b194ebada47baaccf0e9f3ab1a139">SVF::SVFIR::isValidTopLevelPtr</a></div><div class="ttdeci">bool isValidTopLevelPtr(const SVFVar *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00705">SVFIR.cpp:705</a></div></div>
110
- <div class="ttc" id="classSVF_1_1CFLStat_html_a3601b07709f1eef4c4685cc90a1648e2"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a3601b07709f1eef4c4685cc90a1648e2">SVF::CFLStat::_MaxNumOfNodesInSCC</a></div><div class="ttdeci">static u32_t _MaxNumOfNodesInSCC</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00060">CFLStat.h:60</a></div></div>
110
+ <div class="ttc" id="classSVF_1_1CFLStat_html_a3601b07709f1eef4c4685cc90a1648e2"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a3601b07709f1eef4c4685cc90a1648e2">SVF::CFLStat::_MaxNumOfNodesInSCC</a></div><div class="ttdeci">static u32_t _MaxNumOfNodesInSCC</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00062">CFLStat.h:62</a></div></div>
111
111
  <div class="ttc" id="classSVF_1_1PointsTo_html_ac4688413177b49b37dbbfd3ed188d59b"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">SVF::PointsTo::empty</a></div><div class="ttdeci">bool empty(void) const</div><div class="ttdoc">Returns true if set is empty. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00094">PointsTo.cpp:94</a></div></div>
112
112
  <div class="ttc" id="namespaceSVFUtil_html"><div class="ttname"><a href="namespaceSVFUtil.html">SVFUtil</a></div></div>
113
113
  <div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdoc">LLVM outputs. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00078">BasicTypes.h:78</a></div></div>
114
114
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a240219c2dc4f5cc5f85445e18c79b83b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">SVF::PointerAnalysis::getPAG</a></div><div class="ttdeci">SVFIR * getPAG() const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00201">PointerAnalysis.h:201</a></div></div>
115
- <div class="ttc" id="classSVF_1_1CFLStat_html_a4e0b174c9387ffa3bca0eb1976e489fb"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a4e0b174c9387ffa3bca0eb1976e489fb">SVF::CFLStat::_NumOfConstantPtr</a></div><div class="ttdeci">u32_t _NumOfConstantPtr</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00062">CFLStat.h:62</a></div></div>
116
- <div class="ttc" id="classSVF_1_1CFLStat_html_ab6a95a6c55e582958cae3327e482ef7f"><div class="ttname"><a href="classSVF_1_1CFLStat.html#ab6a95a6c55e582958cae3327e482ef7f">SVF::CFLStat::_NumOfCycles</a></div><div class="ttdeci">static u32_t _NumOfCycles</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00057">CFLStat.h:57</a></div></div>
115
+ <div class="ttc" id="classSVF_1_1CFLBase_html_aadadb80fdc1d2a3258463043bcde6e36"><div class="ttname"><a href="classSVF_1_1CFLBase.html#aadadb80fdc1d2a3258463043bcde6e36">SVF::CFLBase::timeOfSolving</a></div><div class="ttdeci">static double timeOfSolving</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00098">CFLBase.h:98</a></div></div>
116
+ <div class="ttc" id="classSVF_1_1CFLStat_html_a4e0b174c9387ffa3bca0eb1976e489fb"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a4e0b174c9387ffa3bca0eb1976e489fb">SVF::CFLStat::_NumOfConstantPtr</a></div><div class="ttdeci">u32_t _NumOfConstantPtr</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00064">CFLStat.h:64</a></div></div>
117
+ <div class="ttc" id="classSVF_1_1CFLStat_html_ab6a95a6c55e582958cae3327e482ef7f"><div class="ttname"><a href="classSVF_1_1CFLStat.html#ab6a95a6c55e582958cae3327e482ef7f">SVF::CFLStat::_NumOfCycles</a></div><div class="ttdeci">static u32_t _NumOfCycles</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00059">CFLStat.h:59</a></div></div>
117
118
  <div class="ttc" id="classSVF_1_1SparseBitVector_html_a1b5abe09fd0fcd337385653cb47343c1"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">SVF::SparseBitVector::end</a></div><div class="ttdeci">iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01118">SparseBitVector.h:1118</a></div></div>
118
- <div class="ttc" id="classSVF_1_1CFLStat_html_ae235e945a6856cfad961ba752b75d409"><div class="ttname"><a href="classSVF_1_1CFLStat.html#ae235e945a6856cfad961ba752b75d409">SVF::CFLStat::collectCycleInfo</a></div><div class="ttdeci">void collectCycleInfo(ConstraintGraph *consCG)</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8cpp_source.html#l00072">CFLStat.cpp:72</a></div></div>
119
+ <div class="ttc" id="classSVF_1_1CFLStat_html_ae235e945a6856cfad961ba752b75d409"><div class="ttname"><a href="classSVF_1_1CFLStat.html#ae235e945a6856cfad961ba752b75d409">SVF::CFLStat::collectCycleInfo</a></div><div class="ttdeci">void collectCycleInfo(ConstraintGraph *consCG)</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8cpp_source.html#l00068">CFLStat.cpp:68</a></div></div>
119
120
  <div class="ttc" id="classSVF_1_1SVFStat_html_a5383691a34426a1a997b5eed387f1831"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a5383691a34426a1a997b5eed387f1831">SVF::SVFStat::timeStatMap</a></div><div class="ttdeci">TIMEStatMap timeStatMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00075">SVFStat.h:75</a></div></div>
120
121
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a39b973543acdcdc5493832cc9d0f586f"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a39b973543acdcdc5493832cc9d0f586f">SVF::ConstraintGraph::sccRepNode</a></div><div class="ttdeci">NodeID sccRepNode(NodeID id) const</div><div class="ttdoc">SCC rep/sub nodes methods. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00233">ConsG.h:233</a></div></div>
121
122
  <div class="ttc" id="classSVF_1_1PTAStat_html"><div class="ttname"><a href="classSVF_1_1PTAStat.html">SVF::PTAStat</a></div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00048">PTAStat.h:48</a></div></div>
122
123
  <div class="ttc" id="classSVF_1_1SVFVar_html_afaa33caa8d2a306f6741d9d066243e40"><div class="ttname"><a href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">SVF::SVFVar::getValue</a></div><div class="ttdeci">const Value * getValue() const</div><div class="ttdoc">Get/has methods of the components. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00091">SVFVariables.h:91</a></div></div>
123
124
  <div class="ttc" id="classSVF_1_1SparseBitVector_html_abf76d8157c49ddba24bdc9dab3655772"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">SVF::SparseBitVector::begin</a></div><div class="ttdeci">iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01113">SparseBitVector.h:1113</a></div></div>
124
125
  <div class="ttc" id="classSVF_1_1SVFVar_html_a76964ef7d4842a469d7720881499d8a6"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6">SVF::SVFVar::getIncomingEdges</a></div><div class="ttdeci">SVFStmt::SVFStmtSetTy &amp; getIncomingEdges(SVFStmt::PEDGEK kind)</div><div class="ttdoc">Get incoming SVFIR statements (edges) </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00142">SVFVariables.h:142</a></div></div>
126
+ <div class="ttc" id="classSVF_1_1CFLGraph_html_afcf910a94a3b081067f5a55599475a16"><div class="ttname"><a href="classSVF_1_1CFLGraph.html#afcf910a94a3b081067f5a55599475a16">SVF::CFLGraph::getCFLEdges</a></div><div class="ttdeci">const CFLEdgeSet &amp; getCFLEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8h_source.html#l00112">CFLGraph.h:112</a></div></div>
127
+ <div class="ttc" id="classSVF_1_1CFLBase_html"><div class="ttname"><a href="classSVF_1_1CFLBase.html">SVF::CFLBase</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00048">CFLBase.h:48</a></div></div>
125
128
  <div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00460">SparseBitVector.h:460</a></div></div>
129
+ <div class="ttc" id="classSVF_1_1CFLStat_html_ada5680cabe65962be3a574a8a740f59c"><div class="ttname"><a href="classSVF_1_1CFLStat.html#ada5680cabe65962be3a574a8a740f59c">SVF::CFLStat::CFLStat</a></div><div class="ttdeci">CFLStat(CFLBase *p)</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8cpp_source.html#l00047">CFLStat.cpp:47</a></div></div>
126
130
  <div class="ttc" id="classSVF_1_1PTAStat_html_ad6de9d3f25c20705768000c987af0eb6"><div class="ttname"><a href="classSVF_1_1PTAStat.html#ad6de9d3f25c20705768000c987af0eb6">SVF::PTAStat::performStat</a></div><div class="ttdeci">void performStat() override</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00043">PTAStat.cpp:43</a></div></div>
127
131
  <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="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
128
132
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVF::SVFStmt::Store</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
129
133
  <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#l00169">GenericGraph.h:169</a></div></div>
130
- <div class="ttc" id="classSVF_1_1CFLStat_html_a23c6ba004928f8ac6c9b12bd7ad49881"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a23c6ba004928f8ac6c9b12bd7ad49881">SVF::CFLStat::pta</a></div><div class="ttdeci">CFLAlias * pta</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00051">CFLStat.h:51</a></div></div>
131
134
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a6e8c46641da751fe3369c9d5407ce415"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a6e8c46641da751fe3369c9d5407ce415">SVF::ConstraintGraph::getBaseObjVar</a></div><div class="ttdeci">NodeID getBaseObjVar(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00318">ConsG.h:318</a></div></div>
132
135
  <div class="ttc" id="classSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00745">SparseBitVector.h:745</a></div></div>
133
- <div class="ttc" id="classSVF_1_1CFLStat_html_a915d2f3c684646f813687445c2d22622"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a915d2f3c684646f813687445c2d22622">SVF::CFLStat::collectCFLInfo</a></div><div class="ttdeci">void collectCFLInfo(CFLGraph *CFLGraph)</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8cpp_source.html#l00058">CFLStat.cpp:58</a></div></div>
136
+ <div class="ttc" id="classSVF_1_1CFLBase_html_aa17cbd1303b97e9e26ed77129d10b99c"><div class="ttname"><a href="classSVF_1_1CFLBase.html#aa17cbd1303b97e9e26ed77129d10b99c">SVF::CFLBase::getCFLGraph</a></div><div class="ttdeci">CFLGraph * getCFLGraph()</div><div class="ttdoc">Get CFL graph. </div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00072">CFLBase.h:72</a></div></div>
137
+ <div class="ttc" id="classSVF_1_1CFLStat_html_a915d2f3c684646f813687445c2d22622"><div class="ttname"><a href="classSVF_1_1CFLStat.html#a915d2f3c684646f813687445c2d22622">SVF::CFLStat::collectCFLInfo</a></div><div class="ttdeci">void collectCFLInfo(CFLGraph *CFLGraph)</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8cpp_source.html#l00055">CFLStat.cpp:55</a></div></div>
134
138
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0f71e4cd0948b294c7d33a690bde7dbe"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">SVF::PointerAnalysis::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00354">PointerAnalysis.h:354</a></div></div>
135
139
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00391">GenericGraph.h:391</a></div></div>
136
- <div class="ttc" id="classSVF_1_1CFLStat_html_af4a3e4fded0ea25bf29f91b08b335236"><div class="ttname"><a href="classSVF_1_1CFLStat.html#af4a3e4fded0ea25bf29f91b08b335236">SVF::CFLStat::_NumOfBlackholePtr</a></div><div class="ttdeci">u32_t _NumOfBlackholePtr</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00063">CFLStat.h:63</a></div></div>
140
+ <div class="ttc" id="classSVF_1_1CFLStat_html_af4a3e4fded0ea25bf29f91b08b335236"><div class="ttname"><a href="classSVF_1_1CFLStat.html#af4a3e4fded0ea25bf29f91b08b335236">SVF::CFLStat::_NumOfBlackholePtr</a></div><div class="ttdeci">u32_t _NumOfBlackholePtr</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00065">CFLStat.h:65</a></div></div>
137
141
  <div class="ttc" id="classSVF_1_1PointsTo_html"><div class="ttname"><a href="classSVF_1_1PointsTo.html">SVF::PointsTo</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00028">PointsTo.h:28</a></div></div>
138
142
  <div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
139
- <div class="ttc" id="classSVF_1_1CFLStat_html_aab012b94d23df8f5c78e74934aebf024"><div class="ttname"><a href="classSVF_1_1CFLStat.html#aab012b94d23df8f5c78e74934aebf024">SVF::CFLStat::_MaxPtsSize</a></div><div class="ttdeci">static u32_t _MaxPtsSize</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00056">CFLStat.h:56</a></div></div>
143
+ <div class="ttc" id="classSVF_1_1CFLStat_html_aab012b94d23df8f5c78e74934aebf024"><div class="ttname"><a href="classSVF_1_1CFLStat.html#aab012b94d23df8f5c78e74934aebf024">SVF::CFLStat::_MaxPtsSize</a></div><div class="ttdeci">static u32_t _MaxPtsSize</div><div class="ttdef"><b>Definition:</b> <a href="CFLStat_8h_source.html#l00058">CFLStat.h:58</a></div></div>
144
+ <div class="ttc" id="classSVF_1_1CFLBase_html_aad77c4e9fb9a3fdceb222fbdec192c51"><div class="ttname"><a href="classSVF_1_1CFLBase.html#aad77c4e9fb9a3fdceb222fbdec192c51">SVF::CFLBase::numOfSumEdges</a></div><div class="ttdeci">static double numOfSumEdges</div><div class="ttdef"><b>Definition:</b> <a href="CFLBase_8h_source.html#l00099">CFLBase.h:99</a></div></div>
140
145
  </div><!-- fragment --></div><!-- contents -->
141
146
  <!-- start footer part -->
142
147
  <hr class="footer"/><address class="footer"><small>
@@ -71,6 +71,7 @@ $(function() {
71
71
  <div class="contents">
72
72
  <div class="textblock"><code>#include &quot;<a class="el" href="PTAStat_8h_source.html">Util/PTAStat.h</a>&quot;</code><br />
73
73
  <code>#include &quot;<a class="el" href="CFLAlias_8h_source.html">CFL/CFLAlias.h</a>&quot;</code><br />
74
+ <code>#include &quot;<a class="el" href="CFLVF_8h_source.html">CFL/CFLVF.h</a>&quot;</code><br />
74
75
  </div>
75
76
  <p><a href="CFLStat_8h_source.html">Go to the source code of this file.</a></p>
76
77
  <table class="memberdecls">