svf-tools 1.0.306 → 1.0.307
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_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/BasicTypes_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PAG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +7 -6
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +1 -1
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +8 -7
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AddrPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FIObjPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepValPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.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_1NormalGepPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +17 -16
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +2 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ValPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +2 -2
- package/SVF-doxygen/html/html/globals_func_i.html +8 -8
- package/SVF-doxygen/html/html/globals_func_s.html +6 -6
- package/SVF-doxygen/html/html/globals_s.html +12 -14
- package/SVF-doxygen/html/html/namespaceSVF.html +2 -2
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +10 -9
- package/SVF-doxygen/html/html/search/all_13.js +1 -1
- package/SVF-doxygen/html/html/search/all_9.js +1 -1
- package/SVF-doxygen/html/html/search/functions_10.js +1 -1
- package/SVF-doxygen/html/html/search/functions_8.js +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/tools_2DDA_2CMakeLists_8txt.html +1 -1
- package/SVF-doxygen/html/html/tools_2Example_2CMakeLists_8txt.html +1 -1
- package/SVF-doxygen/html/html/tools_2MTA_2CMakeLists_8txt.html +1 -1
- package/SVF-doxygen/html/html/tools_2SABER_2CMakeLists_8txt.html +1 -1
- package/SVF-doxygen/html/html/tools_2WPA_2CMakeLists_8txt.html +9 -9
- package/lib/MemoryModel/PointsTo.cpp +3 -3
- package/lib/Util/PTAStat.cpp +3 -4
- package/lib/Util/SVFUtil.cpp +1 -0
- package/package.json +1 -1
- package/tools/WPA/CMakeLists.txt +3 -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="PAG_8h.html">Graphs/PAG.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">"TotalPAGEdges"</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>* p) : 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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((<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>  <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="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</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="l00118"></a><span class="lineno"> 118</span>  {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">struct </span>timespec time;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  clock_gettime(CLOCK_MONOTONIC, &time);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</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="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</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="l00124"></a><span class="lineno"> 124</span>  {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span> <a class="code" href="SVFBasicTypes_8h.html#af091e361d7961cb895ff2101eceed953">CLOCK_IN_MS</a>();</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">else</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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<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>  }</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_1PAG.html">PAG</a>* pag = <a class="code" href="classSVF_1_1PAG.html#ac8910c7330638bdf31c23d4cc03ba9c5">PAG::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">PAG::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_1PAGNode.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_1ObjPN.html">ObjPN</a>* obj = SVFUtil::dyn_cast<ObjPN>(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#ad7f7de744715c3acaf3d48822865c87b">getSymId</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#a0da6483089b2d80778535929426c1540">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#aa513ca5bd3927c9f697b504a70e57013">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#a65735220b56354f7b6c7ce6753f84e4b">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#af8f4f85cfbcb09615fb04ca63d634138">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#a167ed4be108aa7833aa267470d256766">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#a5a6887b8ae47b21ba82324daced74ac0">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#a347eacc3e472c706600c25d7bd46bed6">isConstArray</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#a846fafa3f005531525856df4581e33fd">isConstStruct</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#a1ecb652416c602e1c5e3d9e7be580c3c">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#ad67bc82cb51d0eb23c92c2ff9456c636">isConstant</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#a9d50a00ff608df21f50b3b2823128901">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>.set(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_1PAG.html#ad8c9f6134aa97d310f8eebbd7bf9bc8f">getValueNodeNum</a>() + pag-><a class="code" href="classSVF_1_1PAG.html#a815b0acd760c050c7b352b2000675fc5">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_1PAG.html#afe02872115f15623178cb1ed8f737992">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_1PAG.html#acde529dcb2054bf50a0793d8aa51bb07">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_1PAG.html#a74de66edb19a534fe85d4621085021ec">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">"TotalPTAPAGEdges"</span>] = pag-><a class="code" href="classSVF_1_1PAG.html#a7bd46d36d58cc8ec70d8a42e5eb93683">totalPTAPAGEdge</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_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6ac29bb583428e3c20d758bb9cf2d2d626">PAGEdge::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_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a8fcebc849a231c3c87dddbf0ab5a2167">PAGEdge::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_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6aca20a2c4d9809736d43b18f3cb53e8cf">PAGEdge::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_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6af447071283803d3aee763fe20783f4a4">PAGEdge::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_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a4b8b2eb7125c259d8d550dd83c51147b">PAGEdge::NormalGep</a>).size() + pag-><a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6ad1f40a044008babd44bff30af846550c">PAGEdge::VariantGep</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_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a5f4c2c1ec167425622d40133ec15448d">PAGEdge::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_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a99fe431c7a635d39b5558d1048a94c05">PAGEdge::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> </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#a618707c52da086e04f5e7bff31794cf3">NumOfIndirectCallSites</a>] = pag-><a class="code" href="classSVF_1_1PAG.html#a6a468180bff1e8f6143587546a2e7742">getIndirectCallsites</a>().size();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<span class="stringliteral">"TotalCallSite"</span>] = pag-><a class="code" href="classSVF_1_1PAG.html#a4309ced29efb4f351dafb867206bb38b">getCallSiteSet</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">"LocalVarInRecur"</span>] = <a class="code" href="classSVF_1_1PTAStat.html#a5b4095f427c9c7b9ec0db497ba33baea">localVarInRecursion</a>.count();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <a class="code" href="classSVF_1_1PTAStat.html#a2d5eedfe3418a3a83c9d254ba28399eb">bitcastInstStat</a>();</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="classSVF_1_1PTAStat.html#ada838d9e03f2be4fb3ceffab3983b564">branchStat</a>();</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <a class="code" href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">printStat</a>(<span class="stringliteral">"General Stats"</span>);</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> }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#a1772bc87370b5625f71edd4476277064"> 235</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="l00236"></a><span class="lineno"> 236</span> {</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>  <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="l00239"></a><span class="lineno"> 239</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="l00240"></a><span class="lineno"> 240</span>  callgraphSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">find</a>();</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordtype">unsigned</span> totalNode = 0;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordtype">unsigned</span> totalCycle = 0;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordtype">unsigned</span> nodeInCycle = 0;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordtype">unsigned</span> maxNodeInCycle = 0;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordtype">unsigned</span> totalEdge = 0;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordtype">unsigned</span> edgeInCycle = 0;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">NodeSet</a> sccRepNodeSet;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</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="l00251"></a><span class="lineno"> 251</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="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  totalNode++;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</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="l00256"></a><span class="lineno"> 256</span>  {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  sccRepNodeSet.insert(callgraphSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">repNode</a>(it->first));</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  nodeInCycle++;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>& subNodes = callgraphSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a6ab5eff6a576e6d8703c1ea29b7f425d">subNodes</a>(it->first);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">if</span>(subNodes.count() > maxNodeInCycle)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  maxNodeInCycle = subNodes.count();</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</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>  <a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> edgeIt = it->second->InEdgeBegin();</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> edgeEit = it->second->InEdgeEnd();</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">for</span> (; edgeIt != edgeEit; ++edgeIt)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a> *edge = *edgeIt;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</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="l00270"></a><span class="lineno"> 270</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="l00271"></a><span class="lineno"> 271</span>  {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</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="l00273"></a><span class="lineno"> 273</span>  }</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>  totalCycle = sccRepNodeSet.size();</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>  <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">"TotalNode"</span>] = totalNode;</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">"TotalCycle"</span>] = totalCycle;</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">"NodeInCycle"</span>] = nodeInCycle;</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">"MaxNodeInCycle"</span>] = maxNodeInCycle;</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">"TotalEdge"</span>] = totalEdge;</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">"CalRetPairInCycle"</span>] = edgeInCycle;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</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="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keyword">delete</span> callgraphSCC;</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> </div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf"> 291</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="l00292"></a><span class="lineno"> 292</span> {</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>  <a class="code" href="namespaceSVF.html#a88fd7387fcf16caf70abe265cdcf90b9">StringRef</a> fullName(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()->getModule()->getModuleIdentifier());</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <a class="code" href="namespaceSVF.html#a88fd7387fcf16caf70abe265cdcf90b9">StringRef</a> name = fullName.split(<span class="charliteral">'/'</span>).second;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="classSVF_1_1PTAStat.html#a194734855aa1c9e0ba891f1085d50d5d">moduleName</a> = name.split(<span class="charliteral">'.'</span>).first.str();</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  std::cout << <span class="stringliteral">"\n*********"</span> << statname << <span class="stringliteral">"***************\n"</span>;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  std::cout << <span class="stringliteral">"################ (program : "</span> << <a class="code" href="classSVF_1_1PTAStat.html#a194734855aa1c9e0ba891f1085d50d5d">moduleName</a> << <span class="stringliteral">")###############\n"</span>;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  std::cout.flags(std::ios::left);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordtype">unsigned</span> field_width = 20;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</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="l00303"></a><span class="lineno"> 303</span>  {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="comment">// format out put with width 20 space</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  std::cout << std::setw(field_width) << it->first << it->second << <span class="stringliteral">"\n"</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>  std::cout << <span class="stringliteral">"-------------------------------------------------------\n"</span>;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</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="l00309"></a><span class="lineno"> 309</span>  {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="comment">// format out put with width 20 space</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  std::cout << std::setw(field_width) << it->first << it->second << <span class="stringliteral">"\n"</span>;</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="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="l00314"></a><span class="lineno"> 314</span>  {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="comment">// format out put with width 20 space</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  std::cout << std::setw(field_width) << it->first << it->second << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }</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>  std::cout << <span class="stringliteral">"#######################################################"</span> << std::endl;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  std::cout.flush();</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>.clear();</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>.clear();</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>.clear();</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> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#a2d5eedfe3418a3a83c9d254ba28399eb"> 327</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTAStat.html#a2d5eedfe3418a3a83c9d254ba28399eb">PTAStat::bitcastInstStat</a>()</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="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="l00330"></a><span class="lineno"> 330</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numberOfBitCast = 0;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</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="l00332"></a><span class="lineno"> 332</span>  funIter != funEiter; ++funIter)</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>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = *funIter;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">for</span> (Function::const_iterator bbIt = func->begin(), bbEit = func->end();</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  bbIt != bbEit; ++bbIt)</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>& bb = *bbIt;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">for</span> (BasicBlock::const_iterator instIt = bb.begin(), instEit = bb.end();</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  instIt != instEit; ++instIt)</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>& inst = *instIt;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#afc50da46a6ea7c2cf61683bbec4d7c8d">BitCastInst</a>* bitcast = SVFUtil::dyn_cast<BitCastInst>(&inst))</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">if</span> (SVFUtil::isa<PointerType>(bitcast->getSrcTy()))</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  numberOfBitCast++;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  }</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<span class="stringliteral">"BitCastNumber"</span>] = numberOfBitCast;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#ada838d9e03f2be4fb3ceffab3983b564"> 355</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="l00356"></a><span class="lineno"> 356</span> {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</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="l00358"></a><span class="lineno"> 358</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfBB_2Succ = 0;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfBB_3Succ = 0;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</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="l00361"></a><span class="lineno"> 361</span>  funIter != funEiter; ++funIter)</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = *funIter;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">for</span> (Function::const_iterator bbIt = func->begin(), bbEit = func->end();</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  bbIt != bbEit; ++bbIt)</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>& bb = *bbIt;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfSucc = bb.getTerminator()->getNumSuccessors();</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">if</span> (numOfSucc == 2)</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  numOfBB_2Succ++;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (numOfSucc > 2)</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  numOfBB_3Succ++;</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>  }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> </div><div class="line"><a name="l00376"></a><span class="lineno"> 376</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="l00377"></a><span class="lineno"> 377</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="l00378"></a><span class="lineno"> 378</span> }</div><div class="ttc" id="classSVF_1_1MemObj_html_a167ed4be108aa7833aa267470d256766"><div class="ttname"><a href="classSVF_1_1MemObj.html#a167ed4be108aa7833aa267470d256766">SVF::MemObj::isVarArray</a></div><div class="ttdeci">bool isVarArray() const</div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00389">MemModel.h:389</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">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="PAG_8h.html">Graphs/PAG.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">"TotalPAGEdges"</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>* p) : 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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((<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>  <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="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</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="l00118"></a><span class="lineno"> 118</span>  {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">struct </span>timespec time;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  clock_gettime(CLOCK_MONOTONIC, &time);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</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="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</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="l00124"></a><span class="lineno"> 124</span>  {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span> <a class="code" href="SVFBasicTypes_8h.html#af091e361d7961cb895ff2101eceed953">CLOCK_IN_MS</a>();</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> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"PTAStat::getClk: unknown clock type"</span>);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#acfed70588cf921694db35990ec3c7497"> 132</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="l00133"></a><span class="lineno"> 133</span> {</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>  <a class="code" href="classSVF_1_1PTAStat.html#a1772bc87370b5625f71edd4476277064">callgraphStat</a>();</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_1PAG.html">PAG</a>* pag = <a class="code" href="classSVF_1_1PAG.html#ac8910c7330638bdf31c23d4cc03ba9c5">PAG::getPAG</a>();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfFunction = 0;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfGlobal = 0;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfStack = 0;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfHeap = 0;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfHasVarArray = 0;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfHasVarStruct = 0;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfHasConstArray = 0;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfHasConstStruct = 0;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfScalar = 0;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfConstant = 0;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fiObjNumber = 0;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fsObjNumber = 0;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<SymID></a> memObjSet;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">PAG::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="l00152"></a><span class="lineno"> 152</span>  {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node = it->second;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ObjPN.html">ObjPN</a>* obj = SVFUtil::dyn_cast<ObjPN>(node))</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</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="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">if</span> (memObjSet.insert(mem-><a class="code" href="classSVF_1_1MemObj.html#ad7f7de744715c3acaf3d48822865c87b">getSymId</a>()).second == <span class="keyword">false</span>)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">if</span>(mem-><a class="code" href="classSVF_1_1MemObj.html#a7b890ca9e93b1c61cc6437b7e6a82a8c">isBlackHoleObj</a>())</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#a0da6483089b2d80778535929426c1540">isFunction</a>())</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  numOfFunction++;</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#aa513ca5bd3927c9f697b504a70e57013">isGlobalObj</a>())</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  numOfGlobal++;</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#a65735220b56354f7b6c7ce6753f84e4b">isStack</a>())</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  numOfStack++;</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#af8f4f85cfbcb09615fb04ca63d634138">isHeap</a>())</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  numOfHeap++;</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#a167ed4be108aa7833aa267470d256766">isVarArray</a>())</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  numOfHasVarArray++;</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#a5a6887b8ae47b21ba82324daced74ac0">isVarStruct</a>())</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  numOfHasVarStruct++;</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#a347eacc3e472c706600c25d7bd46bed6">isConstArray</a>())</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  numOfHasConstArray++;</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#a846fafa3f005531525856df4581e33fd">isConstStruct</a>())</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  numOfHasConstStruct++;</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#a1ecb652416c602e1c5e3d9e7be580c3c">hasPtrObj</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  numOfScalar++;</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#ad67bc82cb51d0eb23c92c2ff9456c636">isConstant</a>())</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  numOfConstant++;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">if</span> (mem-><a class="code" href="classSVF_1_1MemObj.html#a9d50a00ff608df21f50b3b2823128901">isFieldInsensitive</a>())</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  fiObjNumber++;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  fsObjNumber++;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</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="l00188"></a><span class="lineno"> 188</span>  {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <a class="code" href="classSVF_1_1PTAStat.html#a5b4095f427c9c7b9ec0db497ba33baea">localVarInRecursion</a>.set(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>  }</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>  <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_1PAG.html#ad8c9f6134aa97d310f8eebbd7bf9bc8f">getValueNodeNum</a>() + pag-><a class="code" href="classSVF_1_1PAG.html#a815b0acd760c050c7b352b2000675fc5">getFieldValNodeNum</a>();</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#acd9848f15aa359550e86c7b857df84ed">TotalNumOfObjects</a>] = pag-><a class="code" href="classSVF_1_1PAG.html#afe02872115f15623178cb1ed8f737992">getObjectNodeNum</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#ac0e0a1c49d33e02f5cc0f21565ce627d">TotalNumOfFieldObjects</a>] = pag-><a class="code" href="classSVF_1_1PAG.html#acde529dcb2054bf50a0793d8aa51bb07">getFieldObjNodeNum</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#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="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#a3afc0a36232a0388d8aa42c68219cb26">TotalNumOfEdges</a>] = pag-><a class="code" href="classSVF_1_1PAG.html#a74de66edb19a534fe85d4621085021ec">getPAGEdgeNum</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>[<span class="stringliteral">"TotalPTAPAGEdges"</span>] = pag-><a class="code" href="classSVF_1_1PAG.html#a7bd46d36d58cc8ec70d8a42e5eb93683">totalPTAPAGEdge</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#ad1a7e7aec8f272017be7d0b6acda86a4">NumberOfFieldInsensitiveObj</a>] = fiObjNumber;</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#ab62eb21c7dc03f68b0509c31451b2e98">NumberOfFieldSensitiveObj</a>] = fsObjNumber;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </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#ac5bf59a0a7a760c9fec5f22dedec5eb6">NumOfAddrs</a>] = pag-><a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6ac29bb583428e3c20d758bb9cf2d2d626">PAGEdge::Addr</a>).size();</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#a4aa7356142f51d942063be5a2910940f">NumOfLoads</a>] = pag-><a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a8fcebc849a231c3c87dddbf0ab5a2167">PAGEdge::Load</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#a656ad9980ff05af396ed6754c50916e7">NumOfStores</a>] = pag-><a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6aca20a2c4d9809736d43b18f3cb53e8cf">PAGEdge::Store</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#a97a8b662356fc89cdd2cb9463fa5578b">NumOfCopys</a>] = pag-><a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6af447071283803d3aee763fe20783f4a4">PAGEdge::Copy</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#acc5e4740e11cb6f9794723e5f61ab63b">NumOfGeps</a>] = pag-><a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a4b8b2eb7125c259d8d550dd83c51147b">PAGEdge::NormalGep</a>).size() + pag-><a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6ad1f40a044008babd44bff30af846550c">PAGEdge::VariantGep</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#a6cbeca77d0681f7da28979cbd0f661b2">NumOfCalls</a>] = pag-><a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a5f4c2c1ec167425622d40133ec15448d">PAGEdge::Call</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#a0a552611fcd20e1310290bdae404a514">NumOfReturns</a>] = pag-><a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a99fe431c7a635d39b5558d1048a94c05">PAGEdge::Ret</a>).size();</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </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#ae9952b7456b5102113d1fee4d9d7801a">NumOfFunctionObjs</a>] = numOfFunction;</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#a57574c85a5a875a05ef83d3c916cf3e5">NumOfGlobalObjs</a>] = numOfGlobal;</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#a4aff48eaa2045ee619a8ea793a9234b8">NumOfHeapObjs</a>] = numOfHeap;</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#ae05503909688a17dc1f282d1d029d24e">NumOfStackObjs</a>] = numOfStack;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </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#a95edd35cec92fa4cacc8b59b5eecc827">NumOfObjsHasVarStruct</a>] = numOfHasVarStruct;</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#a78693e8bf93d712eb76c9d6dc0c45ae6">NumOfObjsHasVarArray</a>] = numOfHasVarArray;</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#a918051b1d0eb4f49c349352408cc9751">NumOfObjsHasConstStruct</a>] = numOfHasConstStruct;</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#adb31b163f0cbb9d9ce207ef5d8c075fa">NumOfObjsHasConstArray</a>] = numOfHasConstArray;</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#a9014371b8ed95ab8135eed2a7fa945f1">NumOfNonPtrObjs</a>] = numOfScalar;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </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#a618707c52da086e04f5e7bff31794cf3">NumOfIndirectCallSites</a>] = pag-><a class="code" href="classSVF_1_1PAG.html#a6a468180bff1e8f6143587546a2e7742">getIndirectCallsites</a>().size();</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<span class="stringliteral">"TotalCallSite"</span>] = pag-><a class="code" href="classSVF_1_1PAG.html#a4309ced29efb4f351dafb867206bb38b">getCallSiteSet</a>().size();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</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>.count();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <a class="code" href="classSVF_1_1PTAStat.html#a2d5eedfe3418a3a83c9d254ba28399eb">bitcastInstStat</a>();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <a class="code" href="classSVF_1_1PTAStat.html#ada838d9e03f2be4fb3ceffab3983b564">branchStat</a>();</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <a class="code" href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf">printStat</a>(<span class="stringliteral">"General Stats"</span>);</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> }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#a1772bc87370b5625f71edd4476277064"> 234</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="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"> 237</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="l00238"></a><span class="lineno"> 238</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="l00239"></a><span class="lineno"> 239</span>  callgraphSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">find</a>();</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordtype">unsigned</span> totalNode = 0;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordtype">unsigned</span> totalCycle = 0;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordtype">unsigned</span> nodeInCycle = 0;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordtype">unsigned</span> maxNodeInCycle = 0;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordtype">unsigned</span> totalEdge = 0;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordtype">unsigned</span> edgeInCycle = 0;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">NodeSet</a> sccRepNodeSet;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</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="l00250"></a><span class="lineno"> 250</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="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  totalNode++;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</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="l00255"></a><span class="lineno"> 255</span>  {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  sccRepNodeSet.insert(callgraphSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">repNode</a>(it->first));</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  nodeInCycle++;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>& subNodes = callgraphSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a6ab5eff6a576e6d8703c1ea29b7f425d">subNodes</a>(it->first);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">if</span>(subNodes.count() > maxNodeInCycle)</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  maxNodeInCycle = subNodes.count();</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> edgeIt = it->second->InEdgeBegin();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> edgeEit = it->second->InEdgeEnd();</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">for</span> (; edgeIt != edgeEit; ++edgeIt)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a> *edge = *edgeIt;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</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="l00269"></a><span class="lineno"> 269</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="l00270"></a><span class="lineno"> 270</span>  {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</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="l00272"></a><span class="lineno"> 272</span>  }</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>  }</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>  totalCycle = sccRepNodeSet.size();</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>  <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">"TotalNode"</span>] = totalNode;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>[<span class="stringliteral">"TotalCycle"</span>] = totalCycle;</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">"NodeInCycle"</span>] = nodeInCycle;</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">"MaxNodeInCycle"</span>] = maxNodeInCycle;</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">"TotalEdge"</span>] = totalEdge;</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">"CalRetPairInCycle"</span>] = edgeInCycle;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</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="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keyword">delete</span> callgraphSCC;</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> </div><div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#aa5f455bfa79743b8e263431593d29bbf"> 290</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="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"> 293</span>  <a class="code" href="namespaceSVF.html#a88fd7387fcf16caf70abe265cdcf90b9">StringRef</a> fullName(<a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()->getModule()->getModuleIdentifier());</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <a class="code" href="namespaceSVF.html#a88fd7387fcf16caf70abe265cdcf90b9">StringRef</a> name = fullName.split(<span class="charliteral">'/'</span>).second;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <a class="code" href="classSVF_1_1PTAStat.html#a194734855aa1c9e0ba891f1085d50d5d">moduleName</a> = name.split(<span class="charliteral">'.'</span>).first.str();</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  std::cout << <span class="stringliteral">"\n*********"</span> << statname << <span class="stringliteral">"***************\n"</span>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  std::cout << <span class="stringliteral">"################ (program : "</span> << <a class="code" href="classSVF_1_1PTAStat.html#a194734855aa1c9e0ba891f1085d50d5d">moduleName</a> << <span class="stringliteral">")###############\n"</span>;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  std::cout.flags(std::ios::left);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordtype">unsigned</span> field_width = 20;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</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="l00302"></a><span class="lineno"> 302</span>  {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="comment">// format out put with width 20 space</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  std::cout << std::setw(field_width) << it->first << it->second << <span class="stringliteral">"\n"</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>  std::cout << <span class="stringliteral">"-------------------------------------------------------\n"</span>;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</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="l00308"></a><span class="lineno"> 308</span>  {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="comment">// format out put with width 20 space</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  std::cout << std::setw(field_width) << it->first << it->second << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  }</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#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="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> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  std::cout << <span class="stringliteral">"#######################################################"</span> << std::endl;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  std::cout.flush();</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>.clear();</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <a class="code" href="classSVF_1_1PTAStat.html#afdb975520329be0c33cc7bdd51ba7031">PTNumStatMap</a>.clear();</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <a class="code" href="classSVF_1_1PTAStat.html#a3724756ac0527ba3d199be32e38c6337">timeStatMap</a>.clear();</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> </div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#a2d5eedfe3418a3a83c9d254ba28399eb"> 326</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PTAStat.html#a2d5eedfe3418a3a83c9d254ba28399eb">PTAStat::bitcastInstStat</a>()</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="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="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numberOfBitCast = 0;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</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="l00331"></a><span class="lineno"> 331</span>  funIter != funEiter; ++funIter)</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = *funIter;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">for</span> (Function::const_iterator bbIt = func->begin(), bbEit = func->end();</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  bbIt != bbEit; ++bbIt)</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>& bb = *bbIt;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">for</span> (BasicBlock::const_iterator instIt = bb.begin(), instEit = bb.end();</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  instIt != instEit; ++instIt)</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>& inst = *instIt;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#afc50da46a6ea7c2cf61683bbec4d7c8d">BitCastInst</a>* bitcast = SVFUtil::dyn_cast<BitCastInst>(&inst))</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">if</span> (SVFUtil::isa<PointerType>(bitcast->getSrcTy()))</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  numberOfBitCast++;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  }</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  }</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <a class="code" href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">generalNumMap</a>[<span class="stringliteral">"BitCastNumber"</span>] = numberOfBitCast;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="classSVF_1_1PTAStat.html#ada838d9e03f2be4fb3ceffab3983b564"> 354</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="l00355"></a><span class="lineno"> 355</span> {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</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="l00357"></a><span class="lineno"> 357</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfBB_2Succ = 0;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfBB_3Succ = 0;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</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="l00360"></a><span class="lineno"> 360</span>  funIter != funEiter; ++funIter)</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = *funIter;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">for</span> (Function::const_iterator bbIt = func->begin(), bbEit = func->end();</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  bbIt != bbEit; ++bbIt)</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>& bb = *bbIt;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> numOfSucc = bb.getTerminator()->getNumSuccessors();</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordflow">if</span> (numOfSucc == 2)</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  numOfBB_2Succ++;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (numOfSucc > 2)</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  numOfBB_3Succ++;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  }</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> </div><div class="line"><a name="l00375"></a><span class="lineno"> 375</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="l00376"></a><span class="lineno"> 376</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="l00377"></a><span class="lineno"> 377</span> }</div><div class="ttc" id="classSVF_1_1MemObj_html_a167ed4be108aa7833aa267470d256766"><div class="ttname"><a href="classSVF_1_1MemObj.html#a167ed4be108aa7833aa267470d256766">SVF::MemObj::isVarArray</a></div><div class="ttdeci">bool isVarArray() const</div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00389">MemModel.h:389</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
|
|
71
71
|
<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>
|
|
72
72
|
<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="MemModel_8cpp_source.html#l00271">MemModel.cpp:271</a></div></div>
|
|
@@ -103,7 +103,7 @@ $(function() {
|
|
|
103
103
|
<div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00038">SVFModule.h:38</a></div></div>
|
|
104
104
|
<div class="ttc" id="classSVF_1_1PAG_html_acde529dcb2054bf50a0793d8aa51bb07"><div class="ttname"><a href="classSVF_1_1PAG.html#acde529dcb2054bf50a0793d8aa51bb07">SVF::PAG::getFieldObjNodeNum</a></div><div class="ttdeci">Size_t getFieldObjNodeNum() const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00460">PAG.h:460</a></div></div>
|
|
105
105
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_abc7e567209010286a68634c700d76cca"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#abc7e567209010286a68634c700d76cca">SVF::SymbolTableInfo::getMaxStructSize</a></div><div class="ttdeci">u32_t getMaxStructSize() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00329">SymbolTableInfo.h:329</a></div></div>
|
|
106
|
-
<div class="ttc" id="classSVF_1_1PTAStat_html_a2d5eedfe3418a3a83c9d254ba28399eb"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a2d5eedfe3418a3a83c9d254ba28399eb">SVF::PTAStat::bitcastInstStat</a></div><div class="ttdeci">void bitcastInstStat()</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#
|
|
106
|
+
<div class="ttc" id="classSVF_1_1PTAStat_html_a2d5eedfe3418a3a83c9d254ba28399eb"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a2d5eedfe3418a3a83c9d254ba28399eb">SVF::PTAStat::bitcastInstStat</a></div><div class="ttdeci">void bitcastInstStat()</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00326">PTAStat.cpp:326</a></div></div>
|
|
107
107
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
|
|
108
108
|
<div class="ttc" id="classSVF_1_1PTAStat_html_a97a8b662356fc89cdd2cb9463fa5578b"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a97a8b662356fc89cdd2cb9463fa5578b">SVF::PTAStat::NumOfCopys</a></div><div class="ttdeci">static const char * NumOfCopys</div><div class="ttdoc">PAG copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00069">PTAStat.h:69</a></div></div>
|
|
109
109
|
<div class="ttc" id="classSVF_1_1PAGEdge_html_a79080505b4744aa8806b55215ac2b0f6ac29bb583428e3c20d758bb9cf2d2d626"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6ac29bb583428e3c20d758bb9cf2d2d626">SVF::PAGEdge::Addr</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00056">PAGEdge.h:56</a></div></div>
|
|
@@ -156,13 +156,13 @@ $(function() {
|
|
|
156
156
|
<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>
|
|
157
157
|
<div class="ttc" id="namespaceSVF_html_a88fd7387fcf16caf70abe265cdcf90b9"><div class="ttname"><a href="namespaceSVF.html#a88fd7387fcf16caf70abe265cdcf90b9">SVF::StringRef</a></div><div class="ttdeci">llvm::StringRef StringRef</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00102">BasicTypes.h:102</a></div></div>
|
|
158
158
|
<div class="ttc" id="PointerAnalysisImpl_8h_html"><div class="ttname"><a href="PointerAnalysisImpl_8h.html">PointerAnalysisImpl.h</a></div></div>
|
|
159
|
-
<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#
|
|
159
|
+
<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#l00132">PTAStat.cpp:132</a></div></div>
|
|
160
160
|
<div class="ttc" id="classSVF_1_1PAG_html_a4b89e254837eca47e09e41cf67dba722"><div class="ttname"><a href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">SVF::PAG::getEdgeSet</a></div><div class="ttdeci">PAGEdge::PAGEdgeSetTy & getEdgeSet(PAGEdge::PEDGEK kind)</div><div class="ttdoc">Get/set methods to get control flow information of a PAGEdge. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00210">PAG.h:210</a></div></div>
|
|
161
161
|
<div class="ttc" id="classSVF_1_1MemObj_html_aa513ca5bd3927c9f697b504a70e57013"><div class="ttname"><a href="classSVF_1_1MemObj.html#aa513ca5bd3927c9f697b504a70e57013">SVF::MemObj::isGlobalObj</a></div><div class="ttdeci">bool isGlobalObj() const</div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00360">MemModel.h:360</a></div></div>
|
|
162
162
|
<div class="ttc" id="namespaceSVF_html_afc50da46a6ea7c2cf61683bbec4d7c8d"><div class="ttname"><a href="namespaceSVF.html#afc50da46a6ea7c2cf61683bbec4d7c8d">SVF::BitCastInst</a></div><div class="ttdeci">llvm::BitCastInst BitCastInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00156">BasicTypes.h:156</a></div></div>
|
|
163
163
|
<div class="ttc" id="classSVF_1_1MemObj_html_ad67bc82cb51d0eb23c92c2ff9456c636"><div class="ttname"><a href="classSVF_1_1MemObj.html#ad67bc82cb51d0eb23c92c2ff9456c636">SVF::MemObj::isConstant</a></div><div class="ttdeci">bool isConstant() const</div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00401">MemModel.h:401</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#l00354">PTAStat.cpp:354</a></div></div>
|
|
166
166
|
<div class="ttc" id="classSVF_1_1MemObj_html_ad7f7de744715c3acaf3d48822865c87b"><div class="ttname"><a href="classSVF_1_1MemObj.html#ad7f7de744715c3acaf3d48822865c87b">SVF::MemObj::getSymId</a></div><div class="ttdeci">SymID getSymId() const</div><div class="ttdoc">Get the memory object id. </div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00331">MemModel.h:331</a></div></div>
|
|
167
167
|
<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>
|
|
168
168
|
<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">PAG processed copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00077">PTAStat.h:77</a></div></div>
|
|
@@ -173,11 +173,12 @@ $(function() {
|
|
|
173
173
|
<div class="ttc" id="classSVF_1_1PAGEdge_html_a79080505b4744aa8806b55215ac2b0f6a99fe431c7a635d39b5558d1048a94c05"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a99fe431c7a635d39b5558d1048a94c05">SVF::PAGEdge::Ret</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00056">PAGEdge.h:56</a></div></div>
|
|
174
174
|
<div class="ttc" id="classSVF_1_1PTAStat_html_aaa9d98f868c0724cb57c6934e783d1e5"><div class="ttname"><a href="classSVF_1_1PTAStat.html#aaa9d98f868c0724cb57c6934e783d1e5">SVF::PTAStat::NumOfProcessedGeps</a></div><div class="ttdeci">static const char * NumOfProcessedGeps</div><div class="ttdoc">PAG processed gep edge. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00078">PTAStat.h:78</a></div></div>
|
|
175
175
|
<div class="ttc" id="classSVF_1_1PAGEdge_html_a79080505b4744aa8806b55215ac2b0f6af447071283803d3aee763fe20783f4a4"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6af447071283803d3aee763fe20783f4a4">SVF::PAGEdge::Copy</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00056">PAGEdge.h:56</a></div></div>
|
|
176
|
+
<div class="ttc" id="util_8h_html_a23c00958edf66c39625a0d535dee57b7"><div class="ttname"><a href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a></div><div class="ttdeci">VOID_OR_INT abort()</div></div>
|
|
176
177
|
<div class="ttc" id="classSVF_1_1PTAStat_html_a8aedfeb35f76e6d33135637156468894"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a8aedfeb35f76e6d33135637156468894">SVF::PTAStat::UpdateCallGraphTime</a></div><div class="ttdeci">static const char * UpdateCallGraphTime</div><div class="ttdoc">time of updating call graph </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00058">PTAStat.h:58</a></div></div>
|
|
177
178
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_ac4ad73782f42f90ad7ac9c66edb27c69"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac4ad73782f42f90ad7ac9c66edb27c69">SVF::PointerAnalysis::CallGraphSCC</a></div><div class="ttdeci">SCCDetection< PTACallGraph * > CallGraphSCC</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00112">PointerAnalysis.h:112</a></div></div>
|
|
178
179
|
<div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
|
|
179
180
|
<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#l00170">PointerAnalysis.cpp:170</a></div></div>
|
|
180
|
-
<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#
|
|
181
|
+
<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#l00234">PTAStat.cpp:234</a></div></div>
|
|
181
182
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00164">GenericGraph.h:164</a></div></div>
|
|
182
183
|
<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 PAG value node. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00060">PTAStat.h:60</a></div></div>
|
|
183
184
|
<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 +207,7 @@ $(function() {
|
|
|
206
207
|
<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
208
|
<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
209
|
<div class="ttc" id="classSVF_1_1MemObj_html_a846fafa3f005531525856df4581e33fd"><div class="ttname"><a href="classSVF_1_1MemObj.html#a846fafa3f005531525856df4581e33fd">SVF::MemObj::isConstStruct</a></div><div class="ttdeci">bool isConstStruct() const</div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00393">MemModel.h:393</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#
|
|
210
|
+
<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#l00290">PTAStat.cpp:290</a></div></div>
|
|
210
211
|
<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">PAG addr edge. </div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00066">PTAStat.h:66</a></div></div>
|
|
211
212
|
<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
213
|
<div class="ttc" id="classSVF_1_1PAG_html_a6a468180bff1e8f6143587546a2e7742"><div class="ttname"><a href="classSVF_1_1PAG.html#a6a468180bff1e8f6143587546a2e7742">SVF::PAG::getIndirectCallsites</a></div><div class="ttdeci">const CallSiteToFunPtrMap & getIndirectCallsites() const</div><div class="ttdoc">Add/get indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00484">PAG.h:484</a></div></div>
|