svf-tools 1.0.562 → 1.0.563

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 (112) hide show
  1. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +2 -2
  5. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +2 -2
  6. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -1
  8. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +10 -10
  9. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +2 -2
  10. package/SVF-doxygen/html/html/MHP_8cpp_source.html +2 -2
  11. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
  12. package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
  15. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +7 -4
  16. package/SVF-doxygen/html/html/PTAStat_8h_source.html +3 -3
  17. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +1 -1
  19. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +2 -1
  20. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +37 -37
  21. package/SVF-doxygen/html/html/SVFModule_8cpp.html +1 -0
  22. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +6 -2
  23. package/SVF-doxygen/html/html/SVFModule_8h_source.html +1 -1
  24. package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +6 -3
  25. package/SVF-doxygen/html/html/SVFStat_8h_source.html +7 -4
  26. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
  28. package/SVF-doxygen/html/html/cfl_8cpp.html +1 -1
  29. package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
  30. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +4 -4
  31. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +4 -4
  32. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat-members.html +15 -12
  33. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +9 -2
  34. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +2 -2
  35. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +1 -1
  36. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
  37. package/SVF-doxygen/html/html/classSVF_1_1DDAStat-members.html +14 -11
  38. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +9 -2
  39. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +4 -4
  40. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
  41. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +13 -13
  42. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat-members.html +15 -12
  43. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +8 -1
  44. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat-members.html +14 -11
  45. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +7 -0
  46. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +36 -33
  47. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +5 -5
  48. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +3 -3
  49. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
  50. package/SVF-doxygen/html/html/classSVF_1_1MTAStat-members.html +13 -10
  51. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +11 -4
  52. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +2 -2
  53. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat-members.html +19 -16
  54. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +8 -1
  55. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +3 -3
  56. package/SVF-doxygen/html/html/classSVF_1_1PTAStat-members.html +14 -11
  57. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +23 -12
  58. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat-members.html +26 -23
  59. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +19 -12
  60. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +123 -120
  61. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +5 -2
  62. package/SVF-doxygen/html/html/classSVF_1_1SVFStat-members.html +6 -3
  63. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +89 -7
  64. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +6 -6
  65. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat-members.html +18 -15
  66. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +8 -1
  67. package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
  68. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  69. package/SVF-doxygen/html/html/functions_func_s.html +1 -1
  70. package/SVF-doxygen/html/html/functions_i.html +3 -3
  71. package/SVF-doxygen/html/html/functions_l.html +6 -6
  72. package/SVF-doxygen/html/html/functions_o.html +15 -15
  73. package/SVF-doxygen/html/html/functions_p.html +1 -1
  74. package/SVF-doxygen/html/html/functions_s.html +9 -11
  75. package/SVF-doxygen/html/html/functions_t.html +17 -10
  76. package/SVF-doxygen/html/html/functions_v.html +6 -6
  77. package/SVF-doxygen/html/html/functions_vars_t.html +9 -0
  78. package/SVF-doxygen/html/html/functions_w.html +11 -11
  79. package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
  80. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  81. package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
  82. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  83. package/SVF-doxygen/html/html/search/all_10.js +3 -3
  84. package/SVF-doxygen/html/html/search/all_11.js +2 -2
  85. package/SVF-doxygen/html/html/search/all_12.js +6 -6
  86. package/SVF-doxygen/html/html/search/all_13.js +9 -6
  87. package/SVF-doxygen/html/html/search/all_14.js +1 -1
  88. package/SVF-doxygen/html/html/search/all_15.js +2 -2
  89. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  90. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  91. package/SVF-doxygen/html/html/search/all_c.js +3 -3
  92. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  93. package/SVF-doxygen/html/html/search/all_f.js +3 -3
  94. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  95. package/SVF-doxygen/html/html/search/variables_13.js +5 -2
  96. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  97. package/SVF-doxygen/html/html/search/variables_c.js +1 -1
  98. package/SVF-doxygen/html/html/search/variables_e.js +2 -2
  99. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  100. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  101. package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
  102. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  103. package/include/DDA/DDAVFSolver.h +4 -4
  104. package/include/Util/SVFStat.h +4 -0
  105. package/lib/MTA/LockAnalysis.cpp +4 -4
  106. package/lib/MTA/MHP.cpp +2 -2
  107. package/lib/SVF-FE/LLVMModule.cpp +5 -0
  108. package/lib/SVF-FE/SVFIRBuilder.cpp +5 -0
  109. package/lib/Util/PTAStat.cpp +5 -0
  110. package/lib/Util/SVFModule.cpp +4 -0
  111. package/lib/Util/SVFStat.cpp +5 -0
  112. package/package.json +1 -1
