svf-tools 1.0.539 → 1.0.540
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.
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -1
- package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +2 -1
- package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +5 -4
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +15 -15
- package/SVF-doxygen/html/html/CFLGramGraphChecker_8h_source.html +4 -4
- package/SVF-doxygen/html/html/CFLGrammar_8txt.html +39 -39
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +20 -8
- package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +16 -15
- package/SVF-doxygen/html/html/CHGBuilder_8cpp.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +2 -1
- package/SVF-doxygen/html/html/CPPUtil_8h.html +4 -4
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAStat_8h.html +1 -1
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ICFGStat_8h.html +1 -1
- package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +2 -1
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAStat_8h.html +1 -1
- package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp.html +1 -1
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Options_8cpp_source.html +5 -3
- package/SVF-doxygen/html/html/Options_8h.html +1 -1
- package/SVF-doxygen/html/html/Options_8h_source.html +5 -3
- package/SVF-doxygen/html/html/PEGGrammar_8txt.html +314 -0
- package/SVF-doxygen/html/html/PTAStat_8cpp.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PTAStat_8h.html +2 -2
- package/SVF-doxygen/html/html/PTAStat_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGStat_8h.html +1 -1
- package/SVF-doxygen/html/html/SVFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8h.html +1 -1
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/WPAStat_8h.html +1 -1
- package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder-members.html +12 -11
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +73 -4
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +50 -49
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +10 -7
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +3 -2
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +8 -6
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +54 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +2 -2
- package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +2 -0
- package/SVF-doxygen/html/html/dir_eef3a4ca6ca2cab0eb5fbea30ec32c1a.html +0 -2
- package/SVF-doxygen/html/html/files.html +15 -15
- package/SVF-doxygen/html/html/functions_b.html +3 -0
- package/SVF-doxygen/html/html/functions_c.html +22 -20
- package/SVF-doxygen/html/html/functions_f.html +10 -12
- package/SVF-doxygen/html/html/functions_func_b.html +3 -0
- package/SVF-doxygen/html/html/functions_func_p.html +2 -2
- package/SVF-doxygen/html/html/functions_i.html +6 -6
- package/SVF-doxygen/html/html/functions_l.html +6 -6
- package/SVF-doxygen/html/html/functions_n.html +3 -0
- package/SVF-doxygen/html/html/functions_p.html +19 -18
- package/SVF-doxygen/html/html/functions_r.html +4 -2
- package/SVF-doxygen/html/html/functions_s.html +13 -11
- package/SVF-doxygen/html/html/functions_t.html +3 -3
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_n.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_p.html +3 -0
- package/SVF-doxygen/html/html/globals.html +1 -0
- package/SVF-doxygen/html/html/globals_a.html +3 -1
- package/SVF-doxygen/html/html/globals_c.html +6 -5
- package/SVF-doxygen/html/html/globals_e.html +1 -0
- package/SVF-doxygen/html/html/globals_f.html +7 -5
- package/SVF-doxygen/html/html/globals_g.html +7 -3
- package/SVF-doxygen/html/html/globals_m.html +6 -3
- package/SVF-doxygen/html/html/globals_v.html +2 -1
- package/SVF-doxygen/html/html/globals_vars.html +22 -7
- package/SVF-doxygen/html/html/namespaceSVF.html +2 -2
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +4 -4
- package/SVF-doxygen/html/html/search/all_0.js +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +2 -2
- package/SVF-doxygen/html/html/search/all_10.js +11 -9
- package/SVF-doxygen/html/html/search/all_11.js +2 -2
- package/SVF-doxygen/html/html/search/all_12.js +8 -8
- package/SVF-doxygen/html/html/search/all_13.js +6 -6
- package/SVF-doxygen/html/html/search/all_14.js +1 -1
- package/SVF-doxygen/html/html/search/all_15.js +2 -2
- package/SVF-doxygen/html/html/search/all_2.js +1 -0
- package/SVF-doxygen/html/html/search/all_3.js +4 -4
- package/SVF-doxygen/html/html/search/all_5.js +1 -1
- package/SVF-doxygen/html/html/search/all_6.js +6 -6
- package/SVF-doxygen/html/html/search/all_7.js +4 -4
- package/SVF-doxygen/html/html/search/all_9.js +2 -2
- package/SVF-doxygen/html/html/search/all_b.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +5 -5
- package/SVF-doxygen/html/html/search/all_d.js +2 -2
- package/SVF-doxygen/html/html/search/all_e.js +5 -4
- package/SVF-doxygen/html/html/search/files_c.js +1 -0
- package/SVF-doxygen/html/html/search/functions_1.js +1 -0
- package/SVF-doxygen/html/html/search/functions_f.js +2 -2
- package/SVF-doxygen/html/html/search/variables_0.js +1 -1
- package/SVF-doxygen/html/html/search/variables_1.js +2 -2
- package/SVF-doxygen/html/html/search/variables_10.js +2 -1
- package/SVF-doxygen/html/html/search/variables_13.js +3 -3
- package/SVF-doxygen/html/html/search/variables_14.js +1 -1
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/search/variables_3.js +1 -1
- package/SVF-doxygen/html/html/search/variables_5.js +1 -1
- package/SVF-doxygen/html/html/search/variables_6.js +2 -2
- package/SVF-doxygen/html/html/search/variables_7.js +4 -4
- package/SVF-doxygen/html/html/search/variables_c.js +1 -1
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +4 -3
- package/include/CFL/CFGNormalizer.h +3 -3
- package/include/CFL/CFLAlias.h +5 -1
- package/include/CFL/CFLGraphBuilder.h +11 -1
- package/include/CFL/PEGGrammar.txt +28 -0
- package/include/DDA/DDAStat.h +1 -1
- package/include/Graphs/ICFGStat.h +1 -1
- package/include/Graphs/SVFGStat.h +1 -1
- package/include/MTA/MTAStat.h +1 -1
- package/include/SVF-FE/LLVMUtil.h +2 -2
- package/include/Util/ExtAPI.h +2 -2
- package/include/Util/Options.h +3 -1
- package/include/{MemoryModel → Util}/PTAStat.h +0 -0
- package/include/WPA/Andersen.h +3 -3
- package/include/WPA/WPAStat.h +1 -1
- package/lib/CFL/CFLAlias.cpp +12 -7
- package/lib/CFL/CFLGraphBuilder.cpp +135 -0
- package/lib/CFL/GrammarBuilder.cpp +12 -8
- package/lib/MTA/LockAnalysis.cpp +1 -1
- package/lib/MTA/MHP.cpp +1 -1
- package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
- package/lib/SVF-FE/CHGBuilder.cpp +1 -1
- package/lib/Util/NodeIDAllocator.cpp +1 -1
- package/lib/Util/Options.cpp +16 -4
- package/lib/Util/PTAStat.cpp +4 -3
- package/lib/WPA/TypeAnalysis.cpp +1 -1
- package/package.json +1 -1
|
@@ -66,7 +66,7 @@ $(function() {
|
|
|
66
66
|
<div class="title">PTAStat.cpp</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="PTAStat_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> <span class="comment">//===- PTAStat.cpp -- Base class for statistics in SVF-----------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <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> <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> <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> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <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> <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> <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> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <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> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * PTAStat.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: Oct 13, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <iomanip></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "<a class="code" href="PTACallGraph_8h.html">Graphs/PTACallGraph.h</a>"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="PTAStat_8h.html">MemoryModel/PTAStat.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="PointerAnalysisImpl_8h.html">MemoryModel/PointerAnalysisImpl.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="SVFIR_8h.html">MemoryModel/SVFIR.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="Options_8h.html">Util/Options.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a25001a6d794d91056f37d954d9660910">PTAStat:: TotalAnalysisTime</a> = <span class="stringliteral">"TotalTime"</span>; </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ad4c1cf3750341f73987c37745f3bd2aa">PTAStat:: SCCDetectionTime</a> = <span class="stringliteral">"SCCDetectTime"</span>; </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a8c4101e697057269def501d14a987287">PTAStat:: SCCMergeTime</a> = <span class="stringliteral">"SCCMergeTime"</span>; </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#aeb6a52c31ecd004670e85f24b01d75d6">PTAStat:: ProcessLoadStoreTime</a> = <span class="stringliteral">"LoadStoreTime"</span>; </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a95a0a7861731072baeaf75354531875f">PTAStat:: ProcessCopyGepTime</a> = <span class="stringliteral">"CopyGepTime"</span>; </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a8aedfeb35f76e6d33135637156468894">PTAStat:: UpdateCallGraphTime</a> = <span class="stringliteral">"UpdateCGTime"</span>; </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a1a4d418fd9e5413e7ffbbfe57f5e0560">PTAStat:: TotalNumOfPointers</a> = <span class="stringliteral">"TotalPointers"</span>; </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#acd9848f15aa359550e86c7b857df84ed">PTAStat:: TotalNumOfObjects</a> = <span class="stringliteral">"TotalObjects"</span>; </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ac0e0a1c49d33e02f5cc0f21565ce627d">PTAStat:: TotalNumOfFieldObjects</a> = <span class="stringliteral">"TotalFieldObjects"</span>; </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#af6a6e3ea4c7f8e1c984bea8d5fb9a7c0">PTAStat:: MaxStructSize</a> = <span class="stringliteral">"MaxStructSize"</span>; </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a3afc0a36232a0388d8aa42c68219cb26">PTAStat:: TotalNumOfEdges</a> = <span class="stringliteral">"TotalSVFStmts"</span>; </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ae9952b7456b5102113d1fee4d9d7801a">PTAStat:: NumOfFunctionObjs</a> = <span class="stringliteral">"FunctionObjs"</span>; </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a57574c85a5a875a05ef83d3c916cf3e5">PTAStat:: NumOfGlobalObjs</a> = <span class="stringliteral">"GlobalObjs"</span>; </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a4aff48eaa2045ee619a8ea793a9234b8">PTAStat:: NumOfHeapObjs</a> = <span class="stringliteral">"HeapObjs"</span>; </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ae05503909688a17dc1f282d1d029d24e">PTAStat:: NumOfStackObjs</a> = <span class="stringliteral">"StackObjs"</span>; </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ad1a7e7aec8f272017be7d0b6acda86a4">PTAStat::NumberOfFieldInsensitiveObj</a> = <span class="stringliteral">"FIObjNum"</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ab62eb21c7dc03f68b0509c31451b2e98">PTAStat::NumberOfFieldSensitiveObj</a> = <span class="stringliteral">"FSObjNum"</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a95edd35cec92fa4cacc8b59b5eecc827">PTAStat:: NumOfObjsHasVarStruct</a> = <span class="stringliteral">"VarStructObj"</span>; </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a78693e8bf93d712eb76c9d6dc0c45ae6">PTAStat:: NumOfObjsHasVarArray</a> = <span class="stringliteral">"VarArrayObj"</span>; </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a918051b1d0eb4f49c349352408cc9751">PTAStat:: NumOfObjsHasConstStruct</a> = <span class="stringliteral">"ConstStructObj"</span>; </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#adb31b163f0cbb9d9ce207ef5d8c075fa">PTAStat:: NumOfObjsHasConstArray</a> = <span class="stringliteral">"ConstArrayObj"</span>; </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a9014371b8ed95ab8135eed2a7fa945f1">PTAStat:: NumOfNonPtrObjs</a> = <span class="stringliteral">"NonPtrObj"</span>; </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ae74458d96423e4a7391fe8697d5a9a67">PTAStat:: NumOfConstantObjs</a> = <span class="stringliteral">"ConstantObj"</span>; </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ac5bf59a0a7a760c9fec5f22dedec5eb6">PTAStat:: NumOfAddrs</a> = <span class="stringliteral">"AddrsNum"</span>; </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a4aa7356142f51d942063be5a2910940f">PTAStat:: NumOfLoads</a> = <span class="stringliteral">"LoadsNum"</span>; </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a656ad9980ff05af396ed6754c50916e7">PTAStat:: NumOfStores</a> = <span class="stringliteral">"StoresNum"</span>; </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a97a8b662356fc89cdd2cb9463fa5578b">PTAStat:: NumOfCopys</a> = <span class="stringliteral">"CopysNum"</span>; </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#acc5e4740e11cb6f9794723e5f61ab63b">PTAStat:: NumOfGeps</a> = <span class="stringliteral">"GepsNum"</span>; </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a6cbeca77d0681f7da28979cbd0f661b2">PTAStat:: NumOfCalls</a> = <span class="stringliteral">"CallsNum"</span>; </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a0a552611fcd20e1310290bdae404a514">PTAStat:: NumOfReturns</a> = <span class="stringliteral">"ReturnsNum"</span>; </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a0de03cdb382b353c6c1495c0f80cfe19">PTAStat:: NumOfProcessedAddrs</a> = <span class="stringliteral">"AddrProcessed"</span>; </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a17531fa1df42df0b19191d61853380d9">PTAStat:: NumOfProcessedLoads</a> = <span class="stringliteral">"LoadProcessed"</span>; </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a5b9bc0e9dac6ac97199476f6b7ea1edf">PTAStat:: NumOfProcessedStores</a> = <span class="stringliteral">"StoreProcessed"</span>; </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ad30b36fb1884d1ef0b01c3b36a245211">PTAStat:: NumOfProcessedCopys</a> = <span class="stringliteral">"CopyProcessed"</span>; </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#aaa9d98f868c0724cb57c6934e783d1e5">PTAStat:: NumOfProcessedGeps</a> = <span class="stringliteral">"GepProcessed"</span>; </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a07a1db62ddba50bda787b2985ef8d135">PTAStat::NumOfSfr</a> = <span class="stringliteral">"NumOfSFRs"</span>; </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a1745e5c3c026a130a70954da9c0074b1">PTAStat::NumOfFieldExpand</a> = <span class="stringliteral">"NumOfFieldExpand"</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a218748b401bdd3d5eebd45eea0026b12">PTAStat:: NumOfPointers</a> = <span class="stringliteral">"Pointers"</span>; </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a164249b9d35606387e628529c643d119">PTAStat:: NumOfGepFieldPointers</a> = <span class="stringliteral">"DYFieldPtrs"</span>; </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a5c09f41916e40d784a63e301584511f9">PTAStat:: NumOfMemObjects</a> = <span class="stringliteral">"MemObjects"</span>; </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a16f9bdb5387471d0bd825c4a9cbcb22e">PTAStat:: NumOfGepFieldObjects</a> = <span class="stringliteral">"DYFieldObjs"</span>; </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#adb0edbe88a74e5e89921bcfafa4759c6">PTAStat:: AveragePointsToSetSize</a> = <span class="stringliteral">"AvgPtsSetSize"</span>; </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a1649c9f893c5b9ec2d57a399bc050030">PTAStat:: AverageTopLevPointsToSetSize</a> = <span class="stringliteral">"AvgTopLvlPtsSize"</span>; </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#af2b45aab2eee96a1cabba3025e4375a2">PTAStat:: MaxPointsToSetSize</a> = <span class="stringliteral">"MaxPtsSetSize"</span>; </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ae95fb0771a71ead27da79a45cac47a36">PTAStat:: NumOfIterations</a> = <span class="stringliteral">"Iterations"</span>; </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a618707c52da086e04f5e7bff31794cf3">PTAStat:: NumOfIndirectCallSites</a> = <span class="stringliteral">"IndCallSites"</span>; </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ad51d2bd924f049e440b3d0dd0d423524">PTAStat:: NumOfIndirectEdgeSolved</a> = <span class="stringliteral">"IndEdgeSolved"</span>; </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ad1731b88c24bb79728f62cd3e9c55699">PTAStat:: NumOfSCCDetection</a> = <span class="stringliteral">"NumOfSCCDetect"</span>; </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ac518843a4148ecc45027ccc19a690c05">PTAStat:: NumOfCycles</a> = <span class="stringliteral">"TotalCycleNum"</span>; </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#aefcc3638fac7034ab3542be8eb01ab58">PTAStat:: NumOfPWCCycles</a> = <span class="stringliteral">"TotalPWCCycleNum"</span>; </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#aea3e95097b3b9d326bef0d36f17e51a5">PTAStat:: NumOfNodesInCycles</a> = <span class="stringliteral">"NodesInCycles"</span>; </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ab754f7768ffcd6f232b8cdf0fef6fc4e">PTAStat:: MaxNumOfNodesInSCC</a> = <span class="stringliteral">"MaxNodesInSCC"</span>; </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a1211e1c7f16b715f32ecdef83f39a8c6">PTAStat:: NumOfNullPointer</a> = <span class="stringliteral">"NullPointer"</span>; </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#ac9b65b591200c16c420fbd26710b448f"> 108</a></span> <a class="code" href="classSVF_1_1PTAStat.html#ac9b65b591200c16c420fbd26710b448f">PTAStat::PTAStat</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>) : startTime(0), endTime(0), pta(p)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  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="l00111"></a><span class="lineno"> 111</span>  && <span class="stringliteral">"PTAStat: unknown clock type!"</span>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc"> 114</a></span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">PTAStat::getClk</a>(<span class="keywordtype">bool</span> mark)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a5cfcf1ddc44ff175c4766f88bf204c03">Options::MarkedClocksOnly</a> && !mark) <span class="keywordflow">return</span> 0.0;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <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="l00119"></a><span class="lineno"> 119</span>  {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">struct </span>timespec time;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  clock_gettime(CLOCK_MONOTONIC, &time);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <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="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <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="l00125"></a><span class="lineno"> 125</span>  {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">return</span> <a class="code" href="SVFBasicTypes_8h.html#af091e361d7961cb895ff2101eceed953">CLOCK_IN_MS</a>();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"PTAStat::getClk: unknown clock type"</span>);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  abort();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#acfed70588cf921694db35990ec3c7497"> 133</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTAStat.html#acfed70588cf921694db35990ec3c7497">PTAStat::performStat</a>()</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="classSVF_1_1PTAStat.html#a1772bc87370b5625f71edd4476277064">callgraphStat</a>();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFunction = 0;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfGlobal = 0;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfStack = 0;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfHeap = 0;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfHasVarArray = 0;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfHasVarStruct = 0;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfHasConstArray = 0;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfHasConstStruct = 0;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfScalar = 0;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfConstant = 0;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fiObjNumber = 0;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fsObjNumber = 0;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<SymID></a> memObjSet;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> it = pag-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = pag-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = it->second;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>* obj = SVFUtil::dyn_cast<ObjVar>(node))</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = obj->getMemObj();</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">if</span> (memObjSet.insert(mem-><a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>()).second == <span class="keyword">false</span>)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#a7b890ca9e93b1c61cc6437b7e6a82a8c">isBlackHoleObj</a>())</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#ae1d14e2bf0be36cdadebf119822f607b">isFunction</a>())</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  numOfFunction++;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#a40462512a99eb258d8cd442c38d812b4">isGlobalObj</a>())</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  numOfGlobal++;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#af7316c697eafc71d5fc93108da4e2cee">isStack</a>())</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  numOfStack++;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#a898c5bb3956402578266a6fb142e02b1">isHeap</a>())</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  numOfHeap++;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#a616e9f4d6f82a253f94391c47668b9a6">isVarArray</a>())</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  numOfHasVarArray++;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#ad1966c52f95775ac7d65c0ba6632c3cf">isVarStruct</a>())</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  numOfHasVarStruct++;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#a7f828731597450f1d43b61413ab0e7bb">isConstantArray</a>())</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  numOfHasConstArray++;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#a019a77516c403f1f3cc72917b810a41f">isConstantStruct</a>())</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  numOfHasConstStruct++;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#a6dae1b3429c6049f0153ec006d329082">hasPtrObj</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  numOfScalar++;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#a1a4ff4aaaf2573240a318e1b79328cd0">isConstDataOrConstGlobal</a>())</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  numOfConstant++;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span> (mem-><a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>())</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  fiObjNumber++;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  fsObjNumber++;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PTAStat.html#a608441b95be0861d8c1b0a035281f4d5">pta</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#a108380f6f0b67654bb7c7676686096c8">isLocalVarInRecursiveFun</a>(node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()))</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <a class="code" href="classSVF_1_1PTAStat.html#a5b4095f427c9c7b9ec0db497ba33baea">localVarInRecursion</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a1a4d418fd9e5413e7ffbbfe57f5e0560">TotalNumOfPointers</a>] = pag-><a class="code" href="classSVF_1_1IRGraph.html#a0212f3fe2f37363e8060f292c8cf7668">getValueNodeNum</a>() + pag-><a class="code" href="classSVF_1_1SVFIR.html#a8a24e0bf9f95fc1519d4013e0e82dec9">getFieldValNodeNum</a>();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#acd9848f15aa359550e86c7b857df84ed">TotalNumOfObjects</a>] = pag-><a class="code" href="classSVF_1_1IRGraph.html#a82528aff779ccf8f723f57507dd2d991">getObjectNodeNum</a>();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ac0e0a1c49d33e02f5cc0f21565ce627d">TotalNumOfFieldObjects</a>] = pag-><a class="code" href="classSVF_1_1SVFIR.html#a3bbaafd80dfcae6ccc82c3d8b9d303ea">getFieldObjNodeNum</a>();</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#af6a6e3ea4c7f8e1c984bea8d5fb9a7c0">MaxStructSize</a>] = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#abc7e567209010286a68634c700d76cca">getMaxStructSize</a>();</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a3afc0a36232a0388d8aa42c68219cb26">TotalNumOfEdges</a>] = pag-><a class="code" href="classSVF_1_1IRGraph.html#a821df0fcb66e4f0a5b10c295c24b7c2c">getPAGEdgeNum</a>();</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<span class="stringliteral">"TotalPTASVFStmts"</span>] = pag-><a class="code" href="classSVF_1_1IRGraph.html#a51485004eb28aab6620801205d13ef1b">getPTAPAGEdgeNum</a>();</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ad1a7e7aec8f272017be7d0b6acda86a4">NumberOfFieldInsensitiveObj</a>] = fiObjNumber;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ab62eb21c7dc03f68b0509c31451b2e98">NumberOfFieldSensitiveObj</a>] = fsObjNumber;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ac5bf59a0a7a760c9fec5f22dedec5eb6">NumOfAddrs</a>] = pag-><a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a>).size();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a4aa7356142f51d942063be5a2910940f">NumOfLoads</a>] = pag-><a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>).size();</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a656ad9980ff05af396ed6754c50916e7">NumOfStores</a>] = pag-><a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>).size();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a97a8b662356fc89cdd2cb9463fa5578b">NumOfCopys</a>] = pag-><a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a>).size();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#acc5e4740e11cb6f9794723e5f61ab63b">NumOfGeps</a>] = pag-><a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>).size();</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a6cbeca77d0681f7da28979cbd0f661b2">NumOfCalls</a>] = pag-><a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a>).size();</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a0a552611fcd20e1310290bdae404a514">NumOfReturns</a>] = pag-><a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a>).size();</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ae9952b7456b5102113d1fee4d9d7801a">NumOfFunctionObjs</a>] = numOfFunction;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a57574c85a5a875a05ef83d3c916cf3e5">NumOfGlobalObjs</a>] = numOfGlobal;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a4aff48eaa2045ee619a8ea793a9234b8">NumOfHeapObjs</a>] = numOfHeap;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ae05503909688a17dc1f282d1d029d24e">NumOfStackObjs</a>] = numOfStack;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a95edd35cec92fa4cacc8b59b5eecc827">NumOfObjsHasVarStruct</a>] = numOfHasVarStruct;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a78693e8bf93d712eb76c9d6dc0c45ae6">NumOfObjsHasVarArray</a>] = numOfHasVarArray;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a918051b1d0eb4f49c349352408cc9751">NumOfObjsHasConstStruct</a>] = numOfHasConstStruct;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#adb31b163f0cbb9d9ce207ef5d8c075fa">NumOfObjsHasConstArray</a>] = numOfHasConstArray;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a9014371b8ed95ab8135eed2a7fa945f1">NumOfNonPtrObjs</a>] = numOfScalar;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ae74458d96423e4a7391fe8697d5a9a67">NumOfConstantObjs</a>] = numOfConstant;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a618707c52da086e04f5e7bff31794cf3">NumOfIndirectCallSites</a>] = pag-><a class="code" href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0">getIndirectCallsites</a>().size();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<span class="stringliteral">"TotalCallSite"</span>] = pag-><a class="code" href="classSVF_1_1SVFIR.html#aa530e33657f68fc2e8eae9435ce430cb">getCallSiteSet</a>().size();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<span class="stringliteral">"LocalVarInRecur"</span>] = <a class="code" href="classSVF_1_1PTAStat.html#a5b4095f427c9c7b9ec0db497ba33baea">localVarInRecursion</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#a9f96e6a886fa69e07cda5dbfaed8b7c9">count</a>();</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="comment">// REFACTOR-TODO bitcastInstStat();</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <a class="code" href="classSVF_1_1PTAStat.html#ada838d9e03f2be4fb3ceffab3983b564">branchStat</a>();</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <a class="code" href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">printStat</a>(<span class="stringliteral">"General Stats"</span>);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#a1772bc87370b5625f71edd4476277064"> 236</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTAStat.html#a1772bc87370b5625f71edd4476277064">PTAStat::callgraphStat</a>()</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* graph = <a class="code" href="classSVF_1_1PTAStat.html#a608441b95be0861d8c1b0a035281f4d5">pta</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>();</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="classSVF_1_1SCCDetection.html">PointerAnalysis::CallGraphSCC</a>* callgraphSCC = <span class="keyword">new</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac4ad73782f42f90ad7ac9c66edb27c69">PointerAnalysis::CallGraphSCC</a>(graph);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  callgraphSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">find</a>();</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordtype">unsigned</span> totalNode = 0;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordtype">unsigned</span> totalCycle = 0;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordtype">unsigned</span> nodeInCycle = 0;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordtype">unsigned</span> maxNodeInCycle = 0;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordtype">unsigned</span> totalEdge = 0;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordtype">unsigned</span> edgeInCycle = 0;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">NodeSet</a> sccRepNodeSet;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">PTACallGraph::iterator</a> it = graph-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>();</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">PTACallGraph::iterator</a> eit = graph-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>();</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  totalNode++;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">if</span>(callgraphSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a5d699af73b1e7ad4e3a5f6d26b8b6d15">isInCycle</a>(it->first))</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  sccRepNodeSet.insert(callgraphSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">repNode</a>(it->first));</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  nodeInCycle++;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& subNodes = callgraphSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a6ab5eff6a576e6d8703c1ea29b7f425d">subNodes</a>(it->first);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">if</span>(subNodes.<a class="code" href="classSVF_1_1SparseBitVector.html#a9f96e6a886fa69e07cda5dbfaed8b7c9">count</a>() > maxNodeInCycle)</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  maxNodeInCycle = subNodes.<a class="code" href="classSVF_1_1SparseBitVector.html#a9f96e6a886fa69e07cda5dbfaed8b7c9">count</a>();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> edgeIt = it->second->InEdgeBegin();</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> edgeEit = it->second->InEdgeEnd();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">for</span> (; edgeIt != edgeEit; ++edgeIt)</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a> *edge = *edgeIt;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  totalEdge+= edge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#af0e9f86be3cf263b868f80d374641fc9">getDirectCalls</a>().size() + edge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#a76aa19edf03a4cacfa3e27a21abfcd07">getIndirectCalls</a>().size();</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">if</span>(callgraphSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">repNode</a>(edge-><a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>()) == callgraphSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">repNode</a>(edge-><a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>()))</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  edgeInCycle+=edge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#af0e9f86be3cf263b868f80d374641fc9">getDirectCalls</a>().size() + edge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#a76aa19edf03a4cacfa3e27a21abfcd07">getIndirectCalls</a>().size();</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  totalCycle = sccRepNodeSet.size();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">"TotalNode"</span>] = totalNode;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">"TotalCycle"</span>] = totalCycle;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">"NodeInCycle"</span>] = nodeInCycle;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">"MaxNodeInCycle"</span>] = maxNodeInCycle;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">"TotalEdge"</span>] = totalEdge;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">"CalRetPairInCycle"</span>] = edgeInCycle;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <a class="code" href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">PTAStat::printStat</a>(<span class="stringliteral">"CallGraph Stats"</span>);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> </div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keyword">delete</span> callgraphSCC;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf"> 292</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">PTAStat::printStat</a>(<span class="keywordtype">string</span> statname)</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1PTAStat.html#a194734855aa1c9e0ba891f1085d50d5d">moduleName</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()->getModule()->getModuleIdentifier());</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  std::vector<std::string> names = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af54e70082388bbd70868250aaa0bc86b">SVFUtil::split</a>(moduleName,<span class="charliteral">'/'</span>);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">if</span> (names.size() > 1)</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  moduleName = names[1];</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  names = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af54e70082388bbd70868250aaa0bc86b">SVFUtil::split</a>(moduleName,<span class="charliteral">'.'</span>);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">if</span> (names.size() > 0)</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  moduleName = names[0];</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"\n*********"</span> << statname << <span class="stringliteral">"***************\n"</span>;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"################ (program : "</span> << moduleName << <span class="stringliteral">")###############\n"</span>;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>().flags(std::ios::left);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordtype">unsigned</span> field_width = 20;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">for</span>(NUMStatMap::iterator it = <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>.begin(), eit = <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="comment">// format out put with width 20 space</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  std::cout << std::setw(field_width) << it->first << it->second << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"-------------------------------------------------------\n"</span>;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">for</span>(TIMEStatMap::iterator it = <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>.begin(), eit = <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="comment">// format out put with width 20 space</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << std::setw(field_width) << it->first << it->second << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">for</span>(NUMStatMap::iterator it = <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>.begin(), eit = <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="comment">// format out put with width 20 space</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << std::setw(field_width) << it->first << it->second << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"#######################################################"</span> << std::endl;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>().flush();</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>.clear();</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>.clear();</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>.clear();</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="comment">/* REFACTOR-TODO</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="comment">void PTAStat::bitcastInstStat()</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="comment">{</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="comment"> SVFModule* module = pta->getModule();</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="comment"> u32_t numberOfBitCast = 0;</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> <span class="comment"> for (SVFModule::llvm_const_iterator funIter = module->llvmFunBegin(), funEiter = module->llvmFunEnd();</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="comment"> funIter != funEiter; ++funIter)</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="comment"> {</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="comment"> const Function* func = *funIter;</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <span class="comment"> for (Function::const_iterator bbIt = func->begin(), bbEit = func->end();</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="comment"> bbIt != bbEit; ++bbIt)</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="comment"> {</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="comment"> const BasicBlock& bb = *bbIt;</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="comment"> for (BasicBlock::const_iterator instIt = bb.begin(), instEit = bb.end();</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="comment"> instIt != instEit; ++instIt)</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="comment"> {</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> <span class="comment"> const Instruction& inst = *instIt;</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="comment"> if (const BitCastInst* bitcast = SVFUtil::dyn_cast<BitCastInst>(&inst))</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> <span class="comment"> {</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> <span class="comment"> if (SVFUtil::isa<PointerType>(bitcast->getSrcTy()))</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> <span class="comment"> numberOfBitCast++;</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="comment"> }</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> <span class="comment"> }</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <span class="comment"> }</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="comment"> }</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="comment"></span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> <span class="comment"> generalNumMap["BitCastNumber"] = numberOfBitCast;</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <span class="comment">}</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> <span class="comment">*/</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#ada838d9e03f2be4fb3ceffab3983b564"> 366</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTAStat.html#ada838d9e03f2be4fb3ceffab3983b564">PTAStat::branchStat</a>()</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module = <a class="code" href="classSVF_1_1PTAStat.html#a608441b95be0861d8c1b0a035281f4d5">pta</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>();</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfBB_2Succ = 0;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfBB_3Succ = 0;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#ab86e221a93bec67a2ecb7cb53315f569">SVFModule::llvm_const_iterator</a> funIter = module-><a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), funEiter = module-><a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>();</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  funIter != funEiter; ++funIter)</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = *funIter;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">for</span> (Function::const_iterator bbIt = func->begin(), bbEit = func->end();</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  bbIt != bbEit; ++bbIt)</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>& bb = *bbIt;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfSucc = bb.getTerminator()->getNumSuccessors();</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">if</span> (numOfSucc == 2)</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  numOfBB_2Succ++;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (numOfSucc > 2)</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  numOfBB_3Succ++;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  }</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<span class="stringliteral">"BBWith2Succ"</span>] = numOfBB_2Succ;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<span class="stringliteral">"BBWith3Succ"</span>] = numOfBB_3Succ;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
|
|
69
|
+
<a href="PTAStat_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> <span class="comment">//===- PTAStat.cpp -- Base class for statistics in SVF-----------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <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> <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> <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> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <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> <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> <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> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <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> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * PTAStat.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: Oct 13, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <iomanip></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "<a class="code" href="PTACallGraph_8h.html">Graphs/PTACallGraph.h</a>"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="PTAStat_8h.html">Util/PTAStat.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="PointerAnalysisImpl_8h.html">MemoryModel/PointerAnalysisImpl.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="SVFIR_8h.html">MemoryModel/SVFIR.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="Options_8h.html">Util/Options.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a25001a6d794d91056f37d954d9660910">PTAStat:: TotalAnalysisTime</a> = <span class="stringliteral">"TotalTime"</span>; </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ad4c1cf3750341f73987c37745f3bd2aa">PTAStat:: SCCDetectionTime</a> = <span class="stringliteral">"SCCDetectTime"</span>; </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a8c4101e697057269def501d14a987287">PTAStat:: SCCMergeTime</a> = <span class="stringliteral">"SCCMergeTime"</span>; </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#aeb6a52c31ecd004670e85f24b01d75d6">PTAStat:: ProcessLoadStoreTime</a> = <span class="stringliteral">"LoadStoreTime"</span>; </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a95a0a7861731072baeaf75354531875f">PTAStat:: ProcessCopyGepTime</a> = <span class="stringliteral">"CopyGepTime"</span>; </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a8aedfeb35f76e6d33135637156468894">PTAStat:: UpdateCallGraphTime</a> = <span class="stringliteral">"UpdateCGTime"</span>; </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a1a4d418fd9e5413e7ffbbfe57f5e0560">PTAStat:: TotalNumOfPointers</a> = <span class="stringliteral">"TotalPointers"</span>; </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#acd9848f15aa359550e86c7b857df84ed">PTAStat:: TotalNumOfObjects</a> = <span class="stringliteral">"TotalObjects"</span>; </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ac0e0a1c49d33e02f5cc0f21565ce627d">PTAStat:: TotalNumOfFieldObjects</a> = <span class="stringliteral">"TotalFieldObjects"</span>; </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#af6a6e3ea4c7f8e1c984bea8d5fb9a7c0">PTAStat:: MaxStructSize</a> = <span class="stringliteral">"MaxStructSize"</span>; </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a3afc0a36232a0388d8aa42c68219cb26">PTAStat:: TotalNumOfEdges</a> = <span class="stringliteral">"TotalSVFStmts"</span>; </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ae9952b7456b5102113d1fee4d9d7801a">PTAStat:: NumOfFunctionObjs</a> = <span class="stringliteral">"FunctionObjs"</span>; </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a57574c85a5a875a05ef83d3c916cf3e5">PTAStat:: NumOfGlobalObjs</a> = <span class="stringliteral">"GlobalObjs"</span>; </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a4aff48eaa2045ee619a8ea793a9234b8">PTAStat:: NumOfHeapObjs</a> = <span class="stringliteral">"HeapObjs"</span>; </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ae05503909688a17dc1f282d1d029d24e">PTAStat:: NumOfStackObjs</a> = <span class="stringliteral">"StackObjs"</span>; </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ad1a7e7aec8f272017be7d0b6acda86a4">PTAStat::NumberOfFieldInsensitiveObj</a> = <span class="stringliteral">"FIObjNum"</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ab62eb21c7dc03f68b0509c31451b2e98">PTAStat::NumberOfFieldSensitiveObj</a> = <span class="stringliteral">"FSObjNum"</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a95edd35cec92fa4cacc8b59b5eecc827">PTAStat:: NumOfObjsHasVarStruct</a> = <span class="stringliteral">"VarStructObj"</span>; </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a78693e8bf93d712eb76c9d6dc0c45ae6">PTAStat:: NumOfObjsHasVarArray</a> = <span class="stringliteral">"VarArrayObj"</span>; </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a918051b1d0eb4f49c349352408cc9751">PTAStat:: NumOfObjsHasConstStruct</a> = <span class="stringliteral">"ConstStructObj"</span>; </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#adb31b163f0cbb9d9ce207ef5d8c075fa">PTAStat:: NumOfObjsHasConstArray</a> = <span class="stringliteral">"ConstArrayObj"</span>; </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a9014371b8ed95ab8135eed2a7fa945f1">PTAStat:: NumOfNonPtrObjs</a> = <span class="stringliteral">"NonPtrObj"</span>; </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ae74458d96423e4a7391fe8697d5a9a67">PTAStat:: NumOfConstantObjs</a> = <span class="stringliteral">"ConstantObj"</span>; </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ac5bf59a0a7a760c9fec5f22dedec5eb6">PTAStat:: NumOfAddrs</a> = <span class="stringliteral">"AddrsNum"</span>; </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a4aa7356142f51d942063be5a2910940f">PTAStat:: NumOfLoads</a> = <span class="stringliteral">"LoadsNum"</span>; </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a656ad9980ff05af396ed6754c50916e7">PTAStat:: NumOfStores</a> = <span class="stringliteral">"StoresNum"</span>; </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a97a8b662356fc89cdd2cb9463fa5578b">PTAStat:: NumOfCopys</a> = <span class="stringliteral">"CopysNum"</span>; </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#acc5e4740e11cb6f9794723e5f61ab63b">PTAStat:: NumOfGeps</a> = <span class="stringliteral">"GepsNum"</span>; </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a6cbeca77d0681f7da28979cbd0f661b2">PTAStat:: NumOfCalls</a> = <span class="stringliteral">"CallsNum"</span>; </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a0a552611fcd20e1310290bdae404a514">PTAStat:: NumOfReturns</a> = <span class="stringliteral">"ReturnsNum"</span>; </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a0de03cdb382b353c6c1495c0f80cfe19">PTAStat:: NumOfProcessedAddrs</a> = <span class="stringliteral">"AddrProcessed"</span>; </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a17531fa1df42df0b19191d61853380d9">PTAStat:: NumOfProcessedLoads</a> = <span class="stringliteral">"LoadProcessed"</span>; </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a5b9bc0e9dac6ac97199476f6b7ea1edf">PTAStat:: NumOfProcessedStores</a> = <span class="stringliteral">"StoreProcessed"</span>; </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ad30b36fb1884d1ef0b01c3b36a245211">PTAStat:: NumOfProcessedCopys</a> = <span class="stringliteral">"CopyProcessed"</span>; </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#aaa9d98f868c0724cb57c6934e783d1e5">PTAStat:: NumOfProcessedGeps</a> = <span class="stringliteral">"GepProcessed"</span>; </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a07a1db62ddba50bda787b2985ef8d135">PTAStat::NumOfSfr</a> = <span class="stringliteral">"NumOfSFRs"</span>; </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a1745e5c3c026a130a70954da9c0074b1">PTAStat::NumOfFieldExpand</a> = <span class="stringliteral">"NumOfFieldExpand"</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a218748b401bdd3d5eebd45eea0026b12">PTAStat:: NumOfPointers</a> = <span class="stringliteral">"Pointers"</span>; </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a164249b9d35606387e628529c643d119">PTAStat:: NumOfGepFieldPointers</a> = <span class="stringliteral">"DYFieldPtrs"</span>; </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a5c09f41916e40d784a63e301584511f9">PTAStat:: NumOfMemObjects</a> = <span class="stringliteral">"MemObjects"</span>; </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a16f9bdb5387471d0bd825c4a9cbcb22e">PTAStat:: NumOfGepFieldObjects</a> = <span class="stringliteral">"DYFieldObjs"</span>; </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#adb0edbe88a74e5e89921bcfafa4759c6">PTAStat:: AveragePointsToSetSize</a> = <span class="stringliteral">"AvgPtsSetSize"</span>; </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a1649c9f893c5b9ec2d57a399bc050030">PTAStat:: AverageTopLevPointsToSetSize</a> = <span class="stringliteral">"AvgTopLvlPtsSize"</span>; </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#af2b45aab2eee96a1cabba3025e4375a2">PTAStat:: MaxPointsToSetSize</a> = <span class="stringliteral">"MaxPtsSetSize"</span>; </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ae95fb0771a71ead27da79a45cac47a36">PTAStat:: NumOfIterations</a> = <span class="stringliteral">"Iterations"</span>; </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a618707c52da086e04f5e7bff31794cf3">PTAStat:: NumOfIndirectCallSites</a> = <span class="stringliteral">"IndCallSites"</span>; </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ad51d2bd924f049e440b3d0dd0d423524">PTAStat:: NumOfIndirectEdgeSolved</a> = <span class="stringliteral">"IndEdgeSolved"</span>; </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ad1731b88c24bb79728f62cd3e9c55699">PTAStat:: NumOfSCCDetection</a> = <span class="stringliteral">"NumOfSCCDetect"</span>; </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ac518843a4148ecc45027ccc19a690c05">PTAStat:: NumOfCycles</a> = <span class="stringliteral">"TotalCycleNum"</span>; </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#aefcc3638fac7034ab3542be8eb01ab58">PTAStat:: NumOfPWCCycles</a> = <span class="stringliteral">"TotalPWCCycleNum"</span>; </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#aea3e95097b3b9d326bef0d36f17e51a5">PTAStat:: NumOfNodesInCycles</a> = <span class="stringliteral">"NodesInCycles"</span>; </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#ab754f7768ffcd6f232b8cdf0fef6fc4e">PTAStat:: MaxNumOfNodesInSCC</a> = <span class="stringliteral">"MaxNodesInSCC"</span>; </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classSVF_1_1PTAStat.html#a1211e1c7f16b715f32ecdef83f39a8c6">PTAStat:: NumOfNullPointer</a> = <span class="stringliteral">"NullPointer"</span>; </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#ac9b65b591200c16c420fbd26710b448f"> 108</a></span> <a class="code" href="classSVF_1_1PTAStat.html#ac9b65b591200c16c420fbd26710b448f">PTAStat::PTAStat</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* <a class="code" href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a>) : startTime(0), endTime(0), pta(p)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  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="l00111"></a><span class="lineno"> 111</span>  && <span class="stringliteral">"PTAStat: unknown clock type!"</span>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc"> 114</a></span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">PTAStat::getClk</a>(<span class="keywordtype">bool</span> mark)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  std::cout << <a class="code" href="classSVF_1_1Options.html#a5cfcf1ddc44ff175c4766f88bf204c03">Options::MarkedClocksOnly</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span> (Options::MarkedClocksOnly && !mark) <span class="keywordflow">return</span> 0.0;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <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="l00120"></a><span class="lineno"> 120</span>  {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keyword">struct </span>timespec time;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  clock_gettime(CLOCK_MONOTONIC, &time);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <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="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <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="l00126"></a><span class="lineno"> 126</span>  {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">return</span> <a class="code" href="SVFBasicTypes_8h.html#af091e361d7961cb895ff2101eceed953">CLOCK_IN_MS</a>();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"PTAStat::getClk: unknown clock type"</span>);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  abort();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#acfed70588cf921694db35990ec3c7497"> 134</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTAStat.html#acfed70588cf921694db35990ec3c7497">PTAStat::performStat</a>()</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="classSVF_1_1PTAStat.html#a1772bc87370b5625f71edd4476277064">callgraphStat</a>();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>();</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFunction = 0;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfGlobal = 0;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfStack = 0;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfHeap = 0;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfHasVarArray = 0;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfHasVarStruct = 0;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfHasConstArray = 0;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfHasConstStruct = 0;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfScalar = 0;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfConstant = 0;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fiObjNumber = 0;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fsObjNumber = 0;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<SymID></a> memObjSet;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> it = pag-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = pag-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = it->second;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>* obj = SVFUtil::dyn_cast<ObjVar>(node))</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = obj->getMemObj();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">if</span> (memObjSet.insert(mem-><a class="code" href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">getId</a>()).second == <span class="keyword">false</span>)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#a7b890ca9e93b1c61cc6437b7e6a82a8c">isBlackHoleObj</a>())</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#ae1d14e2bf0be36cdadebf119822f607b">isFunction</a>())</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  numOfFunction++;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#a40462512a99eb258d8cd442c38d812b4">isGlobalObj</a>())</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  numOfGlobal++;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#af7316c697eafc71d5fc93108da4e2cee">isStack</a>())</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  numOfStack++;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#a898c5bb3956402578266a6fb142e02b1">isHeap</a>())</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  numOfHeap++;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#a616e9f4d6f82a253f94391c47668b9a6">isVarArray</a>())</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  numOfHasVarArray++;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#ad1966c52f95775ac7d65c0ba6632c3cf">isVarStruct</a>())</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  numOfHasVarStruct++;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#a7f828731597450f1d43b61413ab0e7bb">isConstantArray</a>())</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  numOfHasConstArray++;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#a019a77516c403f1f3cc72917b810a41f">isConstantStruct</a>())</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  numOfHasConstStruct++;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#a6dae1b3429c6049f0153ec006d329082">hasPtrObj</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  numOfScalar++;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#a1a4ff4aaaf2573240a318e1b79328cd0">isConstDataOrConstGlobal</a>())</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  numOfConstant++;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">if</span> (mem-><a class="code" href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">isFieldInsensitive</a>())</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  fiObjNumber++;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  fsObjNumber++;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PTAStat.html#a608441b95be0861d8c1b0a035281f4d5">pta</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#a108380f6f0b67654bb7c7676686096c8">isLocalVarInRecursiveFun</a>(node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()))</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <a class="code" href="classSVF_1_1PTAStat.html#a5b4095f427c9c7b9ec0db497ba33baea">localVarInRecursion</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a1a4d418fd9e5413e7ffbbfe57f5e0560">TotalNumOfPointers</a>] = pag-><a class="code" href="classSVF_1_1IRGraph.html#a0212f3fe2f37363e8060f292c8cf7668">getValueNodeNum</a>() + pag-><a class="code" href="classSVF_1_1SVFIR.html#a8a24e0bf9f95fc1519d4013e0e82dec9">getFieldValNodeNum</a>();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#acd9848f15aa359550e86c7b857df84ed">TotalNumOfObjects</a>] = pag-><a class="code" href="classSVF_1_1IRGraph.html#a82528aff779ccf8f723f57507dd2d991">getObjectNodeNum</a>();</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ac0e0a1c49d33e02f5cc0f21565ce627d">TotalNumOfFieldObjects</a>] = pag-><a class="code" href="classSVF_1_1SVFIR.html#a3bbaafd80dfcae6ccc82c3d8b9d303ea">getFieldObjNodeNum</a>();</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#af6a6e3ea4c7f8e1c984bea8d5fb9a7c0">MaxStructSize</a>] = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-><a class="code" href="classSVF_1_1SymbolTableInfo.html#abc7e567209010286a68634c700d76cca">getMaxStructSize</a>();</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a3afc0a36232a0388d8aa42c68219cb26">TotalNumOfEdges</a>] = pag-><a class="code" href="classSVF_1_1IRGraph.html#a821df0fcb66e4f0a5b10c295c24b7c2c">getPAGEdgeNum</a>();</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<span class="stringliteral">"TotalPTASVFStmts"</span>] = pag-><a class="code" href="classSVF_1_1IRGraph.html#a51485004eb28aab6620801205d13ef1b">getPTAPAGEdgeNum</a>();</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ad1a7e7aec8f272017be7d0b6acda86a4">NumberOfFieldInsensitiveObj</a>] = fiObjNumber;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ab62eb21c7dc03f68b0509c31451b2e98">NumberOfFieldSensitiveObj</a>] = fsObjNumber;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ac5bf59a0a7a760c9fec5f22dedec5eb6">NumOfAddrs</a>] = pag-><a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a>).size();</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a4aa7356142f51d942063be5a2910940f">NumOfLoads</a>] = pag-><a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>).size();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a656ad9980ff05af396ed6754c50916e7">NumOfStores</a>] = pag-><a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>).size();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a97a8b662356fc89cdd2cb9463fa5578b">NumOfCopys</a>] = pag-><a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a>).size();</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#acc5e4740e11cb6f9794723e5f61ab63b">NumOfGeps</a>] = pag-><a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>).size();</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a6cbeca77d0681f7da28979cbd0f661b2">NumOfCalls</a>] = pag-><a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a>).size();</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a0a552611fcd20e1310290bdae404a514">NumOfReturns</a>] = pag-><a class="code" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">getSVFStmtSet</a>(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a>).size();</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ae9952b7456b5102113d1fee4d9d7801a">NumOfFunctionObjs</a>] = numOfFunction;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a57574c85a5a875a05ef83d3c916cf3e5">NumOfGlobalObjs</a>] = numOfGlobal;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a4aff48eaa2045ee619a8ea793a9234b8">NumOfHeapObjs</a>] = numOfHeap;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ae05503909688a17dc1f282d1d029d24e">NumOfStackObjs</a>] = numOfStack;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a95edd35cec92fa4cacc8b59b5eecc827">NumOfObjsHasVarStruct</a>] = numOfHasVarStruct;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a78693e8bf93d712eb76c9d6dc0c45ae6">NumOfObjsHasVarArray</a>] = numOfHasVarArray;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a918051b1d0eb4f49c349352408cc9751">NumOfObjsHasConstStruct</a>] = numOfHasConstStruct;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#adb31b163f0cbb9d9ce207ef5d8c075fa">NumOfObjsHasConstArray</a>] = numOfHasConstArray;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a9014371b8ed95ab8135eed2a7fa945f1">NumOfNonPtrObjs</a>] = numOfScalar;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#ae74458d96423e4a7391fe8697d5a9a67">NumOfConstantObjs</a>] = numOfConstant;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<a class="code" href="classSVF_1_1PTAStat.html#a618707c52da086e04f5e7bff31794cf3">NumOfIndirectCallSites</a>] = pag-><a class="code" href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0">getIndirectCallsites</a>().size();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<span class="stringliteral">"TotalCallSite"</span>] = pag-><a class="code" href="classSVF_1_1SVFIR.html#aa530e33657f68fc2e8eae9435ce430cb">getCallSiteSet</a>().size();</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<span class="stringliteral">"LocalVarInRecur"</span>] = <a class="code" href="classSVF_1_1PTAStat.html#a5b4095f427c9c7b9ec0db497ba33baea">localVarInRecursion</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#a9f96e6a886fa69e07cda5dbfaed8b7c9">count</a>();</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="comment">// REFACTOR-TODO bitcastInstStat();</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <a class="code" href="classSVF_1_1PTAStat.html#ada838d9e03f2be4fb3ceffab3983b564">branchStat</a>();</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <a class="code" href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">printStat</a>(<span class="stringliteral">"General Stats"</span>);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#a1772bc87370b5625f71edd4476277064"> 237</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTAStat.html#a1772bc87370b5625f71edd4476277064">PTAStat::callgraphStat</a>()</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* graph = <a class="code" href="classSVF_1_1PTAStat.html#a608441b95be0861d8c1b0a035281f4d5">pta</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>();</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <a class="code" href="classSVF_1_1SCCDetection.html">PointerAnalysis::CallGraphSCC</a>* callgraphSCC = <span class="keyword">new</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ac4ad73782f42f90ad7ac9c66edb27c69">PointerAnalysis::CallGraphSCC</a>(graph);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  callgraphSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">find</a>();</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordtype">unsigned</span> totalNode = 0;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordtype">unsigned</span> totalCycle = 0;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordtype">unsigned</span> nodeInCycle = 0;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordtype">unsigned</span> maxNodeInCycle = 0;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordtype">unsigned</span> totalEdge = 0;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordtype">unsigned</span> edgeInCycle = 0;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <a class="code" href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">NodeSet</a> sccRepNodeSet;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">PTACallGraph::iterator</a> it = graph-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>();</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">PTACallGraph::iterator</a> eit = graph-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>();</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  totalNode++;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">if</span>(callgraphSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a5d699af73b1e7ad4e3a5f6d26b8b6d15">isInCycle</a>(it->first))</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  sccRepNodeSet.insert(callgraphSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">repNode</a>(it->first));</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  nodeInCycle++;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& subNodes = callgraphSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a6ab5eff6a576e6d8703c1ea29b7f425d">subNodes</a>(it->first);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">if</span>(subNodes.<a class="code" href="classSVF_1_1SparseBitVector.html#a9f96e6a886fa69e07cda5dbfaed8b7c9">count</a>() > maxNodeInCycle)</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  maxNodeInCycle = subNodes.<a class="code" href="classSVF_1_1SparseBitVector.html#a9f96e6a886fa69e07cda5dbfaed8b7c9">count</a>();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> edgeIt = it->second->InEdgeBegin();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> edgeEit = it->second->InEdgeEnd();</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">for</span> (; edgeIt != edgeEit; ++edgeIt)</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a> *edge = *edgeIt;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  totalEdge+= edge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#af0e9f86be3cf263b868f80d374641fc9">getDirectCalls</a>().size() + edge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#a76aa19edf03a4cacfa3e27a21abfcd07">getIndirectCalls</a>().size();</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">if</span>(callgraphSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">repNode</a>(edge-><a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>()) == callgraphSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">repNode</a>(edge-><a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>()))</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  edgeInCycle+=edge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#af0e9f86be3cf263b868f80d374641fc9">getDirectCalls</a>().size() + edge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#a76aa19edf03a4cacfa3e27a21abfcd07">getIndirectCalls</a>().size();</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> </div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  totalCycle = sccRepNodeSet.size();</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">"TotalNode"</span>] = totalNode;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">"TotalCycle"</span>] = totalCycle;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">"NodeInCycle"</span>] = nodeInCycle;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">"MaxNodeInCycle"</span>] = maxNodeInCycle;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">"TotalEdge"</span>] = totalEdge;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">"CalRetPairInCycle"</span>] = edgeInCycle;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <a class="code" href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">PTAStat::printStat</a>(<span class="stringliteral">"CallGraph Stats"</span>);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keyword">delete</span> callgraphSCC;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf"> 293</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">PTAStat::printStat</a>(<span class="keywordtype">string</span> statname)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1PTAStat.html#a194734855aa1c9e0ba891f1085d50d5d">moduleName</a>(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()->getModule()->getModuleIdentifier());</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  std::vector<std::string> names = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af54e70082388bbd70868250aaa0bc86b">SVFUtil::split</a>(moduleName,<span class="charliteral">'/'</span>);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">if</span> (names.size() > 1)</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  moduleName = names[1];</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  names = <a class="code" href="namespaceSVF_1_1SVFUtil.html#af54e70082388bbd70868250aaa0bc86b">SVFUtil::split</a>(moduleName,<span class="charliteral">'.'</span>);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">if</span> (names.size() > 0)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  moduleName = names[0];</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"\n*********"</span> << statname << <span class="stringliteral">"***************\n"</span>;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"################ (program : "</span> << moduleName << <span class="stringliteral">")###############\n"</span>;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>().flags(std::ios::left);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordtype">unsigned</span> field_width = 20;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">for</span>(NUMStatMap::iterator it = <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>.begin(), eit = <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="comment">// format out put with width 20 space</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  std::cout << std::setw(field_width) << it->first << it->second << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"-------------------------------------------------------\n"</span>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">for</span>(TIMEStatMap::iterator it = <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>.begin(), eit = <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="comment">// format out put with width 20 space</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << std::setw(field_width) << it->first << it->second << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  }</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">for</span>(NUMStatMap::iterator it = <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>.begin(), eit = <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="comment">// format out put with width 20 space</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << std::setw(field_width) << it->first << it->second << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <span class="stringliteral">"#######################################################"</span> << std::endl;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>().flush();</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>.clear();</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>.clear();</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>.clear();</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="comment">/* REFACTOR-TODO</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="comment">void PTAStat::bitcastInstStat()</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="comment">{</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="comment"> SVFModule* module = pta->getModule();</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> <span class="comment"> u32_t numberOfBitCast = 0;</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="comment"> for (SVFModule::llvm_const_iterator funIter = module->llvmFunBegin(), funEiter = module->llvmFunEnd();</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="comment"> funIter != funEiter; ++funIter)</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="comment"> {</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <span class="comment"> const Function* func = *funIter;</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="comment"> for (Function::const_iterator bbIt = func->begin(), bbEit = func->end();</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="comment"> bbIt != bbEit; ++bbIt)</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="comment"> {</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="comment"> const BasicBlock& bb = *bbIt;</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="comment"> for (BasicBlock::const_iterator instIt = bb.begin(), instEit = bb.end();</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="comment"> instIt != instEit; ++instIt)</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> <span class="comment"> {</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="comment"> const Instruction& inst = *instIt;</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> <span class="comment"> if (const BitCastInst* bitcast = SVFUtil::dyn_cast<BitCastInst>(&inst))</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> <span class="comment"> {</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> <span class="comment"> if (SVFUtil::isa<PointerType>(bitcast->getSrcTy()))</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="comment"> numberOfBitCast++;</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> <span class="comment"> }</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <span class="comment"> }</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="comment"> }</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="comment"> }</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> <span class="comment"></span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <span class="comment"> generalNumMap["BitCastNumber"] = numberOfBitCast;</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> <span class="comment">}</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <span class="comment">*/</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#ada838d9e03f2be4fb3ceffab3983b564"> 367</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTAStat.html#ada838d9e03f2be4fb3ceffab3983b564">PTAStat::branchStat</a>()</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module = <a class="code" href="classSVF_1_1PTAStat.html#a608441b95be0861d8c1b0a035281f4d5">pta</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>();</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfBB_2Succ = 0;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfBB_3Succ = 0;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#ab86e221a93bec67a2ecb7cb53315f569">SVFModule::llvm_const_iterator</a> funIter = module-><a class="code" href="classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951">llvmFunBegin</a>(), funEiter = module-><a class="code" href="classSVF_1_1SVFModule.html#af38d0f831967d6d8391a4c84e58d6519">llvmFunEnd</a>();</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  funIter != funEiter; ++funIter)</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = *funIter;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">for</span> (Function::const_iterator bbIt = func->begin(), bbEit = func->end();</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  bbIt != bbEit; ++bbIt)</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>& bb = *bbIt;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfSucc = bb.getTerminator()->getNumSuccessors();</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keywordflow">if</span> (numOfSucc == 2)</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  numOfBB_2Succ++;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (numOfSucc > 2)</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  numOfBB_3Succ++;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  }</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> </div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<span class="stringliteral">"BBWith2Succ"</span>] = numOfBB_2Succ;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<span class="stringliteral">"BBWith3Succ"</span>] = numOfBB_3Succ;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1PTAStat_html_aea3e95097b3b9d326bef0d36f17e51a5"><div class="ttname"><a href="classSVF_1_1PTAStat.html#aea3e95097b3b9d326bef0d36f17e51a5">SVF::PTAStat::NumOfNodesInCycles</a></div><div class="ttdeci">static const char * NumOfNodesInCycles</div><div class="ttdoc">Number of nodes in cycles detected. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00116">PTAStat.h:116</a></div></div>
|
|
71
71
|
<div class="ttc" id="classSVF_1_1MemObj_html_a7b890ca9e93b1c61cc6437b7e6a82a8c"><div class="ttname"><a href="classSVF_1_1MemObj.html#a7b890ca9e93b1c61cc6437b7e6a82a8c">SVF::MemObj::isBlackHoleObj</a></div><div class="ttdeci">bool isBlackHoleObj() const</div><div class="ttdoc">Whether it is a black hole object. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00700">SymbolTableInfo.cpp:700</a></div></div>
|
|
72
72
|
<div class="ttc" id="cJSON_8cpp_html_a009ef1d888ab6dbe77e6b42b0b39f1ae"><div class="ttname"><a href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a></div><div class="ttdeci">cJSON * p</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02559">cJSON.cpp:2559</a></div></div>
|
|
@@ -158,11 +158,11 @@ $(function() {
|
|
|
158
158
|
<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>
|
|
159
159
|
<div class="ttc" id="classSVF_1_1PTAStat_html_aefcc3638fac7034ab3542be8eb01ab58"><div class="ttname"><a href="classSVF_1_1PTAStat.html#aefcc3638fac7034ab3542be8eb01ab58">SVF::PTAStat::NumOfPWCCycles</a></div><div class="ttdeci">static const char * NumOfPWCCycles</div><div class="ttdoc">Number of scc cycles detected. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00115">PTAStat.h:115</a></div></div>
|
|
160
160
|
<div class="ttc" id="PointerAnalysisImpl_8h_html"><div class="ttname"><a href="PointerAnalysisImpl_8h.html">PointerAnalysisImpl.h</a></div></div>
|
|
161
|
-
<div class="ttc" id="classSVF_1_1PTAStat_html_acfed70588cf921694db35990ec3c7497"><div class="ttname"><a href="classSVF_1_1PTAStat.html#acfed70588cf921694db35990ec3c7497">SVF::PTAStat::performStat</a></div><div class="ttdeci">virtual void performStat()</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#
|
|
161
|
+
<div class="ttc" id="classSVF_1_1PTAStat_html_acfed70588cf921694db35990ec3c7497"><div class="ttname"><a href="classSVF_1_1PTAStat.html#acfed70588cf921694db35990ec3c7497">SVF::PTAStat::performStat</a></div><div class="ttdeci">virtual void performStat()</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00134">PTAStat.cpp:134</a></div></div>
|
|
162
162
|
<div class="ttc" id="classSVF_1_1IRGraph_html_a821df0fcb66e4f0a5b10c295c24b7c2c"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a821df0fcb66e4f0a5b10c295c24b7c2c">SVF::IRGraph::getPAGEdgeNum</a></div><div class="ttdeci">u32_t getPAGEdgeNum() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00194">IRGraph.h:194</a></div></div>
|
|
163
163
|
<div class="ttc" id="classSVF_1_1MemObj_html_ad1966c52f95775ac7d65c0ba6632c3cf"><div class="ttname"><a href="classSVF_1_1MemObj.html#ad1966c52f95775ac7d65c0ba6632c3cf">SVF::MemObj::isVarStruct</a></div><div class="ttdeci">bool isVarStruct() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00784">SymbolTableInfo.cpp:784</a></div></div>
|
|
164
164
|
<div class="ttc" id="Options_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
|
|
165
|
-
<div class="ttc" id="classSVF_1_1PTAStat_html_ada838d9e03f2be4fb3ceffab3983b564"><div class="ttname"><a href="classSVF_1_1PTAStat.html#ada838d9e03f2be4fb3ceffab3983b564">SVF::PTAStat::branchStat</a></div><div class="ttdeci">void branchStat()</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#
|
|
165
|
+
<div class="ttc" id="classSVF_1_1PTAStat_html_ada838d9e03f2be4fb3ceffab3983b564"><div class="ttname"><a href="classSVF_1_1PTAStat.html#ada838d9e03f2be4fb3ceffab3983b564">SVF::PTAStat::branchStat</a></div><div class="ttdeci">void branchStat()</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00367">PTAStat.cpp:367</a></div></div>
|
|
166
166
|
<div class="ttc" id="classSVF_1_1PTAStat_html_ab754f7768ffcd6f232b8cdf0fef6fc4e"><div class="ttname"><a href="classSVF_1_1PTAStat.html#ab754f7768ffcd6f232b8cdf0fef6fc4e">SVF::PTAStat::MaxNumOfNodesInSCC</a></div><div class="ttdeci">static const char * MaxNumOfNodesInSCC</div><div class="ttdoc">max Number of nodes in one scc </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00117">PTAStat.h:117</a></div></div>
|
|
167
167
|
<div class="ttc" id="classSVF_1_1PTAStat_html_ad30b36fb1884d1ef0b01c3b36a245211"><div class="ttname"><a href="classSVF_1_1PTAStat.html#ad30b36fb1884d1ef0b01c3b36a245211">SVF::PTAStat::NumOfProcessedCopys</a></div><div class="ttdeci">static const char * NumOfProcessedCopys</div><div class="ttdoc">SVFIR processed copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00077">PTAStat.h:77</a></div></div>
|
|
168
168
|
<div class="ttc" id="classSVF_1_1MemObj_html_a898c5bb3956402578266a6fb142e02b1"><div class="ttname"><a href="classSVF_1_1MemObj.html#a898c5bb3956402578266a6fb142e02b1">SVF::MemObj::isHeap</a></div><div class="ttdeci">bool isHeap() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00769">SymbolTableInfo.cpp:769</a></div></div>
|
|
@@ -176,7 +176,7 @@ $(function() {
|
|
|
176
176
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a108380f6f0b67654bb7c7676686096c8"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a108380f6f0b67654bb7c7676686096c8">SVF::PointerAnalysis::isLocalVarInRecursiveFun</a></div><div class="ttdeci">bool isLocalVarInRecursiveFun(NodeID id) const</div><div class="ttdoc">Whether a local variable is in function recursions. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00148">PointerAnalysis.cpp:148</a></div></div>
|
|
177
177
|
<div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVF::SVFStmt::Store</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
|
|
178
178
|
<div class="ttc" id="classSVF_1_1MemObj_html_a3ab6f65ffbf6442daac4d3f70f2d3cb1"><div class="ttname"><a href="classSVF_1_1MemObj.html#a3ab6f65ffbf6442daac4d3f70f2d3cb1">SVF::MemObj::getId</a></div><div class="ttdeci">SymID getId() const</div><div class="ttdoc">Get the memory object id. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00408">SymbolTableInfo.h:408</a></div></div>
|
|
179
|
-
<div class="ttc" id="classSVF_1_1PTAStat_html_a1772bc87370b5625f71edd4476277064"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a1772bc87370b5625f71edd4476277064">SVF::PTAStat::callgraphStat</a></div><div class="ttdeci">virtual void callgraphStat()</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#
|
|
179
|
+
<div class="ttc" id="classSVF_1_1PTAStat_html_a1772bc87370b5625f71edd4476277064"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a1772bc87370b5625f71edd4476277064">SVF::PTAStat::callgraphStat</a></div><div class="ttdeci">virtual void callgraphStat()</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00237">PTAStat.cpp:237</a></div></div>
|
|
180
180
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
|
|
181
181
|
<div class="ttc" id="classSVF_1_1PTAStat_html_a1a4d418fd9e5413e7ffbbfe57f5e0560"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a1a4d418fd9e5413e7ffbbfe57f5e0560">SVF::PTAStat::TotalNumOfPointers</a></div><div class="ttdeci">static const char * TotalNumOfPointers</div><div class="ttdoc">Total SVFIR value node. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00060">PTAStat.h:60</a></div></div>
|
|
182
182
|
<div class="ttc" id="classSVF_1_1PTAStat_html_a1649c9f893c5b9ec2d57a399bc050030"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a1649c9f893c5b9ec2d57a399bc050030">SVF::PTAStat::AverageTopLevPointsToSetSize</a></div><div class="ttdeci">static const char * AverageTopLevPointsToSetSize</div><div class="ttdoc">Average points-to size of top-level variables. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00105">PTAStat.h:105</a></div></div>
|
|
@@ -206,7 +206,7 @@ $(function() {
|
|
|
206
206
|
<div class="ttc" id="classSVF_1_1PTAStat_html_a5b4095f427c9c7b9ec0db497ba33baea"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a5b4095f427c9c7b9ec0db497ba33baea">SVF::PTAStat::localVarInRecursion</a></div><div class="ttdeci">NodeBS localVarInRecursion</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00150">PTAStat.h:150</a></div></div>
|
|
207
207
|
<div class="ttc" id="classSVF_1_1PTAStat_html_ad4c1cf3750341f73987c37745f3bd2aa"><div class="ttname"><a href="classSVF_1_1PTAStat.html#ad4c1cf3750341f73987c37745f3bd2aa">SVF::PTAStat::SCCDetectionTime</a></div><div class="ttdeci">static const char * SCCDetectionTime</div><div class="ttdoc">Total SCC detection time. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00053">PTAStat.h:53</a></div></div>
|
|
208
208
|
<div class="ttc" id="classSVF_1_1MemObj_html_a1a4ff4aaaf2573240a318e1b79328cd0"><div class="ttname"><a href="classSVF_1_1MemObj.html#a1a4ff4aaaf2573240a318e1b79328cd0">SVF::MemObj::isConstDataOrConstGlobal</a></div><div class="ttdeci">bool isConstDataOrConstGlobal() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00804">SymbolTableInfo.cpp:804</a></div></div>
|
|
209
|
-
<div class="ttc" id="classSVF_1_1PTAStat_html_aa5f455bfa79743b8e263431593d29bbf"><div class="ttname"><a href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">SVF::PTAStat::printStat</a></div><div class="ttdeci">virtual void printStat(string str="")</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#
|
|
209
|
+
<div class="ttc" id="classSVF_1_1PTAStat_html_aa5f455bfa79743b8e263431593d29bbf"><div class="ttname"><a href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">SVF::PTAStat::printStat</a></div><div class="ttdeci">virtual void printStat(string str="")</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00293">PTAStat.cpp:293</a></div></div>
|
|
210
210
|
<div class="ttc" id="classSVF_1_1PTAStat_html_ac5bf59a0a7a760c9fec5f22dedec5eb6"><div class="ttname"><a href="classSVF_1_1PTAStat.html#ac5bf59a0a7a760c9fec5f22dedec5eb6">SVF::PTAStat::NumOfAddrs</a></div><div class="ttdeci">static const char * NumOfAddrs</div><div class="ttdoc">SVFIR addr edge. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00066">PTAStat.h:66</a></div></div>
|
|
211
211
|
<div class="ttc" id="classSVF_1_1PTAStat_html_a8c4101e697057269def501d14a987287"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a8c4101e697057269def501d14a987287">SVF::PTAStat::SCCMergeTime</a></div><div class="ttdeci">static const char * SCCMergeTime</div><div class="ttdoc">Total SCC merge time. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00054">PTAStat.h:54</a></div></div>
|
|
212
212
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html">SVF::PointerAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00057">PointerAnalysis.h:57</a></div></div>
|