@@ -69,6 +69,7 @@ $(function() {
69
69
  <div class="textblock"><code>#include &quot;<a class="el" href="SVFModule_8h_source.html">Util/SVFModule.h</a>&quot;</code><br />
70
70
  <code>#include &quot;<a class="el" href="SymbolTableBuilder_8h_source.html">SVF-FE/SymbolTableBuilder.h</a>&quot;</code><br />
71
71
  <code>#include &quot;<a class="el" href="SVFUtil_8h_source.html">Util/SVFUtil.h</a>&quot;</code><br />
72
+ <code>#include &quot;<a class="el" href="SVFStat_8h_source.html">Util/SVFStat.h</a>&quot;</code><br />
72
73
  </div>
73
74
  <p><a href="SVFModule_8cpp_source.html">Go to the source code of this file.</a></p>
74
75
  </div><!-- contents -->
@@ -66,18 +66,22 @@ $(function() {
66
66
  <div class="title">SVFModule.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="SVFModule_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">//===- SVFModule.cpp -- Helper functions for pointer analysis--------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFModule_8h.html">Util/SVFModule.h</a>&quot;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SymbolTableBuilder_8h.html">SVF-FE/SymbolTableBuilder.h</a>&quot;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</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"><a class="line" href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98"> 30</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">SVFModule::buildSymbolTableInfo</a>()</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="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">pagReadFromTXT</a>())</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVFUtil::pasMsg</a>(<span class="stringliteral">&quot;Building Symbol table ...\n&quot;</span>));</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html">SymbolTableInfo</a> *symInfo = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html">SymbolTableBuilder</a> builder(symInfo);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; builder.<a class="code" href="classSVF_1_1SymbolTableBuilder.html#aef0bb1e88d0b69313c673318f7b7cb5f">buildMemModel</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableBuilder_html"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html">SVF::SymbolTableBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8h_source.html#l00042">SymbolTableBuilder.h:42</a></div></div>
69
+ <a href="SVFModule_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">//===- SVFModule.cpp -- Helper functions for pointer analysis--------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFModule_8h.html">Util/SVFModule.h</a>&quot;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SymbolTableBuilder_8h.html">SVF-FE/SymbolTableBuilder.h</a>&quot;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFStat_8h.html">Util/SVFStat.h</a>&quot;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98"> 31</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">SVFModule::buildSymbolTableInfo</a>()</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">double</span> startTime = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVFStat::getClk</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">pagReadFromTXT</a>())</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVFUtil::pasMsg</a>(<span class="stringliteral">&quot;Building Symbol table ...\n&quot;</span>));</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html">SymbolTableInfo</a> *symInfo = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="classSVF_1_1SymbolTableBuilder.html">SymbolTableBuilder</a> builder(symInfo);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; builder.<a class="code" href="classSVF_1_1SymbolTableBuilder.html#aef0bb1e88d0b69313c673318f7b7cb5f">buildMemModel</a>(<span class="keyword">this</span>);</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="keywordtype">double</span> endTime = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVFStat::getClk</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#ae89293bc063bdc74a988e9c37c70321e">SVFStat::timeOfBuildingSymbolTable</a> = (endTime - startTime)/<a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div><div class="ttc" id="classSVF_1_1SymbolTableBuilder_html"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html">SVF::SymbolTableBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8h_source.html#l00042">SymbolTableBuilder.h:42</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_aef0bb1e88d0b69313c673318f7b7cb5f"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#aef0bb1e88d0b69313c673318f7b7cb5f">SVF::SymbolTableBuilder::buildMemModel</a></div><div class="ttdeci">void buildMemModel(SVFModule *svfModule)</div><div class="ttdoc">Start building memory model. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00049">SymbolTableBuilder.cpp:49</a></div></div>
71
71
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00099">SVFUtil.cpp:99</a></div></div>
72
72
  <div class="ttc" id="SymbolTableBuilder_8h_html"><div class="ttname"><a href="SymbolTableBuilder_8h.html">SymbolTableBuilder.h</a></div></div>
73
73
  <div class="ttc" id="SVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
74
+ <div class="ttc" id="SVFStat_8h_html"><div class="ttname"><a href="SVFStat_8h.html">SVFStat.h</a></div></div>
74
75
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
76
+ <div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00046">SVFStat.cpp:46</a></div></div>
75
77
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00106">SymbolTableInfo.cpp:106</a></div></div>
78
+ <div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00182">SVFBasicTypes.h:182</a></div></div>
79
+ <div class="ttc" id="classSVF_1_1SVFStat_html_ae89293bc063bdc74a988e9c37c70321e"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ae89293bc063bdc74a988e9c37c70321e">SVF::SVFStat::timeOfBuildingSymbolTable</a></div><div class="ttdeci">static double timeOfBuildingSymbolTable</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00090">SVFStat.h:90</a></div></div>
76
80
  <div class="ttc" id="SVFBasicTypes_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00160">SVFBasicTypes.h:160</a></div></div>
77
81
  <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>
78
82
  <div class="ttc" id="SVFModule_8h_html"><div class="ttname"><a href="SVFModule_8h.html">SVFModule.h</a></div></div>
79
83
  <div class="ttc" id="classSVF_1_1SVFModule_html_a1357c876eccedd58b3abe68875b3a570"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVF::SVFModule::pagReadFromTXT</a></div><div class="ttdeci">static bool pagReadFromTXT()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00103">SVFModule.h:103</a></div></div>
80
- <div class="ttc" id="classSVF_1_1SVFModule_html_aa03ab5272652290f30870c6e2d053d98"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">SVF::SVFModule::buildSymbolTableInfo</a></div><div class="ttdeci">void buildSymbolTableInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8cpp_source.html#l00030">SVFModule.cpp:30</a></div></div>
84
+ <div class="ttc" id="classSVF_1_1SVFModule_html_aa03ab5272652290f30870c6e2d053d98"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">SVF::SVFModule::buildSymbolTableInfo</a></div><div class="ttdeci">void buildSymbolTableInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8cpp_source.html#l00031">SVFModule.cpp:31</a></div></div>
81
85
  <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00155">SVFBasicTypes.h:155</a></div></div>
82
86
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html">SVF::SymbolTableInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00047">SymbolTableInfo.h:47</a></div></div>
83
87
  </div><!-- fragment --></div><!-- contents -->
@@ -153,7 +153,7 @@ $(function() {
153
153
  <div class="ttc" id="classSVF_1_1SVFModule_html_af969d7739f27c8242985656bafbabaeb"><div class="ttname"><a href="classSVF_1_1SVFModule.html#af969d7739f27c8242985656bafbabaeb">SVF::SVFModule::getSVFFunction</a></div><div class="ttdeci">const SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00130">SVFModule.h:130</a></div></div>
154
154
  <div class="ttc" id="classSVF_1_1SVFModule_html_a8a34164634d6ad9a7b76175907c8c44b"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a8a34164634d6ad9a7b76175907c8c44b">SVF::SVFModule::global_end</a></div><div class="ttdeci">global_iterator global_end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00181">SVFModule.h:181</a></div></div>
155
155
  <div class="ttc" id="classSVF_1_1SVFModule_html_aef2209a94aade9e7164ed6ff3b273147"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aef2209a94aade9e7164ed6ff3b273147">SVF::SVFModule::addBlackholeSyms</a></div><div class="ttdeci">void addBlackholeSyms(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00325">SVFModule.h:325</a></div></div>
156
- <div class="ttc" id="classSVF_1_1SVFModule_html_aa03ab5272652290f30870c6e2d053d98"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">SVF::SVFModule::buildSymbolTableInfo</a></div><div class="ttdeci">void buildSymbolTableInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8cpp_source.html#l00030">SVFModule.cpp:30</a></div></div>
156
+ <div class="ttc" id="classSVF_1_1SVFModule_html_aa03ab5272652290f30870c6e2d053d98"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">SVF::SVFModule::buildSymbolTableInfo</a></div><div class="ttdeci">void buildSymbolTableInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8cpp_source.html#l00031">SVFModule.cpp:31</a></div></div>
157
157
  <div class="ttc" id="classSVF_1_1SVFModule_html_a9aabe6d24bea26f3b5c7cab5a0fc3053"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a9aabe6d24bea26f3b5c7cab5a0fc3053">SVF::SVFModule::addGlobalSet</a></div><div class="ttdeci">void addGlobalSet(GlobalVariable *glob)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00120">SVFModule.h:120</a></div></div>
158
158
  <div class="ttc" id="classSVF_1_1SVFModule_html_a65ca3949501f11efa1eb94e08a40a2f9"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a65ca3949501f11efa1eb94e08a40a2f9">SVF::SVFModule::AliasSet</a></div><div class="ttdeci">AliasSetType AliasSet</div><div class="ttdoc">The Aliases in the module. </div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00066">SVFModule.h:66</a></div></div>
159
159
  <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>
@@ -66,10 +66,13 @@ $(function() {
66
66
  <div class="title">SVFStat.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="SVFStat_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">//===- SVFStat.cpp -- Base class for statistics---------------------------------//</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"> * SVFStat.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: Sep 1, 2022</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Xiao Cheng</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="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFStat_8h.html">Util/SVFStat.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#ad22433722f7c71df19a891a5b5039d26"> 35</a></span>&#160;<a class="code" href="classSVF_1_1SVFStat.html#ad22433722f7c71df19a891a5b5039d26">SVFStat::SVFStat</a>() : startTime(0), endTime(0)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; assert((<a class="code" href="classSVF_1_1Options.html#a6a62b34de8ec23899a8024e0450c43df">Options::ClockType</a> == ClockType::Wall || <a class="code" href="classSVF_1_1Options.html#a6a62b34de8ec23899a8024e0450c43df">Options::ClockType</a> == ClockType::CPU)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; &amp;&amp; <span class="stringliteral">&quot;PTAStat: unknown clock type!&quot;</span>);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;}</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d"> 41</a></span>&#160;<span class="keywordtype">double</span> <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVFStat::getClk</a>(<span class="keywordtype">bool</span> mark)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a5cfcf1ddc44ff175c4766f88bf204c03">Options::MarkedClocksOnly</a> &amp;&amp; !mark) <span class="keywordflow">return</span> 0.0;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a6a62b34de8ec23899a8024e0450c43df">Options::ClockType</a> == ClockType::Wall)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">struct </span>timespec time;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; clock_gettime(CLOCK_MONOTONIC, &amp;time);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> (<span class="keywordtype">double</span>)(time.tv_nsec + time.tv_sec * 1000000000) / 1000000.0;</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a6a62b34de8ec23899a8024e0450c43df">Options::ClockType</a> == ClockType::CPU)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> <a class="code" href="SVFBasicTypes_8h.html#af091e361d7961cb895ff2101eceed953">CLOCK_IN_MS</a>();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PTAStat::getClk: unknown clock type&quot;</span>);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; abort();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div><div class="ttc" id="SVFStat_8h_html"><div class="ttname"><a href="SVFStat_8h.html">SVFStat.h</a></div></div>
70
- <div class="ttc" id="classSVF_1_1SVFStat_html_ad22433722f7c71df19a891a5b5039d26"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ad22433722f7c71df19a891a5b5039d26">SVF::SVFStat::SVFStat</a></div><div class="ttdeci">SVFStat()</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00035">SVFStat.cpp:35</a></div></div>
69
+ <a href="SVFStat_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">//===- SVFStat.cpp -- Base class for statistics---------------------------------//</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"> * SVFStat.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: Sep 1, 2022</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Xiao Cheng</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="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFStat_8h.html">Util/SVFStat.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keywordtype">double</span> <a class="code" href="classSVF_1_1SVFStat.html#aa4950ec26b66a085ad38ac154b789db5">SVFStat::timeOfBuildingLLVMModule</a> = 0;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keywordtype">double</span> <a class="code" href="classSVF_1_1SVFStat.html#aea75388c973674686d1f2b7498b4095c">SVFStat::timeOfBuildingSVFIR</a> = 0;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keywordtype">double</span> <a class="code" href="classSVF_1_1SVFStat.html#ae89293bc063bdc74a988e9c37c70321e">SVFStat::timeOfBuildingSymbolTable</a> = 0;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#ad22433722f7c71df19a891a5b5039d26"> 40</a></span>&#160;<a class="code" href="classSVF_1_1SVFStat.html#ad22433722f7c71df19a891a5b5039d26">SVFStat::SVFStat</a>() : startTime(0), endTime(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; assert((<a class="code" href="classSVF_1_1Options.html#a6a62b34de8ec23899a8024e0450c43df">Options::ClockType</a> == ClockType::Wall || <a class="code" href="classSVF_1_1Options.html#a6a62b34de8ec23899a8024e0450c43df">Options::ClockType</a> == ClockType::CPU)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; &amp;&amp; <span class="stringliteral">&quot;PTAStat: unknown clock type!&quot;</span>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d"> 46</a></span>&#160;<span class="keywordtype">double</span> <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVFStat::getClk</a>(<span class="keywordtype">bool</span> mark)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a5cfcf1ddc44ff175c4766f88bf204c03">Options::MarkedClocksOnly</a> &amp;&amp; !mark) <span class="keywordflow">return</span> 0.0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a6a62b34de8ec23899a8024e0450c43df">Options::ClockType</a> == ClockType::Wall)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">struct </span>timespec time;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; clock_gettime(CLOCK_MONOTONIC, &amp;time);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> (<span class="keywordtype">double</span>)(time.tv_nsec + time.tv_sec * 1000000000) / 1000000.0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a6a62b34de8ec23899a8024e0450c43df">Options::ClockType</a> == ClockType::CPU)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span> <a class="code" href="SVFBasicTypes_8h.html#af091e361d7961cb895ff2101eceed953">CLOCK_IN_MS</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;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PTAStat::getClk: unknown clock type&quot;</span>);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; abort();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</div><div class="ttc" id="SVFStat_8h_html"><div class="ttname"><a href="SVFStat_8h.html">SVFStat.h</a></div></div>
70
+ <div class="ttc" id="classSVF_1_1SVFStat_html_aa4950ec26b66a085ad38ac154b789db5"><div class="ttname"><a href="classSVF_1_1SVFStat.html#aa4950ec26b66a085ad38ac154b789db5">SVF::SVFStat::timeOfBuildingLLVMModule</a></div><div class="ttdeci">static double timeOfBuildingLLVMModule</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00089">SVFStat.h:89</a></div></div>
71
+ <div class="ttc" id="classSVF_1_1SVFStat_html_aea75388c973674686d1f2b7498b4095c"><div class="ttname"><a href="classSVF_1_1SVFStat.html#aea75388c973674686d1f2b7498b4095c">SVF::SVFStat::timeOfBuildingSVFIR</a></div><div class="ttdeci">static double timeOfBuildingSVFIR</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00091">SVFStat.h:91</a></div></div>
72
+ <div class="ttc" id="classSVF_1_1SVFStat_html_ad22433722f7c71df19a891a5b5039d26"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ad22433722f7c71df19a891a5b5039d26">SVF::SVFStat::SVFStat</a></div><div class="ttdeci">SVFStat()</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00040">SVFStat.cpp:40</a></div></div>
71
73
  <div class="ttc" id="SVFBasicTypes_8h_html_af091e361d7961cb895ff2101eceed953"><div class="ttname"><a href="SVFBasicTypes_8h.html#af091e361d7961cb895ff2101eceed953">CLOCK_IN_MS</a></div><div class="ttdeci">#define CLOCK_IN_MS()</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00183">SVFBasicTypes.h:183</a></div></div>
72
- <div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00041">SVFStat.cpp:41</a></div></div>
74
+ <div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00046">SVFStat.cpp:46</a></div></div>
75
+ <div class="ttc" id="classSVF_1_1SVFStat_html_ae89293bc063bdc74a988e9c37c70321e"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ae89293bc063bdc74a988e9c37c70321e">SVF::SVFStat::timeOfBuildingSymbolTable</a></div><div class="ttdeci">static double timeOfBuildingSymbolTable</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00090">SVFStat.h:90</a></div></div>
73
76
  <div class="ttc" id="Options_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
74
77
  <div class="ttc" id="classSVF_1_1Options_html_a6a62b34de8ec23899a8024e0450c43df"><div class="ttname"><a href="classSVF_1_1Options.html#a6a62b34de8ec23899a8024e0450c43df">SVF::Options::ClockType</a></div><div class="ttdeci">static const llvm::cl::opt&lt; enum PTAStat::ClockType &gt; ClockType</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00023">Options.h:23</a></div></div>
75
78
  <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>
@@ -66,7 +66,7 @@ $(function() {
66
66
  <div class="title">SVFStat.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="SVFStat_8h.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">//===- SVFStat.h -- Base class for statistics---------------------------------//</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"> * SVFStat.h</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: Sep 1, 2022</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Xiao Cheng</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">#ifndef SVF_SVFSTAT_H</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define SVF_SVFSTAT_H</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</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;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html"> 40</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1SVFStat.html">SVFStat</a></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">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#ab810863d70cb2f5b4e312d07eae51227"> 44</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;const char *, u32_t&gt;</a> <a class="code" href="classSVF_1_1SVFStat.html#ab810863d70cb2f5b4e312d07eae51227">NUMStatMap</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#aeded7780a3f826b3efab971807e2dd98"> 46</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;const char *, double&gt;</a> <a class="code" href="classSVF_1_1SVFStat.html#aeded7780a3f826b3efab971807e2dd98">TIMEStatMap</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#a4f47da512cfa8f94fddaddc65334b454"> 48</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1SVFStat.html#a4f47da512cfa8f94fddaddc65334b454">ClockType</a></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#a4f47da512cfa8f94fddaddc65334b454a4daec28631d54e09b587e78707ab54fc"> 50</a></span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a4f47da512cfa8f94fddaddc65334b454a4daec28631d54e09b587e78707ab54fc">Wall</a>,</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#a4f47da512cfa8f94fddaddc65334b454ad58693e596aa4088fa4a05065f9c0ffa"> 51</a></span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a4f47da512cfa8f94fddaddc65334b454ad58693e596aa4088fa4a05065f9c0ffa">CPU</a>,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; };</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#ad22433722f7c71df19a891a5b5039d26">SVFStat</a>();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#a135ac9973ebfef4680d343320453ff52"> 56</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1SVFStat.html#a135ac9973ebfef4680d343320453ff52">~SVFStat</a>() {}</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#a730cc814fede3edb563aa9957c869e9e"> 58</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStat.html#a730cc814fede3edb563aa9957c869e9e">startClk</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_1SVFStat.html#abd7a79d1fe50110a0c1d448027492669">startTime</a> = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>(<span class="keyword">true</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"><a class="line" href="classSVF_1_1SVFStat.html#a1b7f1e3381de87f75f06cddb9c6c1ec1"> 63</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStat.html#a1b7f1e3381de87f75f06cddb9c6c1ec1">endClk</a>()</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a8b01f1564408b51f28c107454bf9068d">endTime</a> = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>(<span class="keyword">true</span>);</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="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>(<span class="keywordtype">bool</span> mark = <span class="keyword">false</span>);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#a07b6f8cb424b84b468c4518140fa3a41"> 73</a></span>&#160; NUMStatMap <a class="code" href="classSVF_1_1SVFStat.html#a07b6f8cb424b84b468c4518140fa3a41">generalNumMap</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#a5383691a34426a1a997b5eed387f1831"> 74</a></span>&#160; TIMEStatMap <a class="code" href="classSVF_1_1SVFStat.html#a5383691a34426a1a997b5eed387f1831">timeStatMap</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#abd7a79d1fe50110a0c1d448027492669"> 76</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1SVFStat.html#abd7a79d1fe50110a0c1d448027492669">startTime</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#a8b01f1564408b51f28c107454bf9068d"> 77</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1SVFStat.html#a8b01f1564408b51f28c107454bf9068d">endTime</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStat.html#a6113f8d009c42519f3a43913a0c02b95">performStat</a>() = 0;</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="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStat.html#a77c3cfb0c2b85a343ad0fac3682557c3">printStat</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str = <span class="stringliteral">&quot;&quot;</span>) = 0;</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"><a class="line" href="classSVF_1_1SVFStat.html#ab03780f736bed7861c9be14637e37ba3"> 83</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStat.html#ab03780f736bed7861c9be14637e37ba3">performStatPerQuery</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>) {}</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#a2dd8ce8bb1970344533babb9fc8ddd02"> 85</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStat.html#a2dd8ce8bb1970344533babb9fc8ddd02">printStatPerQuery</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;) {}</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"><a class="line" href="classSVF_1_1SVFStat.html#a21e6767fbe2c3cdea4aac30199dfd2f0"> 87</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStat.html#a21e6767fbe2c3cdea4aac30199dfd2f0">callgraphStat</a>() {}</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="keyword">private</span>:</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"><a class="line" href="classSVF_1_1SVFStat.html#a3333e45303dcc9c3da00858628cdbbff"> 91</a></span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFStat.html#a3333e45303dcc9c3da00858628cdbbff">moduleName</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;}; <span class="comment">// End class SVFStat</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor">#endif //SVF_SVFSTAT_H</span></div><div class="ttc" id="classSVF_1_1SVFStat_html_a2dd8ce8bb1970344533babb9fc8ddd02"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a2dd8ce8bb1970344533babb9fc8ddd02">SVF::SVFStat::printStatPerQuery</a></div><div class="ttdeci">virtual void printStatPerQuery(NodeID, const PointsTo &amp;)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00085">SVFStat.h:85</a></div></div>
69
+ <a href="SVFStat_8h.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">//===- SVFStat.h -- Base class for statistics---------------------------------//</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"> * SVFStat.h</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: Sep 1, 2022</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Xiao Cheng</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">#ifndef SVF_SVFSTAT_H</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define SVF_SVFSTAT_H</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</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;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html"> 40</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1SVFStat.html">SVFStat</a></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">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#ab810863d70cb2f5b4e312d07eae51227"> 44</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;const char *, u32_t&gt;</a> <a class="code" href="classSVF_1_1SVFStat.html#ab810863d70cb2f5b4e312d07eae51227">NUMStatMap</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#aeded7780a3f826b3efab971807e2dd98"> 46</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;const char *, double&gt;</a> <a class="code" href="classSVF_1_1SVFStat.html#aeded7780a3f826b3efab971807e2dd98">TIMEStatMap</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#a4f47da512cfa8f94fddaddc65334b454"> 48</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1SVFStat.html#a4f47da512cfa8f94fddaddc65334b454">ClockType</a></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#a4f47da512cfa8f94fddaddc65334b454a4daec28631d54e09b587e78707ab54fc"> 50</a></span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a4f47da512cfa8f94fddaddc65334b454a4daec28631d54e09b587e78707ab54fc">Wall</a>,</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#a4f47da512cfa8f94fddaddc65334b454ad58693e596aa4088fa4a05065f9c0ffa"> 51</a></span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a4f47da512cfa8f94fddaddc65334b454ad58693e596aa4088fa4a05065f9c0ffa">CPU</a>,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; };</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#ad22433722f7c71df19a891a5b5039d26">SVFStat</a>();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#a135ac9973ebfef4680d343320453ff52"> 56</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1SVFStat.html#a135ac9973ebfef4680d343320453ff52">~SVFStat</a>() {}</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#a730cc814fede3edb563aa9957c869e9e"> 58</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStat.html#a730cc814fede3edb563aa9957c869e9e">startClk</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_1SVFStat.html#abd7a79d1fe50110a0c1d448027492669">startTime</a> = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>(<span class="keyword">true</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"><a class="line" href="classSVF_1_1SVFStat.html#a1b7f1e3381de87f75f06cddb9c6c1ec1"> 63</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStat.html#a1b7f1e3381de87f75f06cddb9c6c1ec1">endClk</a>()</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="classSVF_1_1SVFStat.html#a8b01f1564408b51f28c107454bf9068d">endTime</a> = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>(<span class="keyword">true</span>);</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="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>(<span class="keywordtype">bool</span> mark = <span class="keyword">false</span>);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#a07b6f8cb424b84b468c4518140fa3a41"> 73</a></span>&#160; NUMStatMap <a class="code" href="classSVF_1_1SVFStat.html#a07b6f8cb424b84b468c4518140fa3a41">generalNumMap</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#a5383691a34426a1a997b5eed387f1831"> 74</a></span>&#160; TIMEStatMap <a class="code" href="classSVF_1_1SVFStat.html#a5383691a34426a1a997b5eed387f1831">timeStatMap</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#abd7a79d1fe50110a0c1d448027492669"> 76</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1SVFStat.html#abd7a79d1fe50110a0c1d448027492669">startTime</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#a8b01f1564408b51f28c107454bf9068d"> 77</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1SVFStat.html#a8b01f1564408b51f28c107454bf9068d">endTime</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStat.html#a6113f8d009c42519f3a43913a0c02b95">performStat</a>() = 0;</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="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStat.html#a77c3cfb0c2b85a343ad0fac3682557c3">printStat</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str = <span class="stringliteral">&quot;&quot;</span>) = 0;</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"><a class="line" href="classSVF_1_1SVFStat.html#ab03780f736bed7861c9be14637e37ba3"> 83</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStat.html#ab03780f736bed7861c9be14637e37ba3">performStatPerQuery</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>) {}</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#a2dd8ce8bb1970344533babb9fc8ddd02"> 85</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStat.html#a2dd8ce8bb1970344533babb9fc8ddd02">printStatPerQuery</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;) {}</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"><a class="line" href="classSVF_1_1SVFStat.html#a21e6767fbe2c3cdea4aac30199dfd2f0"> 87</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFStat.html#a21e6767fbe2c3cdea4aac30199dfd2f0">callgraphStat</a>() {}</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#aa4950ec26b66a085ad38ac154b789db5"> 89</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1SVFStat.html#aa4950ec26b66a085ad38ac154b789db5">timeOfBuildingLLVMModule</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#ae89293bc063bdc74a988e9c37c70321e"> 90</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1SVFStat.html#ae89293bc063bdc74a988e9c37c70321e">timeOfBuildingSymbolTable</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFStat.html#aea75388c973674686d1f2b7498b4095c"> 91</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1SVFStat.html#aea75388c973674686d1f2b7498b4095c">timeOfBuildingSVFIR</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="keyword">private</span>:</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"><a class="line" href="classSVF_1_1SVFStat.html#a3333e45303dcc9c3da00858628cdbbff"> 95</a></span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFStat.html#a3333e45303dcc9c3da00858628cdbbff">moduleName</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;}; <span class="comment">// End class SVFStat</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor">#endif //SVF_SVFSTAT_H</span></div><div class="ttc" id="classSVF_1_1SVFStat_html_a2dd8ce8bb1970344533babb9fc8ddd02"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a2dd8ce8bb1970344533babb9fc8ddd02">SVF::SVFStat::printStatPerQuery</a></div><div class="ttdeci">virtual void printStatPerQuery(NodeID, const PointsTo &amp;)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00085">SVFStat.h:85</a></div></div>
70
70
  <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>
71
71
  <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>
72
72
  <div class="ttc" id="classSVF_1_1SVFStat_html_a4f47da512cfa8f94fddaddc65334b454"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a4f47da512cfa8f94fddaddc65334b454">SVF::SVFStat::ClockType</a></div><div class="ttdeci">ClockType</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00048">SVFStat.h:48</a></div></div>
@@ -75,16 +75,19 @@ $(function() {
75
75
  <div class="ttc" id="classSVF_1_1SVFStat_html_ab03780f736bed7861c9be14637e37ba3"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ab03780f736bed7861c9be14637e37ba3">SVF::SVFStat::performStatPerQuery</a></div><div class="ttdeci">virtual void performStatPerQuery(NodeID)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00083">SVFStat.h:83</a></div></div>
76
76
  <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>
77
77
  <div class="ttc" id="classSVF_1_1SVFStat_html_a4f47da512cfa8f94fddaddc65334b454ad58693e596aa4088fa4a05065f9c0ffa"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a4f47da512cfa8f94fddaddc65334b454ad58693e596aa4088fa4a05065f9c0ffa">SVF::SVFStat::CPU</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00051">SVFStat.h:51</a></div></div>
78
+ <div class="ttc" id="classSVF_1_1SVFStat_html_aa4950ec26b66a085ad38ac154b789db5"><div class="ttname"><a href="classSVF_1_1SVFStat.html#aa4950ec26b66a085ad38ac154b789db5">SVF::SVFStat::timeOfBuildingLLVMModule</a></div><div class="ttdeci">static double timeOfBuildingLLVMModule</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00089">SVFStat.h:89</a></div></div>
79
+ <div class="ttc" id="classSVF_1_1SVFStat_html_aea75388c973674686d1f2b7498b4095c"><div class="ttname"><a href="classSVF_1_1SVFStat.html#aea75388c973674686d1f2b7498b4095c">SVF::SVFStat::timeOfBuildingSVFIR</a></div><div class="ttdeci">static double timeOfBuildingSVFIR</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00091">SVFStat.h:91</a></div></div>
78
80
  <div class="ttc" id="classSVF_1_1SVFStat_html_a6113f8d009c42519f3a43913a0c02b95"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a6113f8d009c42519f3a43913a0c02b95">SVF::SVFStat::performStat</a></div><div class="ttdeci">virtual void performStat()=0</div></div>
79
- <div class="ttc" id="classSVF_1_1SVFStat_html_ad22433722f7c71df19a891a5b5039d26"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ad22433722f7c71df19a891a5b5039d26">SVF::SVFStat::SVFStat</a></div><div class="ttdeci">SVFStat()</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00035">SVFStat.cpp:35</a></div></div>
81
+ <div class="ttc" id="classSVF_1_1SVFStat_html_ad22433722f7c71df19a891a5b5039d26"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ad22433722f7c71df19a891a5b5039d26">SVF::SVFStat::SVFStat</a></div><div class="ttdeci">SVFStat()</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00040">SVFStat.cpp:40</a></div></div>
80
82
  <div class="ttc" id="classSVF_1_1SVFStat_html"><div class="ttname"><a href="classSVF_1_1SVFStat.html">SVF::SVFStat</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00040">SVFStat.h:40</a></div></div>
81
83
  <div class="ttc" id="classSVF_1_1SVFStat_html_a135ac9973ebfef4680d343320453ff52"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a135ac9973ebfef4680d343320453ff52">SVF::SVFStat::~SVFStat</a></div><div class="ttdeci">virtual ~SVFStat()</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00056">SVFStat.h:56</a></div></div>
82
84
  <div class="ttc" id="classSVF_1_1SVFStat_html_a77c3cfb0c2b85a343ad0fac3682557c3"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a77c3cfb0c2b85a343ad0fac3682557c3">SVF::SVFStat::printStat</a></div><div class="ttdeci">virtual void printStat(std::string str=&quot;&quot;)=0</div></div>
83
85
  <div class="ttc" id="classSVF_1_1SVFStat_html_a07b6f8cb424b84b468c4518140fa3a41"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a07b6f8cb424b84b468c4518140fa3a41">SVF::SVFStat::generalNumMap</a></div><div class="ttdeci">NUMStatMap generalNumMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00073">SVFStat.h:73</a></div></div>
84
86
  <div class="ttc" id="classSVF_1_1SVFStat_html_aeded7780a3f826b3efab971807e2dd98"><div class="ttname"><a href="classSVF_1_1SVFStat.html#aeded7780a3f826b3efab971807e2dd98">SVF::SVFStat::TIMEStatMap</a></div><div class="ttdeci">OrderedMap&lt; const char *, double &gt; TIMEStatMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00046">SVFStat.h:46</a></div></div>
85
- <div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00041">SVFStat.cpp:41</a></div></div>
87
+ <div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00046">SVFStat.cpp:46</a></div></div>
86
88
  <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#l00074">SVFStat.h:74</a></div></div>
87
- <div class="ttc" id="classSVF_1_1SVFStat_html_a3333e45303dcc9c3da00858628cdbbff"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a3333e45303dcc9c3da00858628cdbbff">SVF::SVFStat::moduleName</a></div><div class="ttdeci">std::string moduleName</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00091">SVFStat.h:91</a></div></div>
89
+ <div class="ttc" id="classSVF_1_1SVFStat_html_a3333e45303dcc9c3da00858628cdbbff"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a3333e45303dcc9c3da00858628cdbbff">SVF::SVFStat::moduleName</a></div><div class="ttdeci">std::string moduleName</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00095">SVFStat.h:95</a></div></div>
90
+ <div class="ttc" id="classSVF_1_1SVFStat_html_ae89293bc063bdc74a988e9c37c70321e"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ae89293bc063bdc74a988e9c37c70321e">SVF::SVFStat::timeOfBuildingSymbolTable</a></div><div class="ttdeci">static double timeOfBuildingSymbolTable</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00090">SVFStat.h:90</a></div></div>
88
91
  <div class="ttc" id="classSVF_1_1SVFStat_html_a8b01f1564408b51f28c107454bf9068d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a8b01f1564408b51f28c107454bf9068d">SVF::SVFStat::endTime</a></div><div class="ttdeci">double endTime</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00077">SVFStat.h:77</a></div></div>
89
92
  <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>
90
93
  <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>
@@ -71,7 +71,7 @@ $(function() {
71
71
  <div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00378">SymbolTableInfo.h:378</a></div></div>
72
72
  <div class="ttc" id="WPAStat_8h_html"><div class="ttname"><a href="WPAStat_8h.html">WPAStat.h</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_aa689d29ead80303b1ef1e1a91f31c296"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#aa689d29ead80303b1ef1e1a91f31c296">SVF::VersionedFlowSensitive::LocVersionMap</a></div><div class="ttdeci">std::vector&lt; ObjToVersionMap &gt; LocVersionMap</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00043">VersionedFlowSensitive.h:43</a></div></div>
74
- <div class="ttc" id="classSVF_1_1PTAStat_html_aca3e99ad83bddabee1dd565522691c78"><div class="ttname"><a href="classSVF_1_1PTAStat.html#aca3e99ad83bddabee1dd565522691c78">SVF::PTAStat::printStat</a></div><div class="ttdeci">virtual void printStat(std::string str=&quot;&quot;) override</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00273">PTAStat.cpp:273</a></div></div>
74
+ <div class="ttc" id="classSVF_1_1PTAStat_html_aca3e99ad83bddabee1dd565522691c78"><div class="ttname"><a href="classSVF_1_1PTAStat.html#aca3e99ad83bddabee1dd565522691c78">SVF::PTAStat::printStat</a></div><div class="ttdeci">virtual void printStat(std::string str=&quot;&quot;) override</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00278">PTAStat.cpp:278</a></div></div>
75
75
  <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>
76
76
  <div class="ttc" id="classSVF_1_1SVFIR_html_af76a55c3b8255a81a566bdce35ffc749"><div class="ttname"><a href="classSVF_1_1SVFIR.html#af76a55c3b8255a81a566bdce35ffc749">SVF::SVFIR::getBaseObj</a></div><div class="ttdeci">const MemObj * getBaseObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00410">SVFIR.h:410</a></div></div>
77
77
  <div class="ttc" id="SVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
@@ -165,7 +165,7 @@ $(function() {
165
165
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
166
166
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a7d86bc18060c0114a783aa1c3a7e9dda"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a7d86bc18060c0114a783aa1c3a7e9dda">SVF::VersionedFlowSensitive::prelabel</a></div><div class="ttdeci">void prelabel(void)</div><div class="ttdoc">Prelabel the SVFG: set y(o) for stores and c(o) for delta nodes to a new version. ...</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00073">VersionedFlowSensitive.cpp:73</a></div></div>
167
167
  <div class="ttc" id="PointsTo_8h_html"><div class="ttname"><a href="PointsTo_8h.html">PointsTo.h</a></div></div>
168
- <div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00041">SVFStat.cpp:41</a></div></div>
168
+ <div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00046">SVFStat.cpp:46</a></div></div>
169
169
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_af14a4cbc0b990389d31b2f88f50ad8eb"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#af14a4cbc0b990389d31b2f88f50ad8eb">SVF::VersionedFlowSensitive::versionedVarToPropNode</a></div><div class="ttdeci">VarToPropNodeMap versionedVarToPropNode</div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8h_source.html#l00200">VersionedFlowSensitive.h:200</a></div></div>
170
170
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00150">PointerAnalysis.h:150</a></div></div>
171
171
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a3489def8e16e4d7c83d2c909d3287fc0"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a3489def8e16e4d7c83d2c909d3287fc0">SVF::VersionedFlowSensitive::getStmtReliance</a></div><div class="ttdeci">NodeBS &amp; getStmtReliance(const NodeID o, const Version v)</div><div class="ttdoc">Returns the statements which rely on o:v. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00838">VersionedFlowSensitive.cpp:838</a></div></div>
@@ -164,7 +164,7 @@ Functions</h2></td></tr>
164
164
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a2f8e91c075d90be66412a079fe73e936"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">SVF::LLVMModuleSet::releaseLLVMModuleSet</a></div><div class="ttdeci">static void releaseLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00077">LLVMModule.h:77</a></div></div>
165
165
  <div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_accdd44093d6d145dc92edeaaff3f5732"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">SVF::LLVMUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &amp;arg_num, char **arg_value, std::vector&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00436">LLVMUtil.cpp:436</a></div></div>
166
166
  <div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
167
- <div class="ttc" id="classSVF_1_1SVFModule_html_aa03ab5272652290f30870c6e2d053d98"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">SVF::SVFModule::buildSymbolTableInfo</a></div><div class="ttdeci">void buildSymbolTableInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8cpp_source.html#l00030">SVFModule.cpp:30</a></div></div>
167
+ <div class="ttc" id="classSVF_1_1SVFModule_html_aa03ab5272652290f30870c6e2d053d98"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">SVF::SVFModule::buildSymbolTableInfo</a></div><div class="ttdeci">void buildSymbolTableInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8cpp_source.html#l00031">SVFModule.cpp:31</a></div></div>
168
168
  </div><!-- fragment -->
169
169
  </div>
170
170
  </div>
@@ -83,7 +83,7 @@ $(function() {
83
83
  <div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_accdd44093d6d145dc92edeaaff3f5732"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">SVF::LLVMUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &amp;arg_num, char **arg_value, std::vector&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00436">LLVMUtil.cpp:436</a></div></div>
84
84
  <div class="ttc" id="CFLAlias_8h_html"><div class="ttname"><a href="CFLAlias_8h.html">CFLAlias.h</a></div></div>
85
85
  <div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
86
- <div class="ttc" id="classSVF_1_1SVFModule_html_aa03ab5272652290f30870c6e2d053d98"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">SVF::SVFModule::buildSymbolTableInfo</a></div><div class="ttdeci">void buildSymbolTableInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8cpp_source.html#l00030">SVFModule.cpp:30</a></div></div>
86
+ <div class="ttc" id="classSVF_1_1SVFModule_html_aa03ab5272652290f30870c6e2d053d98"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">SVF::SVFModule::buildSymbolTableInfo</a></div><div class="ttdeci">void buildSymbolTableInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8cpp_source.html#l00031">SVFModule.cpp:31</a></div></div>
87
87
  <div class="ttc" id="LLVMUtil_8h_html"><div class="ttname"><a href="LLVMUtil_8h.html">LLVMUtil.h</a></div></div>
88
88
  </div><!-- fragment --></div><!-- contents -->
89
89
  <!-- start footer part -->
@@ -1089,7 +1089,7 @@ Additional Inherited Members</h2></td></tr>
1089
1089
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_af68485a2208553579f9c2e4b2cb20cff"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">SVF::BVDataPTAImpl::addPts</a></div><div class="ttdeci">virtual bool addPts(NodeID id, NodeID ptd)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00132">PointerAnalysisImpl.h:132</a></div></div>
1090
1090
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ac5683fe2e24b393ccc5cb6d8bc92cf2b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac5683fe2e24b393ccc5cb6d8bc92cf2b">SVF::PointerAnalysis::setObjFieldInsensitive</a></div><div class="ttdeci">void setObjFieldInsensitive(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00349">PointerAnalysis.h:349</a></div></div>
1091
1091
  <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>
1092
- <div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00041">SVFStat.cpp:41</a></div></div>
1092
+ <div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00046">SVFStat.cpp:46</a></div></div>
1093
1093
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00150">PointerAnalysis.h:150</a></div></div>
1094
1094
  <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>
1095
1095
  <div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00182">SVFBasicTypes.h:182</a></div></div>
@@ -2180,7 +2180,7 @@ Additional Inherited Members</h2></td></tr>
2180
2180
  <p class="definition">Definition at line <a class="el" href="Andersen_8cpp_source.html#l00224">224</a> of file <a class="el" href="Andersen_8cpp_source.html">Andersen.cpp</a>.</p>
2181
2181
  <div class="fragment"><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;{</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="comment">// sub nodes do not need to be processed</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Andersen.html#aad706e332847e6b0892350a05028ba30">sccRepNode</a>(nodeId) != nodeId)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* node = <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">getConstraintNode</a>(nodeId);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordtype">double</span> insertStart = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>();</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="classSVF_1_1Andersen.html#a0f32ba8cb1109c257552fa775a007ffd">handleLoadStore</a>(node);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordtype">double</span> insertEnd = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>();</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#a9fe738f1e11c80006d540f246a80bfdf">timeOfProcessLoadStore</a> += (insertEnd - insertStart) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</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; <span class="keywordtype">double</span> propStart = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>();</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="classSVF_1_1Andersen.html#ab069683dd6ca563113efbde2813ab35e">handleCopyGep</a>(node);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordtype">double</span> propEnd = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-&gt;<a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>();</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#aae14de6fbca9280d8d0290326aa493f0">timeOfProcessCopyGep</a> += (propEnd - propStart) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;}</div><div class="ttc" id="classSVF_1_1AndersenBase_html_aae14de6fbca9280d8d0290326aa493f0"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#aae14de6fbca9280d8d0290326aa493f0">SVF::AndersenBase::timeOfProcessCopyGep</a></div><div class="ttdeci">static double timeOfProcessCopyGep</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00137">Andersen.h:137</a></div></div>
2182
2182
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a26722666cc8f2fce61bed73f086a0e87"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a26722666cc8f2fce61bed73f086a0e87">SVF::ConstraintGraph::getConstraintNode</a></div><div class="ttdeci">ConstraintNode * getConstraintNode(NodeID id) const</div><div class="ttdoc">Get/add/remove constraint node. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00107">ConsG.h:107</a></div></div>
2183
- <div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00041">SVFStat.cpp:41</a></div></div>
2183
+ <div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00046">SVFStat.cpp:46</a></div></div>
2184
2184
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00150">PointerAnalysis.h:150</a></div></div>
2185
2185
  <div class="ttc" id="classSVF_1_1ConstraintNode_html"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html">SVF::ConstraintNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00040">ConsGNode.h:40</a></div></div>
2186
2186
  <div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00182">SVFBasicTypes.h:182</a></div></div>
@@ -2379,7 +2379,7 @@ Additional Inherited Members</h2></td></tr>
2379
2379
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a02c5a50b214d36921e1404784e76704d"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a02c5a50b214d36921e1404784e76704d">SVF::AndersenBase::timeOfSCCMerges</a></div><div class="ttdeci">static double timeOfSCCMerges</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00133">Andersen.h:133</a></div></div>
2380
2380
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a0d7298cbf83568f24fd2bd1926a32968"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a0d7298cbf83568f24fd2bd1926a32968">SVF::AndersenBase::numOfSCCDetection</a></div><div class="ttdeci">static u32_t numOfSCCDetection</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00131">Andersen.h:131</a></div></div>
2381
2381
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a6b7d0e57f741c446d0bf178939960143"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a6b7d0e57f741c446d0bf178939960143">SVF::AndersenBase::timeOfSCCDetection</a></div><div class="ttdeci">static double timeOfSCCDetection</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00132">Andersen.h:132</a></div></div>
2382
- <div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00041">SVFStat.cpp:41</a></div></div>
2382
+ <div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00046">SVFStat.cpp:46</a></div></div>
2383
2383
  <div class="ttc" id="classSVF_1_1WPASolver_html_a37ca8a99b8f83fba796293e6e13b0953"><div class="ttname"><a href="classSVF_1_1WPASolver.html#a37ca8a99b8f83fba796293e6e13b0953">SVF::WPASolver::getSCCDetector</a></div><div class="ttdeci">SCC * getSCCDetector() const</div><div class="ttdoc">Get SCC detector. </div><div class="ttdef"><b>Definition:</b> <a href="WPASolver_8h_source.html#l00071">WPASolver.h:71</a></div></div>
2384
2384
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00150">PointerAnalysis.h:150</a></div></div>
2385
2385
  <div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00182">SVFBasicTypes.h:182</a></div></div>
@@ -2605,7 +2605,7 @@ Additional Inherited Members</h2></td></tr>
2605
2605
  <div class="ttc" id="namespaceSVF_html_ac82022f3f81965c3ce9b26c299f537a7"><div class="ttname"><a href="namespaceSVF.html#ac82022f3f81965c3ce9b26c299f537a7">SVF::NodePairSet</a></div><div class="ttdeci">Set&lt; NodePair &gt; NodePairSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00123">SVFBasicTypes.h:123</a></div></div>
2606
2606
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a35bd5f0fb2c146199e9f1aa6a19b4062"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">SVF::PointerAnalysis::CallEdgeMap</a></div><div class="ttdeci">OrderedMap&lt; const CallICFGNode *, FunctionSet &gt; CallEdgeMap</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00106">PointerAnalysis.h:106</a></div></div>
2607
2607
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a2afb49f513c9534fd051117b59dc056b"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a2afb49f513c9534fd051117b59dc056b">SVF::AndersenBase::timeOfUpdateCallGraph</a></div><div class="ttdeci">static double timeOfUpdateCallGraph</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00139">Andersen.h:139</a></div></div>
2608
- <div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00041">SVFStat.cpp:41</a></div></div>
2608
+ <div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00046">SVFStat.cpp:46</a></div></div>
2609
2609
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00150">PointerAnalysis.h:150</a></div></div>
2610
2610
  <div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00182">SVFBasicTypes.h:182</a></div></div>
2611
2611
  <div class="ttc" id="classSVF_1_1Andersen_html_a5a90e681e46c52ffd3debf02910c7ecf"><div class="ttname"><a href="classSVF_1_1Andersen.html#a5a90e681e46c52ffd3debf02910c7ecf">SVF::Andersen::connectCaller2CalleeParams</a></div><div class="ttdeci">void connectCaller2CalleeParams(CallSite cs, const SVFFunction *F, NodePairSet &amp;cpySrcNodes)</div><div class="ttdoc">Connect formal and actual parameters for indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00684">Andersen.cpp:684</a></div></div>