svf-tools 1.0.621 → 1.0.622
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/ConditionalPT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/IntervalValue_8h_source.html +17 -15
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PointsTo_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +22 -22
- package/SVF-doxygen/html/html/SVFG_8h_source.html +37 -36
- package/SVF-doxygen/html/html/SVFValue_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +3 -3
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/WTO_8h_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntervalValue-members.html +5 -4
- package/SVF-doxygen/html/html/classSVF_1_1IntervalValue.html +32 -0
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +96 -95
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +157 -121
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +116 -115
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +13 -10
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +2 -2
- package/SVF-doxygen/html/html/fastcluster__dm_8cpp_8inc_source.html +1 -1
- package/SVF-doxygen/html/html/functions_c.html +6 -6
- package/SVF-doxygen/html/html/functions_func_h.html +7 -4
- package/SVF-doxygen/html/html/functions_func_i.html +2 -2
- package/SVF-doxygen/html/html/functions_func_t.html +1 -0
- package/SVF-doxygen/html/html/functions_h.html +5 -2
- package/SVF-doxygen/html/html/functions_i.html +4 -4
- package/SVF-doxygen/html/html/functions_l.html +3 -3
- package/SVF-doxygen/html/html/functions_o.html +3 -3
- package/SVF-doxygen/html/html/functions_p.html +9 -15
- package/SVF-doxygen/html/html/functions_s.html +15 -13
- package/SVF-doxygen/html/html/functions_t.html +7 -6
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/namespaceSVF.html +30 -30
- package/SVF-doxygen/html/html/search/all_10.js +5 -5
- package/SVF-doxygen/html/html/search/all_11.js +2 -2
- package/SVF-doxygen/html/html/search/all_12.js +8 -8
- package/SVF-doxygen/html/html/search/all_13.js +5 -5
- package/SVF-doxygen/html/html/search/all_15.js +2 -2
- package/SVF-doxygen/html/html/search/all_16.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +2 -2
- package/SVF-doxygen/html/html/search/all_7.js +1 -1
- package/SVF-doxygen/html/html/search/all_8.js +1 -0
- package/SVF-doxygen/html/html/search/all_9.js +3 -3
- package/SVF-doxygen/html/html/search/all_b.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +1 -1
- package/SVF-doxygen/html/html/search/all_f.js +1 -1
- package/SVF-doxygen/html/html/search/functions_11.js +1 -1
- package/SVF-doxygen/html/html/search/functions_12.js +1 -1
- package/SVF-doxygen/html/html/search/functions_7.js +1 -0
- package/SVF-doxygen/html/html/search/functions_8.js +1 -1
- package/SVF-doxygen/html/html/search/variables_13.js +3 -3
- package/SVF-doxygen/html/html/search/variables_7.js +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +2 -2
- package/include/AbstractExecution/IntervalValue.h +5 -0
- package/include/Graphs/SVFG.h +6 -0
- package/package.json +1 -1
|
@@ -66,11 +66,11 @@ $(function() {
|
|
|
66
66
|
<div class="title">SVFG.h</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="SVFG_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- SVFG.h -- Sparse value-flow graph--------------------------------------//</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"> * SVFG.h</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 28, 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">#ifndef SVFG_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define SVFG_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="VFG_8h.html">Graphs/VFG.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="SVFGNode_8h.html">Graphs/SVFGNode.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</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">class </span>PointerAnalysis;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9"> 40</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFGStat.html">SVFGStat</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a> <a class="code" href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVFGEdge</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df"> 43</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a> <a class="code" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVFGNode</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a11c50c2f81327753b3ff3ffdbe356812"> 44</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a> <a class="code" href="namespaceSVF.html#a11c50c2f81327753b3ff3ffdbe356812">ActualParmSVFGNode</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a77b8b8ca831e1eba3e47f2ca29667f67"> 45</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a> <a class="code" href="namespaceSVF.html#a77b8b8ca831e1eba3e47f2ca29667f67">ActualRetSVFGNode</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ad466edced10faeafd48e96daf193b8a9"> 46</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a> <a class="code" href="namespaceSVF.html#ad466edced10faeafd48e96daf193b8a9">FormalParmSVFGNode</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ae5987da3ffd5681e8ec4ef14ba54588e"> 47</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a> <a class="code" href="namespaceSVF.html#ae5987da3ffd5681e8ec4ef14ba54588e">FormalRetSVFGNode</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="namespaceSVF.html#aeccd0bd024319173c1cda5ff1a79c5ae"> 49</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1NullPtrVFGNode.html">NullPtrVFGNode</a> <a class="code" href="namespaceSVF.html#aeccd0bd024319173c1cda5ff1a79c5ae">NullPtrSVFGNode</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a26bd4f89dc154b9c6d34b6a517777934"> 50</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a> <a class="code" href="namespaceSVF.html#a26bd4f89dc154b9c6d34b6a517777934">StmtSVFGNode</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a959453cbb8ff2d852b526fd1ff74ce49"> 51</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1AddrVFGNode.html">AddrVFGNode</a> <a class="code" href="namespaceSVF.html#a959453cbb8ff2d852b526fd1ff74ce49">AddrSVFGNode</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ab98f7c9e6311e649cdfd5d2f3f8e59be"> 52</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CopyVFGNode.html">CopyVFGNode</a> <a class="code" href="namespaceSVF.html#ab98f7c9e6311e649cdfd5d2f3f8e59be">CopySVFGNode</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a54c5725186e66ead6faf53c10a288714"> 53</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreVFGNode</a> <a class="code" href="namespaceSVF.html#a54c5725186e66ead6faf53c10a288714">StoreSVFGNode</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a3ce49be3724e1e8423ccdfa726fbf6c8"> 54</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadVFGNode</a> <a class="code" href="namespaceSVF.html#a3ce49be3724e1e8423ccdfa726fbf6c8">LoadSVFGNode</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a65a3be463427d1112a8b87f072f3d22f"> 55</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GepVFGNode.html">GepVFGNode</a> <a class="code" href="namespaceSVF.html#a65a3be463427d1112a8b87f072f3d22f">GepSVFGNode</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a71d4e214e049f02bf26537cba6328673"> 56</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PHIVFGNode.html">PHIVFGNode</a> <a class="code" href="namespaceSVF.html#a71d4e214e049f02bf26537cba6328673">PHISVFGNode</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ad772e1586e369943f37c22641e93e941"> 57</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1IntraPHIVFGNode.html">IntraPHIVFGNode</a> <a class="code" href="namespaceSVF.html#ad772e1586e369943f37c22641e93e941">IntraPHISVFGNode</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a0f7ff1d9a479df87241b45bb9c81d3ca"> 58</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1InterPHIVFGNode.html">InterPHIVFGNode</a> <a class="code" href="namespaceSVF.html#a0f7ff1d9a479df87241b45bb9c81d3ca">InterPHISVFGNode</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html"> 65</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFG.html">SVFG</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1VFG.html">VFG</a></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> {</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ab2f81db3935389480baa5cb14e15e9d7"> 67</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFGBuilder.html">SVFGBuilder</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a93a4287b55425abc188e5f5f2de54297"> 68</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SaberSVFGBuilder.html">SaberSVFGBuilder</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a665c93b68f49078c281270a028d04445"> 69</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFG.html#a665c93b68f49078c281270a028d04445">TaintSVFGBuilder</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a9ccd530dc4c49b0df372a2ce95b66921"> 70</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFG.html#a9ccd530dc4c49b0df372a2ce95b66921">DDASVFGBuilder</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ac0e43f4a2043538c9046f95826caa725"> 71</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MTASVFGBuilder.html">MTASVFGBuilder</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a67654d252e9e93b74e35ba247048b41a"> 72</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFG.html#a67654d252e9e93b74e35ba247048b41a">RcSvfgBuilder</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a3d04ce1429b1edf90c9c0833e3b5a4a9"> 75</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFG.html#aca5b658b87728ac8bd7e562d51e771f8">VFGNodeIDToNodeMapTy</a> <a class="code" href="classSVF_1_1SVFG.html#a3d04ce1429b1edf90c9c0833e3b5a4a9">SVFGNodeIDToNodeMapTy</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a2590182f3b28c7fc8b2b53c09ec4305c"> 76</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, NodeID></a> <a class="code" href="classSVF_1_1SVFG.html#a2590182f3b28c7fc8b2b53c09ec4305c">PAGNodeToDefMapTy</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ac84d3749671f177b14749a825e36efe3"> 77</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const MRVer*, NodeID></a> <a class="code" href="classSVF_1_1SVFG.html#ac84d3749671f177b14749a825e36efe3">MSSAVarToDefMapTy</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#aa9f520779475e4783eccc45c460e346a"> 78</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1SVFG.html#aa9f520779475e4783eccc45c460e346a">ActualINSVFGNodeSet</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99"> 79</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">ActualOUTSVFGNodeSet</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a8859409373454b6b3d1252776e169cf5"> 80</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1SVFG.html#a8859409373454b6b3d1252776e169cf5">FormalINSVFGNodeSet</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#acb7262c3b9161c77eb1b491048152fb0"> 81</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1SVFG.html#acb7262c3b9161c77eb1b491048152fb0">FormalOUTSVFGNodeSet</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a727af89a305e48f399ad33cc7149dbcb"> 82</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const CallICFGNode*, ActualINSVFGNodeSet></a> <a class="code" href="classSVF_1_1SVFG.html#a727af89a305e48f399ad33cc7149dbcb">CallSiteToActualINsMapTy</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a7c4e9c0fad457a2dc81a85f96fcec9ec"> 83</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const CallICFGNode*, ActualOUTSVFGNodeSet></a> <a class="code" href="classSVF_1_1SVFG.html#a7c4e9c0fad457a2dc81a85f96fcec9ec">CallSiteToActualOUTsMapTy</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a2b4850c833564916c7fce46d55672038"> 84</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFFunction*, FormalINSVFGNodeSet></a> <a class="code" href="classSVF_1_1SVFG.html#a2b4850c833564916c7fce46d55672038">FunctionToFormalINsMapTy</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ac4c65501e9beba5495a57dd469f78e5b"> 85</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFFunction*, FormalOUTSVFGNodeSet></a> <a class="code" href="classSVF_1_1SVFG.html#ac4c65501e9beba5495a57dd469f78e5b">FunctionToFormalOUTsMapTy</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#acdbe1c510273107b708935061b6c4127"> 86</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">MemSSA::MUSet</a> <a class="code" href="classSVF_1_1SVFG.html#acdbe1c510273107b708935061b6c4127">MUSet</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a8843ab4a4608f7f5f46f68ad31314c07"> 87</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">MemSSA::CHISet</a> <a class="code" href="classSVF_1_1SVFG.html#a8843ab4a4608f7f5f46f68ad31314c07">CHISet</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#aef7ee9d802934d51b3761663bdaf0c05"> 88</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f">MemSSA::PHISet</a> <a class="code" href="classSVF_1_1SVFG.html#aef7ee9d802934d51b3761663bdaf0c05">PHISet</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a7f4deffe7e13352b8c13eab110c834cc"> 89</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSAMU.html">MemSSA::MU</a> <a class="code" href="classSVF_1_1SVFG.html#a7f4deffe7e13352b8c13eab110c834cc">MU</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a60df52c14b303562ff5d73c7836e3495"> 90</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSACHI.html">MemSSA::CHI</a> <a class="code" href="classSVF_1_1SVFG.html#a60df52c14b303562ff5d73c7836e3495">CHI</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a86d4a41a881a3d2e5def103d7ba8bb2f"> 91</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1LoadMU.html">MemSSA::LOADMU</a> <a class="code" href="classSVF_1_1SVFG.html#a86d4a41a881a3d2e5def103d7ba8bb2f">LOADMU</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ad14cdbb3f1df1f716aa03b4d39f4e52b"> 92</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1StoreCHI.html">MemSSA::STORECHI</a> <a class="code" href="classSVF_1_1SVFG.html#ad14cdbb3f1df1f716aa03b4d39f4e52b">STORECHI</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a047573d70182da351b9e3bbf66ca0056"> 93</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1RetMU.html">MemSSA::RETMU</a> <a class="code" href="classSVF_1_1SVFG.html#a047573d70182da351b9e3bbf66ca0056">RETMU</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a101c5a8b31baf5c5613144f6e277abe9"> 94</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1EntryCHI.html">MemSSA::ENTRYCHI</a> <a class="code" href="classSVF_1_1SVFG.html#a101c5a8b31baf5c5613144f6e277abe9">ENTRYCHI</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a5f3e0fbf83621cc661d2c59800756727"> 95</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CallCHI.html">MemSSA::CALLCHI</a> <a class="code" href="classSVF_1_1SVFG.html#a5f3e0fbf83621cc661d2c59800756727">CALLCHI</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#acd9fd6597e5dedf3c14a430830c7dd08"> 96</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CallMU.html">MemSSA::CALLMU</a> <a class="code" href="classSVF_1_1SVFG.html#acd9fd6597e5dedf3c14a430830c7dd08">CALLMU</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#aafa1b445bd3578daaba8f82e517745f1"> 99</a></span>  MSSAVarToDefMapTy <a class="code" href="classSVF_1_1SVFG.html#aafa1b445bd3578daaba8f82e517745f1">MSSAVarToDefMap</a>; </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#af9313ebec4a52fd887169b7c6373a7d4"> 100</a></span>  CallSiteToActualINsMapTy <a class="code" href="classSVF_1_1SVFG.html#af9313ebec4a52fd887169b7c6373a7d4">callSiteToActualINMap</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a39873b954b6e0eb0641f56ca4cd06ef9"> 101</a></span>  CallSiteToActualOUTsMapTy <a class="code" href="classSVF_1_1SVFG.html#a39873b954b6e0eb0641f56ca4cd06ef9">callSiteToActualOUTMap</a>;</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ae51cd0493e4e767848b96b69045762fd"> 102</a></span>  FunctionToFormalINsMapTy <a class="code" href="classSVF_1_1SVFG.html#ae51cd0493e4e767848b96b69045762fd">funToFormalINMap</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a7d58f9fe97071ec9936174689cb99301"> 103</a></span>  FunctionToFormalOUTsMapTy <a class="code" href="classSVF_1_1SVFG.html#a7d58f9fe97071ec9936174689cb99301">funToFormalOUTMap</a>;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3"> 104</a></span>  <a class="code" href="classSVF_1_1SVFGStat.html">SVFGStat</a> * <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#aa6a563cab8678b2256ca6ae7838285c8"> 105</a></span>  std::unique_ptr<MemSSA> <a class="code" href="classSVF_1_1SVFG.html#aa6a563cab8678b2256ca6ae7838285c8">mssa</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a0d6cfa496e6885fe31b6b7a651fa01a8"> 106</a></span>  <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* <a class="code" href="classSVF_1_1SVFG.html#a0d6cfa496e6885fe31b6b7a651fa01a8">pta</a>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a82a93d9b7fcf1938e3090a0826a1ca7e">destroy</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="classSVF_1_1SVFG.html#a07d48490eda50ee6d31f295150409cf3">SVFG</a>(std::unique_ptr<MemSSA> mssa, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">VFGK</a> k);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a0920e9f9896531959d74ae61013d96d6">buildSVFG</a>();</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="keyword">public</span>:</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a710a36fc3f4ad15010c4469abcd032e5"> 119</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1SVFG.html#a710a36fc3f4ad15010c4469abcd032e5">~SVFG</a>()</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="classSVF_1_1SVFG.html#a82a93d9b7fcf1938e3090a0826a1ca7e">destroy</a>();</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> </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a8ba934714a7f2caf2e041002fdb66137"> 125</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFGStat.html">SVFGStat</a>* <a class="code" href="classSVF_1_1SVFG.html#a8ba934714a7f2caf2e041002fdb66137">getStat</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#aeba803e60699f9d9422596d161d44241"> 131</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#aeba803e60699f9d9422596d161d44241">clearMSSA</a>()</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  mssa = <span class="keyword">nullptr</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> </div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a49a910bc4ea6e98d1584e74a018badc9"> 137</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MemSSA.html">MemSSA</a>* <a class="code" href="classSVF_1_1SVFG.html#a49a910bc4ea6e98d1584e74a018badc9">getMSSA</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">return</span> mssa.get();</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ab6c337637ccc9bbf0bcc7153b427f7ca"> 143</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* <a class="code" href="classSVF_1_1SVFG.html#ab6c337637ccc9bbf0bcc7153b427f7ca">getPTA</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFG.html#a0d6cfa496e6885fe31b6b7a651fa01a8">pta</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11"> 149</a></span>  <span class="keyword">inline</span> SVFGNode* <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(<span class="keywordtype">id</span>);</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> </div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a1b9d1ad76785ae0eb07979aa75325640"> 155</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#a1b9d1ad76785ae0eb07979aa75325640">hasSVFGNode</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a30eb9d717ad5bc8a9109a7bdef38f4a1">hasVFGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a49fc2c505720d5cfa57231529d1c7534">getInterVFEdgesForIndirectCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a5fdaddc52e7342b834d76d64c1a1e498">dump</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& file, <span class="keywordtype">bool</span> simple = <span class="keyword">false</span>);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#aefca97f043b3e220ef6012a049b83fdf">connectCallerAndCallee</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb"> 170</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> SVFGNode* <a class="code" href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">getDefSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(pagNode));</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#adc9fbb4553472b238d6c3bb5062279cb">performStat</a>();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a21577bc4b4e55b23aa55083f5321b399"> 180</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#a21577bc4b4e55b23aa55083f5321b399">hasActualINSVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> callSiteToActualINMap.find(cs)!=callSiteToActualINMap.end();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ab1fde654cc464c5b4d1bafff83d346ed"> 185</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#ab1fde654cc464c5b4d1bafff83d346ed">hasActualOUTSVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">return</span> callSiteToActualOUTMap.find(cs)!=callSiteToActualOUTMap.end();</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> </div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a65f28035e0fa5bebf76d28612b2f8ba8"> 190</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#a65f28035e0fa5bebf76d28612b2f8ba8">hasFormalINSVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">return</span> funToFormalINMap.find(fun)!=funToFormalINMap.end();</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"><a class="line" href="classSVF_1_1SVFG.html#a1f8c60ad57bf473e0186b794d666b5c2"> 195</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#a1f8c60ad57bf473e0186b794d666b5c2">hasFormalOUTSVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">return</span> funToFormalOUTMap.find(fun)!=funToFormalOUTMap.end();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a475205e221890204c7770c414ee63975"> 203</a></span>  <span class="keyword">inline</span> ActualINSVFGNodeSet& <a class="code" href="classSVF_1_1SVFG.html#a475205e221890204c7770c414ee63975">getActualINSVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)</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>  <span class="keywordflow">return</span> callSiteToActualINMap[cs];</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a5b7ae610bee28acc2905ca82928e714f"> 208</a></span>  <span class="keyword">inline</span> ActualOUTSVFGNodeSet& <a class="code" href="classSVF_1_1SVFG.html#a5b7ae610bee28acc2905ca82928e714f">getActualOUTSVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">return</span> callSiteToActualOUTMap[cs];</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a9d0714075d6071c26d26cf16c4dec7c5"> 213</a></span>  <span class="keyword">inline</span> FormalINSVFGNodeSet& <a class="code" href="classSVF_1_1SVFG.html#a9d0714075d6071c26d26cf16c4dec7c5">getFormalINSVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">return</span> funToFormalINMap[fun];</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a287c337697eed7d92889bca0a0e370d7"> 218</a></span>  <span class="keyword">inline</span> FormalOUTSVFGNodeSet& <a class="code" href="classSVF_1_1SVFG.html#a287c337697eed7d92889bca0a0e370d7">getFormalOUTSVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">return</span> funToFormalOUTMap[fun];</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1SVFG.html#ae2cff3c963136f474fac0a66aa8cff7b">isFunEntrySVFGNode</a>(<span class="keyword">const</span> SVFGNode* node) <span class="keyword">const</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1SVFG.html#ad189e45b0c810e68566ccc3bdb3f2e59">isCallSiteRetSVFGNode</a>(<span class="keyword">const</span> SVFGNode* node) <span class="keyword">const</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a931d8b82e10a54d68c68cf6bd80264be"> 231</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a931d8b82e10a54d68c68cf6bd80264be">removeSVFGEdge</a>(SVFGEdge* edge)</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <a class="code" href="classSVF_1_1VFG.html#aeb24b155fe31813b2e6dc0564f55738a">removeVFGEdge</a>(edge);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a700c5fc6c1cb4136e55196fe3d393b8b"> 236</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a700c5fc6c1cb4136e55196fe3d393b8b">removeSVFGNode</a>(SVFGNode* node)</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_1VFG.html#a122aa5ad874170ef644cee8705f1ef3e">removeVFGNode</a>(node);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297"> 242</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297">addSVFGEdge</a>(SVFGEdge* edge)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a84cf5facb15e1d598c2527fba0c7634d">addVFGEdge</a>(edge);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ac965abfbe9bdc872f98b36a171a7b5aa"> 248</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SVFG.html#ac965abfbe9bdc872f98b36a171a7b5aa">getSVFGNodeNum</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericGraph.html#a38122734cbe71551a420dfb7fee2012e">nodeNum</a>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a8dd513e8e5343beeb5d117c1ff4e45ea"> 256</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1DummyVersionPropSVFGNode.html">DummyVersionPropSVFGNode</a> *<a class="code" href="classSVF_1_1SVFG.html#a8dd513e8e5343beeb5d117c1ff4e45ea">addDummyVersionPropSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <span class="keywordtype">object</span>, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> version)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <a class="code" href="classSVF_1_1DummyVersionPropSVFGNode.html">DummyVersionPropSVFGNode</a> *dvpNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1DummyVersionPropSVFGNode.html">DummyVersionPropSVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++, <span class="keywordtype">object</span>, version);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="comment">// Not going through add[S]VFGNode because we have no ICFG edge.</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="classSVF_1_1GenericGraph.html#a0a8831a5429005ff9d71adbd6bf3994f">addGNode</a>(dvpNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), dvpNode);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">return</span> dvpNode;</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>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a7ce9ec638995467c211958262be08ee1">writeToFile</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& filename);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a9da50b8f467066b478143af64f7c9858">readFile</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& filename);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* <a class="code" href="classSVF_1_1SVFG.html#a910298ed854a6b88b9dae44181ca72de">getMRVERFromString</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& input);</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> <span class="keyword">protected</span>:</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>  SVFGEdge* <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> dstId, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  SVFGEdge* <a class="code" href="classSVF_1_1SVFG.html#af8ceb1ebf745e6803c606c41f7a482ac">addCallIndirectVFEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> dstId, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts,<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  SVFGEdge* <a class="code" href="classSVF_1_1SVFG.html#a8ebf0e285c69db8332a1f8914d6190f6">addRetIndirectVFEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> dstId, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts,<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  SVFGEdge* <a class="code" href="classSVF_1_1SVFG.html#a1aba3845bad017f81cd5f938db03a161">addThreadMHPIndirectVFEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> dstId, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  SVFGEdge* <a class="code" href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">addInterIndirectVFCallEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* src, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* dst,<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  SVFGEdge* <a class="code" href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">addInterIndirectVFRetEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* src, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* dst,<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </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>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#ac9ab2a95cd7a09bbe4b4aa3e6fafaf62">connectAInAndFIn</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* formalIn, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges)</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>  SVFGEdge* edge = <a class="code" href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">addInterIndirectVFCallEdge</a>(actualIn, formalIn,csId);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  edges.insert(edge);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a402dfe93b8692be453c4f76d048b690a"> 293</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a402dfe93b8692be453c4f76d048b690a">connectFOutAndAOut</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* formalOut, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  SVFGEdge* edge = <a class="code" href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">addInterIndirectVFRetEdge</a>(formalOut, actualOut,csId);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  edges.insert(edge);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ac1acdf7bc468d7734359591e45f485fe"> 303</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#ac1acdf7bc468d7734359591e45f485fe">getInterVFEdgeAtIndCSFromAPToFP</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* cs_arg, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fun_arg, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>*, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges)</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  SVFGNode* actualParam = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(cs_arg));</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  SVFGNode* formalParam = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(fun_arg));</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  SVFGEdge* edge = <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(actualParam, formalParam, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8383c27feab3f1acc67cacef9744c04a">SVFGEdge::CallDirVF</a>, csId);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  assert(edge != <span class="keyword">nullptr</span> && <span class="stringliteral">"Can not find inter value flow edge from aparam to fparam"</span>);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  edges.insert(edge);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</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"><a class="line" href="classSVF_1_1SVFG.html#ab2b969b7d5922427622dd875e6b8fe14"> 312</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#ab2b969b7d5922427622dd875e6b8fe14">getInterVFEdgeAtIndCSFromFRToAR</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fun_ret, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* cs_ret, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges)</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>  SVFGNode* formalRet = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(fun_ret));</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  SVFGNode* actualRet = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(cs_ret));</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  SVFGEdge* edge = <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(formalRet, actualRet, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8288c583cfcbfdf9aa2ac2103c0e7191">SVFGEdge::RetDirVF</a>, csId);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  assert(edge != <span class="keyword">nullptr</span> && <span class="stringliteral">"Can not find inter value flow edge from fret to aret"</span>);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  edges.insert(edge);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#afbaf925e1e165f75161999229fa5f782"> 321</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#afbaf925e1e165f75161999229fa5f782">getInterVFEdgeAtIndCSFromAInToFIn</a>(<a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges)</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> outIt = actualIn-><a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), outEit = actualIn-><a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); outIt != outEit; ++outIt)</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>  SVFGEdge* edge = *outIt;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">if</span> (edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFun() == callee)</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  edges.insert(edge);</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>  }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a7a88391e0c2cf8a57238dec32c2474a3"> 331</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a7a88391e0c2cf8a57238dec32c2474a3">getInterVFEdgeAtIndCSFromFOutToAOut</a>(<a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges)</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="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> inIt = actualOut-><a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), inEit = actualOut-><a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); inIt != inEit; ++inIt)</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  SVFGEdge* edge = *inIt;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span> (edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getFun() == callee)</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  edges.insert(edge);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  }</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> </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> </div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e"> 345</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">setDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode, <span class="keyword">const</span> SVFGNode* node)</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>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">VFG::setDef</a>(pagNode, node);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  }</div><div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d"> 349</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">VFG::getDef</a>(pagNode);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  }</div><div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a926c79813d5cfbd16201832024b95190"> 353</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#a926c79813d5cfbd16201832024b95190">hasDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#ab5b63b4f6317bfb5875f2b977bcf26a4">VFG::hasDef</a>(pagNode);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#aa3ebc066d376e7ed508d2bce49fa864d"> 361</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#aa3ebc066d376e7ed508d2bce49fa864d">setDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* mvar, <span class="keyword">const</span> SVFGNode* node)</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>  MSSAVarToDefMapTy::iterator it = MSSAVarToDefMap.find(mvar);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">if</span>(it==MSSAVarToDefMap.end())</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>  MSSAVarToDefMap[mvar] = node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  assert(<a class="code" href="classSVF_1_1SVFG.html#a1b9d1ad76785ae0eb07979aa75325640">hasSVFGNode</a>(node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) && <span class="stringliteral">"not in the map!!"</span>);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  assert((it->second == node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) && <span class="stringliteral">"a SVFIR node can only have unique definition "</span>);</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"><a class="line" href="classSVF_1_1SVFG.html#a55a26b88ffe786b04184a29ae72575e7"> 374</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1SVFG.html#a55a26b88ffe786b04184a29ae72575e7">getDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* mvar)<span class="keyword"> const</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  MSSAVarToDefMapTy::const_iterator it = MSSAVarToDefMap.find(mvar);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  assert(it!=MSSAVarToDefMap.end() && <span class="stringliteral">"memory SSA does not have a definition??"</span>);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  }</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#abddfc95cf644d0729ee29eccf95699f1">addSVFGNodesForAddrTakenVars</a>();</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a164a3df08fc24bacc0b97aee8b6eec38">connectIndirectSVFGEdges</a>();</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a5921483cd5e1bf77b1b2bc8fb3250612">connectFromGlobalToProgEntry</a>();</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div><div class="line"><a name="l00390"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43"> 390</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(SVFGNode* node, <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode)</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  {</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(node, icfgNode);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  }</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ab4690114393820f580e805d2e0d6a41d"> 396</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#ab4690114393820f580e805d2e0d6a41d">addFormalINSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* funEntry, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* resVer, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> nodeId)</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>(nodeId, resVer, funEntry);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode, <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(funEntry-><a class="code" href="classSVF_1_1FunEntryICFGNode.html#ac2451fdc53f319bc92528af7edc94b2d">getFun</a>()));</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <a class="code" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">setDef</a>(resVer,sNode);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  funToFormalINMap[funEntry-><a class="code" href="classSVF_1_1FunEntryICFGNode.html#ac2451fdc53f319bc92528af7edc94b2d">getFun</a>()].set(sNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> </div><div class="line"><a name="l00405"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a804824faa3a042cb1b63edd9e9eb7207"> 405</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a804824faa3a042cb1b63edd9e9eb7207">addFormalOUTSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* funExit, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* ver, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> nodeId)</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>(nodeId, ver, funExit);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode,<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">getFunExitICFGNode</a>(funExit-><a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>()));</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  funToFormalOUTMap[funExit-><a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>()].set(sNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  }</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> </div><div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a923924d3887c668b355f4029502a3754"> 413</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a923924d3887c668b355f4029502a3754">addActualINSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callsite, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* ver, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> nodeId)</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>(nodeId, callsite, ver);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode,<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(callsite-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()));</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  callSiteToActualINMap[callsite].set(sNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> </div><div class="line"><a name="l00421"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a74aa824a68f99756ac3e65231c7bc2e9"> 421</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a74aa824a68f99756ac3e65231c7bc2e9">addActualOUTSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callsite, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* resVer, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> nodeId)</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>(nodeId, callsite, resVer);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode, <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf">getRetICFGNode</a>(callsite-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()));</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <a class="code" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">setDef</a>(resVer,sNode);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  callSiteToActualOUTMap[callsite].set(sNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  }</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> </div><div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a0554abe7c072b66ab24a900284646572"> 430</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a0554abe7c072b66ab24a900284646572">addIntraMSSAPHISVFGNode</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* BlockICFGNode, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<u32_t,const MRVer*>::const_iterator</a> opVerBegin,</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<u32_t,const MRVer*>::const_iterator</a> opVerEnd, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* resVer, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> nodeId)</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <a class="code" href="classSVF_1_1IntraMSSAPHISVFGNode.html">IntraMSSAPHISVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1IntraMSSAPHISVFGNode.html">IntraMSSAPHISVFGNode</a>(nodeId, resVer);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode, BlockICFGNode);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">for</span>(MemSSA::PHI::OPVers::const_iterator it = opVerBegin, eit=opVerEnd; it!=eit; ++it)</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  sNode-><a class="code" href="classSVF_1_1MSSAPHISVFGNode.html#a928a57d7f518c5af98a0245d9221e671">setOpVer</a>(it->first,it->second);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <a class="code" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">setDef</a>(resVer,sNode);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  }</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> </div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> </div><div class="line"><a name="l00442"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a23ca21b90feca5e7d00c9ba9f489374a"> 442</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#a23ca21b90feca5e7d00c9ba9f489374a">hasFuncEntryChi</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)<span class="keyword"> const</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">return</span> (funToFormalINMap.find(func) != funToFormalINMap.end());</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  }</div><div class="line"><a name="l00446"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a32378226c18a0b1e22271a2338a635f6"> 446</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#a32378226c18a0b1e22271a2338a635f6">hasFuncRetMu</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)<span class="keyword"> const</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">return</span> (funToFormalOUTMap.find(func) != funToFormalOUTMap.end());</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  }</div><div class="line"><a name="l00450"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ad9cc1581261182b56ae232d9a9b13296"> 450</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#ad9cc1581261182b56ae232d9a9b13296">hasCallSiteChi</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">return</span> (callSiteToActualOUTMap.find(cs) != callSiteToActualOUTMap.end());</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  }</div><div class="line"><a name="l00454"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a842f6f2325c9e93ea96367e9cf624ee8"> 454</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#a842f6f2325c9e93ea96367e9cf624ee8">hasCallSiteMu</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordflow">return</span> (callSiteToActualINMap.find(cs) != callSiteToActualINMap.end());</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  }</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> };</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> </div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> </div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <span class="comment">/* !</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="comment"> * GenericGraphTraits specializations for SVFG to be used for generic graph algorithms.</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> <span class="comment"> * Provide graph traits for traversing from a SVFG node using standard graph traversals.</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> <span class="comment"> */</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="comment">//template<> struct GenericGraphTraits<SVF::SVFGNode*>: public GenericGraphTraits<SVF::GenericNode<SVF::SVFGNode,SVF::SVFGEdge>* > {</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="comment">//};</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> <span class="comment">//</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> <span class="comment"></span><span class="comment">//template<></span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <span class="comment">//struct GenericGraphTraits<Inverse<SVF::SVFGNode *> > : public GenericGraphTraits<Inverse<SVF::GenericNode<SVF::SVFGNode,SVF::SVFGEdge>* > > {</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="comment">//};</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> </div><div class="line"><a name="l00477"></a><span class="lineno"><a class="line" href="structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html"> 477</a></span> <span class="keyword">template</span><> <span class="keyword">struct </span><a class="code" href="structSVF_1_1GenericGraphTraits.html">GenericGraphTraits</a><<a class="code" href="namespaceSVF.html">SVF</a>::<a class="code" href="classSVF_1_1SVFG.html">SVFG</a>*> : <span class="keyword">public</span> <a class="code" href="structSVF_1_1GenericGraphTraits.html">GenericGraphTraits</a><SVF::GenericGraph<SVF::SVFGNode,SVF::SVFGEdge>* ></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> {</div><div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html#a0e3ed0946d46830533f184f12428bbb0"> 479</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGNode.html">SVF::SVFGNode</a> *<a class="code" href="structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html#a0e3ed0946d46830533f184f12428bbb0">NodeRef</a>;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> };</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> </div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> } <span class="comment">// End namespace llvm</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> </div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> <span class="preprocessor">#endif </span><span class="comment">/* SVFG_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1SVFG_html_a39873b954b6e0eb0641f56ca4cd06ef9"><div class="ttname"><a href="classSVF_1_1SVFG.html#a39873b954b6e0eb0641f56ca4cd06ef9">SVF::SVFG::callSiteToActualOUTMap</a></div><div class="ttdeci">CallSiteToActualOUTsMapTy callSiteToActualOUTMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00101">SVFG.h:101</a></div></div>
|
|
69
|
+
<a href="SVFG_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- SVFG.h -- Sparse value-flow graph--------------------------------------//</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"> * SVFG.h</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 28, 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">#ifndef SVFG_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define SVFG_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="VFG_8h.html">Graphs/VFG.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="SVFGNode_8h.html">Graphs/SVFGNode.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</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">class </span>PointerAnalysis;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9"> 40</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFGStat.html">SVFGStat</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a> <a class="code" href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVFGEdge</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df"> 43</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a> <a class="code" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVFGNode</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a11c50c2f81327753b3ff3ffdbe356812"> 44</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmVFGNode</a> <a class="code" href="namespaceSVF.html#a11c50c2f81327753b3ff3ffdbe356812">ActualParmSVFGNode</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a77b8b8ca831e1eba3e47f2ca29667f67"> 45</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetVFGNode</a> <a class="code" href="namespaceSVF.html#a77b8b8ca831e1eba3e47f2ca29667f67">ActualRetSVFGNode</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ad466edced10faeafd48e96daf193b8a9"> 46</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmVFGNode</a> <a class="code" href="namespaceSVF.html#ad466edced10faeafd48e96daf193b8a9">FormalParmSVFGNode</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ae5987da3ffd5681e8ec4ef14ba54588e"> 47</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetVFGNode</a> <a class="code" href="namespaceSVF.html#ae5987da3ffd5681e8ec4ef14ba54588e">FormalRetSVFGNode</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="namespaceSVF.html#aeccd0bd024319173c1cda5ff1a79c5ae"> 49</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1NullPtrVFGNode.html">NullPtrVFGNode</a> <a class="code" href="namespaceSVF.html#aeccd0bd024319173c1cda5ff1a79c5ae">NullPtrSVFGNode</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a26bd4f89dc154b9c6d34b6a517777934"> 50</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1StmtVFGNode.html">StmtVFGNode</a> <a class="code" href="namespaceSVF.html#a26bd4f89dc154b9c6d34b6a517777934">StmtSVFGNode</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a959453cbb8ff2d852b526fd1ff74ce49"> 51</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1AddrVFGNode.html">AddrVFGNode</a> <a class="code" href="namespaceSVF.html#a959453cbb8ff2d852b526fd1ff74ce49">AddrSVFGNode</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ab98f7c9e6311e649cdfd5d2f3f8e59be"> 52</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CopyVFGNode.html">CopyVFGNode</a> <a class="code" href="namespaceSVF.html#ab98f7c9e6311e649cdfd5d2f3f8e59be">CopySVFGNode</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a54c5725186e66ead6faf53c10a288714"> 53</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreVFGNode</a> <a class="code" href="namespaceSVF.html#a54c5725186e66ead6faf53c10a288714">StoreSVFGNode</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a3ce49be3724e1e8423ccdfa726fbf6c8"> 54</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1LoadVFGNode.html">LoadVFGNode</a> <a class="code" href="namespaceSVF.html#a3ce49be3724e1e8423ccdfa726fbf6c8">LoadSVFGNode</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a65a3be463427d1112a8b87f072f3d22f"> 55</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GepVFGNode.html">GepVFGNode</a> <a class="code" href="namespaceSVF.html#a65a3be463427d1112a8b87f072f3d22f">GepSVFGNode</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a71d4e214e049f02bf26537cba6328673"> 56</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PHIVFGNode.html">PHIVFGNode</a> <a class="code" href="namespaceSVF.html#a71d4e214e049f02bf26537cba6328673">PHISVFGNode</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ad772e1586e369943f37c22641e93e941"> 57</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1IntraPHIVFGNode.html">IntraPHIVFGNode</a> <a class="code" href="namespaceSVF.html#ad772e1586e369943f37c22641e93e941">IntraPHISVFGNode</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a0f7ff1d9a479df87241b45bb9c81d3ca"> 58</a></span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1InterPHIVFGNode.html">InterPHIVFGNode</a> <a class="code" href="namespaceSVF.html#a0f7ff1d9a479df87241b45bb9c81d3ca">InterPHISVFGNode</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html"> 65</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFG.html">SVFG</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1VFG.html">VFG</a></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> {</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ab2f81db3935389480baa5cb14e15e9d7"> 67</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFGBuilder.html">SVFGBuilder</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a93a4287b55425abc188e5f5f2de54297"> 68</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SaberSVFGBuilder.html">SaberSVFGBuilder</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a665c93b68f49078c281270a028d04445"> 69</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFG.html#a665c93b68f49078c281270a028d04445">TaintSVFGBuilder</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a9ccd530dc4c49b0df372a2ce95b66921"> 70</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFG.html#a9ccd530dc4c49b0df372a2ce95b66921">DDASVFGBuilder</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ac0e43f4a2043538c9046f95826caa725"> 71</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1MTASVFGBuilder.html">MTASVFGBuilder</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a67654d252e9e93b74e35ba247048b41a"> 72</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1SVFG.html#a67654d252e9e93b74e35ba247048b41a">RcSvfgBuilder</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a3d04ce1429b1edf90c9c0833e3b5a4a9"> 75</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFG.html#aca5b658b87728ac8bd7e562d51e771f8">VFGNodeIDToNodeMapTy</a> <a class="code" href="classSVF_1_1SVFG.html#a3d04ce1429b1edf90c9c0833e3b5a4a9">SVFGNodeIDToNodeMapTy</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a2590182f3b28c7fc8b2b53c09ec4305c"> 76</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const PAGNode*, NodeID></a> <a class="code" href="classSVF_1_1SVFG.html#a2590182f3b28c7fc8b2b53c09ec4305c">PAGNodeToDefMapTy</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ac84d3749671f177b14749a825e36efe3"> 77</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const MRVer*, NodeID></a> <a class="code" href="classSVF_1_1SVFG.html#ac84d3749671f177b14749a825e36efe3">MSSAVarToDefMapTy</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#aa9f520779475e4783eccc45c460e346a"> 78</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1SVFG.html#aa9f520779475e4783eccc45c460e346a">ActualINSVFGNodeSet</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99"> 79</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">ActualOUTSVFGNodeSet</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a8859409373454b6b3d1252776e169cf5"> 80</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1SVFG.html#a8859409373454b6b3d1252776e169cf5">FormalINSVFGNodeSet</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#acb7262c3b9161c77eb1b491048152fb0"> 81</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1SVFG.html#acb7262c3b9161c77eb1b491048152fb0">FormalOUTSVFGNodeSet</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a727af89a305e48f399ad33cc7149dbcb"> 82</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const CallICFGNode*, ActualINSVFGNodeSet></a> <a class="code" href="classSVF_1_1SVFG.html#a727af89a305e48f399ad33cc7149dbcb">CallSiteToActualINsMapTy</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a7c4e9c0fad457a2dc81a85f96fcec9ec"> 83</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const CallICFGNode*, ActualOUTSVFGNodeSet></a> <a class="code" href="classSVF_1_1SVFG.html#a7c4e9c0fad457a2dc81a85f96fcec9ec">CallSiteToActualOUTsMapTy</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a2b4850c833564916c7fce46d55672038"> 84</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFFunction*, FormalINSVFGNodeSet></a> <a class="code" href="classSVF_1_1SVFG.html#a2b4850c833564916c7fce46d55672038">FunctionToFormalINsMapTy</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ac4c65501e9beba5495a57dd469f78e5b"> 85</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFFunction*, FormalOUTSVFGNodeSet></a> <a class="code" href="classSVF_1_1SVFG.html#ac4c65501e9beba5495a57dd469f78e5b">FunctionToFormalOUTsMapTy</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#acdbe1c510273107b708935061b6c4127"> 86</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">MemSSA::MUSet</a> <a class="code" href="classSVF_1_1SVFG.html#acdbe1c510273107b708935061b6c4127">MUSet</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a8843ab4a4608f7f5f46f68ad31314c07"> 87</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">MemSSA::CHISet</a> <a class="code" href="classSVF_1_1SVFG.html#a8843ab4a4608f7f5f46f68ad31314c07">CHISet</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#aef7ee9d802934d51b3761663bdaf0c05"> 88</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f">MemSSA::PHISet</a> <a class="code" href="classSVF_1_1SVFG.html#aef7ee9d802934d51b3761663bdaf0c05">PHISet</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a7f4deffe7e13352b8c13eab110c834cc"> 89</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSAMU.html">MemSSA::MU</a> <a class="code" href="classSVF_1_1SVFG.html#a7f4deffe7e13352b8c13eab110c834cc">MU</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a60df52c14b303562ff5d73c7836e3495"> 90</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSACHI.html">MemSSA::CHI</a> <a class="code" href="classSVF_1_1SVFG.html#a60df52c14b303562ff5d73c7836e3495">CHI</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a86d4a41a881a3d2e5def103d7ba8bb2f"> 91</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1LoadMU.html">MemSSA::LOADMU</a> <a class="code" href="classSVF_1_1SVFG.html#a86d4a41a881a3d2e5def103d7ba8bb2f">LOADMU</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ad14cdbb3f1df1f716aa03b4d39f4e52b"> 92</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1StoreCHI.html">MemSSA::STORECHI</a> <a class="code" href="classSVF_1_1SVFG.html#ad14cdbb3f1df1f716aa03b4d39f4e52b">STORECHI</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a047573d70182da351b9e3bbf66ca0056"> 93</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1RetMU.html">MemSSA::RETMU</a> <a class="code" href="classSVF_1_1SVFG.html#a047573d70182da351b9e3bbf66ca0056">RETMU</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a101c5a8b31baf5c5613144f6e277abe9"> 94</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1EntryCHI.html">MemSSA::ENTRYCHI</a> <a class="code" href="classSVF_1_1SVFG.html#a101c5a8b31baf5c5613144f6e277abe9">ENTRYCHI</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a5f3e0fbf83621cc661d2c59800756727"> 95</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CallCHI.html">MemSSA::CALLCHI</a> <a class="code" href="classSVF_1_1SVFG.html#a5f3e0fbf83621cc661d2c59800756727">CALLCHI</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#acd9fd6597e5dedf3c14a430830c7dd08"> 96</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CallMU.html">MemSSA::CALLMU</a> <a class="code" href="classSVF_1_1SVFG.html#acd9fd6597e5dedf3c14a430830c7dd08">CALLMU</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#aafa1b445bd3578daaba8f82e517745f1"> 99</a></span>  MSSAVarToDefMapTy <a class="code" href="classSVF_1_1SVFG.html#aafa1b445bd3578daaba8f82e517745f1">MSSAVarToDefMap</a>; </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#af9313ebec4a52fd887169b7c6373a7d4"> 100</a></span>  CallSiteToActualINsMapTy <a class="code" href="classSVF_1_1SVFG.html#af9313ebec4a52fd887169b7c6373a7d4">callSiteToActualINMap</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a39873b954b6e0eb0641f56ca4cd06ef9"> 101</a></span>  CallSiteToActualOUTsMapTy <a class="code" href="classSVF_1_1SVFG.html#a39873b954b6e0eb0641f56ca4cd06ef9">callSiteToActualOUTMap</a>;</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ae51cd0493e4e767848b96b69045762fd"> 102</a></span>  FunctionToFormalINsMapTy <a class="code" href="classSVF_1_1SVFG.html#ae51cd0493e4e767848b96b69045762fd">funToFormalINMap</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a7d58f9fe97071ec9936174689cb99301"> 103</a></span>  FunctionToFormalOUTsMapTy <a class="code" href="classSVF_1_1SVFG.html#a7d58f9fe97071ec9936174689cb99301">funToFormalOUTMap</a>;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3"> 104</a></span>  <a class="code" href="classSVF_1_1SVFGStat.html">SVFGStat</a> * <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#aa6a563cab8678b2256ca6ae7838285c8"> 105</a></span>  std::unique_ptr<MemSSA> <a class="code" href="classSVF_1_1SVFG.html#aa6a563cab8678b2256ca6ae7838285c8">mssa</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a0d6cfa496e6885fe31b6b7a651fa01a8"> 106</a></span>  <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* <a class="code" href="classSVF_1_1SVFG.html#a0d6cfa496e6885fe31b6b7a651fa01a8">pta</a>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a82a93d9b7fcf1938e3090a0826a1ca7e">destroy</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="classSVF_1_1SVFG.html#a07d48490eda50ee6d31f295150409cf3">SVFG</a>(std::unique_ptr<MemSSA> mssa, <a class="code" href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">VFGK</a> k);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a0920e9f9896531959d74ae61013d96d6">buildSVFG</a>();</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="keyword">public</span>:</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a710a36fc3f4ad15010c4469abcd032e5"> 119</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1SVFG.html#a710a36fc3f4ad15010c4469abcd032e5">~SVFG</a>()</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="classSVF_1_1SVFG.html#a82a93d9b7fcf1938e3090a0826a1ca7e">destroy</a>();</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> </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a8ba934714a7f2caf2e041002fdb66137"> 125</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFGStat.html">SVFGStat</a>* <a class="code" href="classSVF_1_1SVFG.html#a8ba934714a7f2caf2e041002fdb66137">getStat</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">stat</a>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#aeba803e60699f9d9422596d161d44241"> 131</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#aeba803e60699f9d9422596d161d44241">clearMSSA</a>()</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  mssa = <span class="keyword">nullptr</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> </div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a49a910bc4ea6e98d1584e74a018badc9"> 137</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MemSSA.html">MemSSA</a>* <a class="code" href="classSVF_1_1SVFG.html#a49a910bc4ea6e98d1584e74a018badc9">getMSSA</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">return</span> mssa.get();</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ab6c337637ccc9bbf0bcc7153b427f7ca"> 143</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* <a class="code" href="classSVF_1_1SVFG.html#ab6c337637ccc9bbf0bcc7153b427f7ca">getPTA</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFG.html#a0d6cfa496e6885fe31b6b7a651fa01a8">pta</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11"> 149</a></span>  <span class="keyword">inline</span> SVFGNode* <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">getVFGNode</a>(<span class="keywordtype">id</span>);</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> </div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a1b9d1ad76785ae0eb07979aa75325640"> 155</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#a1b9d1ad76785ae0eb07979aa75325640">hasSVFGNode</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a30eb9d717ad5bc8a9109a7bdef38f4a1">hasVFGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a49fc2c505720d5cfa57231529d1c7534">getInterVFEdgesForIndirectCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a5fdaddc52e7342b834d76d64c1a1e498">dump</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& file, <span class="keywordtype">bool</span> simple = <span class="keyword">false</span>);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#aefca97f043b3e220ef6012a049b83fdf">connectCallerAndCallee</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb"> 170</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> SVFGNode* <a class="code" href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">getDefSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(pagNode));</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ad2d19c5b80b01c8a7bb41100bb156279"> 176</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#ad2d19c5b80b01c8a7bb41100bb156279">hasDefSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFG.html#a926c79813d5cfbd16201832024b95190">hasDef</a>(pagNode) && <a class="code" href="classSVF_1_1SVFG.html#a1b9d1ad76785ae0eb07979aa75325640">hasSVFGNode</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(pagNode));</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#adc9fbb4553472b238d6c3bb5062279cb">performStat</a>();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a21577bc4b4e55b23aa55083f5321b399"> 186</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#a21577bc4b4e55b23aa55083f5321b399">hasActualINSVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> callSiteToActualINMap.find(cs)!=callSiteToActualINMap.end();</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> </div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ab1fde654cc464c5b4d1bafff83d346ed"> 191</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#ab1fde654cc464c5b4d1bafff83d346ed">hasActualOUTSVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> callSiteToActualOUTMap.find(cs)!=callSiteToActualOUTMap.end();</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"><a class="line" href="classSVF_1_1SVFG.html#a65f28035e0fa5bebf76d28612b2f8ba8"> 196</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#a65f28035e0fa5bebf76d28612b2f8ba8">hasFormalINSVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> funToFormalINMap.find(fun)!=funToFormalINMap.end();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a1f8c60ad57bf473e0186b794d666b5c2"> 201</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#a1f8c60ad57bf473e0186b794d666b5c2">hasFormalOUTSVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">return</span> funToFormalOUTMap.find(fun)!=funToFormalOUTMap.end();</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a475205e221890204c7770c414ee63975"> 209</a></span>  <span class="keyword">inline</span> ActualINSVFGNodeSet& <a class="code" href="classSVF_1_1SVFG.html#a475205e221890204c7770c414ee63975">getActualINSVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">return</span> callSiteToActualINMap[cs];</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> </div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a5b7ae610bee28acc2905ca82928e714f"> 214</a></span>  <span class="keyword">inline</span> ActualOUTSVFGNodeSet& <a class="code" href="classSVF_1_1SVFG.html#a5b7ae610bee28acc2905ca82928e714f">getActualOUTSVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> callSiteToActualOUTMap[cs];</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> </div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a9d0714075d6071c26d26cf16c4dec7c5"> 219</a></span>  <span class="keyword">inline</span> FormalINSVFGNodeSet& <a class="code" href="classSVF_1_1SVFG.html#a9d0714075d6071c26d26cf16c4dec7c5">getFormalINSVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">return</span> funToFormalINMap[fun];</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a287c337697eed7d92889bca0a0e370d7"> 224</a></span>  <span class="keyword">inline</span> FormalOUTSVFGNodeSet& <a class="code" href="classSVF_1_1SVFG.html#a287c337697eed7d92889bca0a0e370d7">getFormalOUTSVFGNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">return</span> funToFormalOUTMap[fun];</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1SVFG.html#ae2cff3c963136f474fac0a66aa8cff7b">isFunEntrySVFGNode</a>(<span class="keyword">const</span> SVFGNode* node) <span class="keyword">const</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1SVFG.html#ad189e45b0c810e68566ccc3bdb3f2e59">isCallSiteRetSVFGNode</a>(<span class="keyword">const</span> SVFGNode* node) <span class="keyword">const</span>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a931d8b82e10a54d68c68cf6bd80264be"> 237</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a931d8b82e10a54d68c68cf6bd80264be">removeSVFGEdge</a>(SVFGEdge* edge)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="classSVF_1_1VFG.html#aeb24b155fe31813b2e6dc0564f55738a">removeVFGEdge</a>(edge);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a700c5fc6c1cb4136e55196fe3d393b8b"> 242</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a700c5fc6c1cb4136e55196fe3d393b8b">removeSVFGNode</a>(SVFGNode* node)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="classSVF_1_1VFG.html#a122aa5ad874170ef644cee8705f1ef3e">removeVFGNode</a>(node);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297"> 248</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297">addSVFGEdge</a>(SVFGEdge* edge)</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a84cf5facb15e1d598c2527fba0c7634d">addVFGEdge</a>(edge);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ac965abfbe9bdc872f98b36a171a7b5aa"> 254</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SVFG.html#ac965abfbe9bdc872f98b36a171a7b5aa">getSVFGNodeNum</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericGraph.html#a38122734cbe71551a420dfb7fee2012e">nodeNum</a>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a8dd513e8e5343beeb5d117c1ff4e45ea"> 262</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1DummyVersionPropSVFGNode.html">DummyVersionPropSVFGNode</a> *<a class="code" href="classSVF_1_1SVFG.html#a8dd513e8e5343beeb5d117c1ff4e45ea">addDummyVersionPropSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <span class="keywordtype">object</span>, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> version)</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_1DummyVersionPropSVFGNode.html">DummyVersionPropSVFGNode</a> *dvpNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1DummyVersionPropSVFGNode.html">DummyVersionPropSVFGNode</a>(<a class="code" href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">totalVFGNode</a>++, <span class="keywordtype">object</span>, version);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="comment">// Not going through add[S]VFGNode because we have no ICFG edge.</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="code" href="classSVF_1_1GenericGraph.html#a0a8831a5429005ff9d71adbd6bf3994f">addGNode</a>(dvpNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), dvpNode);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">return</span> dvpNode;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a7ce9ec638995467c211958262be08ee1">writeToFile</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& filename);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a9da50b8f467066b478143af64f7c9858">readFile</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& filename);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* <a class="code" href="classSVF_1_1SVFG.html#a910298ed854a6b88b9dae44181ca72de">getMRVERFromString</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>& input);</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> <span class="keyword">protected</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>  SVFGEdge* <a class="code" href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">addIntraIndirectVFEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> dstId, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  SVFGEdge* <a class="code" href="classSVF_1_1SVFG.html#af8ceb1ebf745e6803c606c41f7a482ac">addCallIndirectVFEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> dstId, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts,<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  SVFGEdge* <a class="code" href="classSVF_1_1SVFG.html#a8ebf0e285c69db8332a1f8914d6190f6">addRetIndirectVFEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> dstId, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts,<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  SVFGEdge* <a class="code" href="classSVF_1_1SVFG.html#a1aba3845bad017f81cd5f938db03a161">addThreadMHPIndirectVFEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> dstId, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>& cpts);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  SVFGEdge* <a class="code" href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">addInterIndirectVFCallEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* src, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* dst,<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  SVFGEdge* <a class="code" href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">addInterIndirectVFRetEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* src, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* dst,<a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</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"> 291</span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#ac9ab2a95cd7a09bbe4b4aa3e6fafaf62">connectAInAndFIn</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn, <span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* formalIn, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges)</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>  SVFGEdge* edge = <a class="code" href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">addInterIndirectVFCallEdge</a>(actualIn, formalIn,csId);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  edges.insert(edge);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a402dfe93b8692be453c4f76d048b690a"> 299</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a402dfe93b8692be453c4f76d048b690a">connectFOutAndAOut</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* formalOut, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges)</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  SVFGEdge* edge = <a class="code" href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">addInterIndirectVFRetEdge</a>(formalOut, actualOut,csId);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">if</span> (edge != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  edges.insert(edge);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ac1acdf7bc468d7734359591e45f485fe"> 309</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#ac1acdf7bc468d7734359591e45f485fe">getInterVFEdgeAtIndCSFromAPToFP</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* cs_arg, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fun_arg, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>*, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges)</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  SVFGNode* actualParam = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(cs_arg));</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  SVFGNode* formalParam = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(fun_arg));</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  SVFGEdge* edge = <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(actualParam, formalParam, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8383c27feab3f1acc67cacef9744c04a">SVFGEdge::CallDirVF</a>, csId);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  assert(edge != <span class="keyword">nullptr</span> && <span class="stringliteral">"Can not find inter value flow edge from aparam to fparam"</span>);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  edges.insert(edge);</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"><a class="line" href="classSVF_1_1SVFG.html#ab2b969b7d5922427622dd875e6b8fe14"> 318</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#ab2b969b7d5922427622dd875e6b8fe14">getInterVFEdgeAtIndCSFromFRToAR</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* fun_ret, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* cs_ret, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges)</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  SVFGNode* formalRet = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(fun_ret));</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  SVFGNode* actualRet = <a class="code" href="classSVF_1_1SVFG.html#a7ace06b6c893b31f7dec2abe54e33e11">getSVFGNode</a>(<a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(cs_ret));</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  SVFGEdge* edge = <a class="code" href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">hasInterVFGEdge</a>(formalRet, actualRet, <a class="code" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8288c583cfcbfdf9aa2ac2103c0e7191">SVFGEdge::RetDirVF</a>, csId);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  assert(edge != <span class="keyword">nullptr</span> && <span class="stringliteral">"Can not find inter value flow edge from fret to aret"</span>);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  edges.insert(edge);</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_1SVFG.html#afbaf925e1e165f75161999229fa5f782"> 327</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#afbaf925e1e165f75161999229fa5f782">getInterVFEdgeAtIndCSFromAInToFIn</a>(<a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* actualIn, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges)</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>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> outIt = actualIn-><a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), outEit = actualIn-><a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); outIt != outEit; ++outIt)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  SVFGEdge* edge = *outIt;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">if</span> (edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFun() == callee)</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  edges.insert(edge);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div><div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a7a88391e0c2cf8a57238dec32c2474a3"> 337</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a7a88391e0c2cf8a57238dec32c2474a3">getInterVFEdgeAtIndCSFromFOutToAOut</a>(<a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* actualOut, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee, <a class="code" href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVFGEdgeSetTy</a>& edges)</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> inIt = actualOut-><a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), inEit = actualOut-><a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); inIt != inEit; ++inIt)</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>  SVFGEdge* edge = *inIt;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">if</span> (edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getFun() == callee)</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  edges.insert(edge);</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>  }</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="l00350"></a><span class="lineno"> 350</span> </div><div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e"> 351</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">setDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode, <span class="keyword">const</span> SVFGNode* node)</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>  <a class="code" href="classSVF_1_1VFG.html#a1e0b8c7df55e05739775e8a1c50cf660">VFG::setDef</a>(pagNode, node);</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_1SVFG.html#abd917826bf50ed409a307ce00562c97d"> 355</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">getDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">VFG::getDef</a>(pagNode);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  }</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a926c79813d5cfbd16201832024b95190"> 359</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#a926c79813d5cfbd16201832024b95190">hasDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pagNode)<span class="keyword"> const</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1VFG.html#ab5b63b4f6317bfb5875f2b977bcf26a4">VFG::hasDef</a>(pagNode);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#aa3ebc066d376e7ed508d2bce49fa864d"> 367</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#aa3ebc066d376e7ed508d2bce49fa864d">setDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* mvar, <span class="keyword">const</span> SVFGNode* node)</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  MSSAVarToDefMapTy::iterator it = MSSAVarToDefMap.find(mvar);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">if</span>(it==MSSAVarToDefMap.end())</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  MSSAVarToDefMap[mvar] = node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  assert(<a class="code" href="classSVF_1_1SVFG.html#a1b9d1ad76785ae0eb07979aa75325640">hasSVFGNode</a>(node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) && <span class="stringliteral">"not in the map!!"</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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  assert((it->second == node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) && <span class="stringliteral">"a SVFIR node can only have unique definition "</span>);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  }</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  }</div><div class="line"><a name="l00380"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a55a26b88ffe786b04184a29ae72575e7"> 380</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1SVFG.html#a55a26b88ffe786b04184a29ae72575e7">getDef</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* mvar)<span class="keyword"> const</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  MSSAVarToDefMapTy::const_iterator it = MSSAVarToDefMap.find(mvar);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  assert(it!=MSSAVarToDefMap.end() && <span class="stringliteral">"memory SSA does not have a definition??"</span>);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#abddfc95cf644d0729ee29eccf95699f1">addSVFGNodesForAddrTakenVars</a>();</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a164a3df08fc24bacc0b97aee8b6eec38">connectIndirectSVFGEdges</a>();</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a5921483cd5e1bf77b1b2bc8fb3250612">connectFromGlobalToProgEntry</a>();</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43"> 396</a></span>  <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(SVFGNode* node, <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode)</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <a class="code" href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">addVFGNode</a>(node, icfgNode);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> </div><div class="line"><a name="l00402"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ab4690114393820f580e805d2e0d6a41d"> 402</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#ab4690114393820f580e805d2e0d6a41d">addFormalINSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* funEntry, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* resVer, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> nodeId)</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>(nodeId, resVer, funEntry);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode, <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(funEntry-><a class="code" href="classSVF_1_1FunEntryICFGNode.html#ac2451fdc53f319bc92528af7edc94b2d">getFun</a>()));</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <a class="code" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">setDef</a>(resVer,sNode);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  funToFormalINMap[funEntry-><a class="code" href="classSVF_1_1FunEntryICFGNode.html#ac2451fdc53f319bc92528af7edc94b2d">getFun</a>()].set(sNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> </div><div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a804824faa3a042cb1b63edd9e9eb7207"> 411</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a804824faa3a042cb1b63edd9e9eb7207">addFormalOUTSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* funExit, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* ver, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> nodeId)</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>(nodeId, ver, funExit);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode,<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">getFunExitICFGNode</a>(funExit-><a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>()));</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  funToFormalOUTMap[funExit-><a class="code" href="classSVF_1_1FunExitICFGNode.html#a54dfbbebbfe18a8a493656d6ad8663be">getFun</a>()].set(sNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> </div><div class="line"><a name="l00419"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a923924d3887c668b355f4029502a3754"> 419</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a923924d3887c668b355f4029502a3754">addActualINSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callsite, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* ver, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> nodeId)</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>(nodeId, callsite, ver);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode,<a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">getCallICFGNode</a>(callsite-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()));</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  callSiteToActualINMap[callsite].set(sNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  }</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00427"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a74aa824a68f99756ac3e65231c7bc2e9"> 427</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a74aa824a68f99756ac3e65231c7bc2e9">addActualOUTSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callsite, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* resVer, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> nodeId)</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>(nodeId, callsite, resVer);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode, <a class="code" href="classSVF_1_1VFG.html#a25c2bbbc2e966e2aaa59a5b83363557a">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf">getRetICFGNode</a>(callsite-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()));</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <a class="code" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">setDef</a>(resVer,sNode);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  callSiteToActualOUTMap[callsite].set(sNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00436"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a0554abe7c072b66ab24a900284646572"> 436</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFG.html#a0554abe7c072b66ab24a900284646572">addIntraMSSAPHISVFGNode</a>(<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* BlockICFGNode, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<u32_t,const MRVer*>::const_iterator</a> opVerBegin,</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<u32_t,const MRVer*>::const_iterator</a> opVerEnd, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* resVer, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> nodeId)</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <a class="code" href="classSVF_1_1IntraMSSAPHISVFGNode.html">IntraMSSAPHISVFGNode</a>* sNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1IntraMSSAPHISVFGNode.html">IntraMSSAPHISVFGNode</a>(nodeId, resVer);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <a class="code" href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">addSVFGNode</a>(sNode, BlockICFGNode);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">for</span>(MemSSA::PHI::OPVers::const_iterator it = opVerBegin, eit=opVerEnd; it!=eit; ++it)</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  sNode-><a class="code" href="classSVF_1_1MSSAPHISVFGNode.html#a928a57d7f518c5af98a0245d9221e671">setOpVer</a>(it->first,it->second);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <a class="code" href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">setDef</a>(resVer,sNode);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  }</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> </div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div><div class="line"><a name="l00448"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a23ca21b90feca5e7d00c9ba9f489374a"> 448</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#a23ca21b90feca5e7d00c9ba9f489374a">hasFuncEntryChi</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)<span class="keyword"> const</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">return</span> (funToFormalINMap.find(func) != funToFormalINMap.end());</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  }</div><div class="line"><a name="l00452"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a32378226c18a0b1e22271a2338a635f6"> 452</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#a32378226c18a0b1e22271a2338a635f6">hasFuncRetMu</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func)<span class="keyword"> const</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordflow">return</span> (funToFormalOUTMap.find(func) != funToFormalOUTMap.end());</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  }</div><div class="line"><a name="l00456"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#ad9cc1581261182b56ae232d9a9b13296"> 456</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#ad9cc1581261182b56ae232d9a9b13296">hasCallSiteChi</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">return</span> (callSiteToActualOUTMap.find(cs) != callSiteToActualOUTMap.end());</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  }</div><div class="line"><a name="l00460"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFG.html#a842f6f2325c9e93ea96367e9cf624ee8"> 460</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFG.html#a842f6f2325c9e93ea96367e9cf624ee8">hasCallSiteMu</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">return</span> (callSiteToActualINMap.find(cs) != callSiteToActualINMap.end());</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  }</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> };</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> </div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> <span class="comment">/* !</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> <span class="comment"> * GenericGraphTraits specializations for SVFG to be used for generic graph algorithms.</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> <span class="comment"> * Provide graph traits for traversing from a SVFG node using standard graph traversals.</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <span class="comment"> */</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="comment">//template<> struct GenericGraphTraits<SVF::SVFGNode*>: public GenericGraphTraits<SVF::GenericNode<SVF::SVFGNode,SVF::SVFGEdge>* > {</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="comment">//};</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> <span class="comment">//</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="comment"></span><span class="comment">//template<></span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <span class="comment">//struct GenericGraphTraits<Inverse<SVF::SVFGNode *> > : public GenericGraphTraits<Inverse<SVF::GenericNode<SVF::SVFGNode,SVF::SVFGEdge>* > > {</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="comment">//};</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div><div class="line"><a name="l00483"></a><span class="lineno"><a class="line" href="structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html"> 483</a></span> <span class="keyword">template</span><> <span class="keyword">struct </span><a class="code" href="structSVF_1_1GenericGraphTraits.html">GenericGraphTraits</a><<a class="code" href="namespaceSVF.html">SVF</a>::<a class="code" href="classSVF_1_1SVFG.html">SVFG</a>*> : <span class="keyword">public</span> <a class="code" href="structSVF_1_1GenericGraphTraits.html">GenericGraphTraits</a><SVF::GenericGraph<SVF::SVFGNode,SVF::SVFGEdge>* ></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> {</div><div class="line"><a name="l00485"></a><span class="lineno"><a class="line" href="structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html#a0e3ed0946d46830533f184f12428bbb0"> 485</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VFGNode.html">SVF::SVFGNode</a> *<a class="code" href="structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html#a0e3ed0946d46830533f184f12428bbb0">NodeRef</a>;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> };</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> </div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> } <span class="comment">// End namespace llvm</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> </div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="preprocessor">#endif </span><span class="comment">/* SVFG_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1SVFG_html_a39873b954b6e0eb0641f56ca4cd06ef9"><div class="ttname"><a href="classSVF_1_1SVFG.html#a39873b954b6e0eb0641f56ca4cd06ef9">SVF::SVFG::callSiteToActualOUTMap</a></div><div class="ttdeci">CallSiteToActualOUTsMapTy callSiteToActualOUTMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00101">SVFG.h:101</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1MRVer_html"><div class="ttname"><a href="classSVF_1_1MRVer.html">SVF::MRVer</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00043">MSSAMuChi.h:43</a></div></div>
|
|
71
71
|
<div class="ttc" id="classSVF_1_1SVFG_html_a60df52c14b303562ff5d73c7836e3495"><div class="ttname"><a href="classSVF_1_1SVFG.html#a60df52c14b303562ff5d73c7836e3495">SVF::SVFG::CHI</a></div><div class="ttdeci">MemSSA::CHI CHI</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00090">SVFG.h:90</a></div></div>
|
|
72
72
|
<div class="ttc" id="classSVF_1_1VFG_html_a84cf5facb15e1d598c2527fba0c7634d"><div class="ttname"><a href="classSVF_1_1VFG.html#a84cf5facb15e1d598c2527fba0c7634d">SVF::VFG::addVFGEdge</a></div><div class="ttdeci">bool addVFGEdge(VFGEdge *edge)</div><div class="ttdoc">Add VFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00339">VFG.h:339</a></div></div>
|
|
73
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a931d8b82e10a54d68c68cf6bd80264be"><div class="ttname"><a href="classSVF_1_1SVFG.html#a931d8b82e10a54d68c68cf6bd80264be">SVF::SVFG::removeSVFGEdge</a></div><div class="ttdeci">void removeSVFGEdge(SVFGEdge *edge)</div><div class="ttdoc">Remove a SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
73
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a931d8b82e10a54d68c68cf6bd80264be"><div class="ttname"><a href="classSVF_1_1SVFG.html#a931d8b82e10a54d68c68cf6bd80264be">SVF::SVFG::removeSVFGEdge</a></div><div class="ttdeci">void removeSVFGEdge(SVFGEdge *edge)</div><div class="ttdoc">Remove a SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00237">SVFG.h:237</a></div></div>
|
|
74
74
|
<div class="ttc" id="classSVF_1_1SVFG_html_a5fdaddc52e7342b834d76d64c1a1e498"><div class="ttname"><a href="classSVF_1_1SVFG.html#a5fdaddc52e7342b834d76d64c1a1e498">SVF::SVFG::dump</a></div><div class="ttdeci">void dump(const std::string &file, bool simple=false)</div><div class="ttdoc">Dump graph into dot file. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00574">SVFG.cpp:574</a></div></div>
|
|
75
75
|
<div class="ttc" id="classSVF_1_1VFG_html_aeb24b155fe31813b2e6dc0564f55738a"><div class="ttname"><a href="classSVF_1_1VFG.html#aeb24b155fe31813b2e6dc0564f55738a">SVF::VFG::removeVFGEdge</a></div><div class="ttdeci">void removeVFGEdge(VFGEdge *edge)</div><div class="ttdoc">Remove a SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00319">VFG.h:319</a></div></div>
|
|
76
76
|
<div class="ttc" id="classSVF_1_1VFG_html"><div class="ttname"><a href="classSVF_1_1VFG.html">SVF::VFG</a></div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00050">VFG.h:50</a></div></div>
|
|
@@ -84,13 +84,13 @@ $(function() {
|
|
|
84
84
|
<div class="ttc" id="classSVF_1_1IntraMSSAPHISVFGNode_html"><div class="ttname"><a href="classSVF_1_1IntraMSSAPHISVFGNode.html">SVF::IntraMSSAPHISVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00349">SVFGNode.h:349</a></div></div>
|
|
85
85
|
<div class="ttc" id="namespaceSVF_html_a350ae9bf8606bdfe23c8679681b969dc"><div class="ttname"><a href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="include_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
|
|
86
86
|
<div class="ttc" id="classSVF_1_1SVFG_html_a9ccd530dc4c49b0df372a2ce95b66921"><div class="ttname"><a href="classSVF_1_1SVFG.html#a9ccd530dc4c49b0df372a2ce95b66921">SVF::SVFG::DDASVFGBuilder</a></div><div class="ttdeci">friend class DDASVFGBuilder</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00070">SVFG.h:70</a></div></div>
|
|
87
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a923924d3887c668b355f4029502a3754"><div class="ttname"><a href="classSVF_1_1SVFG.html#a923924d3887c668b355f4029502a3754">SVF::SVFG::addActualINSVFGNode</a></div><div class="ttdeci">void addActualINSVFGNode(const CallICFGNode *callsite, const MRVer *ver, const NodeID nodeId)</div><div class="ttdoc">Add memory callsite mu SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
87
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a923924d3887c668b355f4029502a3754"><div class="ttname"><a href="classSVF_1_1SVFG.html#a923924d3887c668b355f4029502a3754">SVF::SVFG::addActualINSVFGNode</a></div><div class="ttdeci">void addActualINSVFGNode(const CallICFGNode *callsite, const MRVer *ver, const NodeID nodeId)</div><div class="ttdoc">Add memory callsite mu SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00419">SVFG.h:419</a></div></div>
|
|
88
88
|
<div class="ttc" id="classSVF_1_1SVFG_html_aeba803e60699f9d9422596d161d44241"><div class="ttname"><a href="classSVF_1_1SVFG.html#aeba803e60699f9d9422596d161d44241">SVF::SVFG::clearMSSA</a></div><div class="ttdeci">void clearMSSA()</div><div class="ttdoc">Clear MSSA. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00131">SVFG.h:131</a></div></div>
|
|
89
89
|
<div class="ttc" id="classSVF_1_1SVFG_html_acdbe1c510273107b708935061b6c4127"><div class="ttname"><a href="classSVF_1_1SVFG.html#acdbe1c510273107b708935061b6c4127">SVF::SVFG::MUSet</a></div><div class="ttdeci">MemSSA::MUSet MUSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00086">SVFG.h:86</a></div></div>
|
|
90
90
|
<div class="ttc" id="classSVF_1_1SVFG_html_af9313ebec4a52fd887169b7c6373a7d4"><div class="ttname"><a href="classSVF_1_1SVFG.html#af9313ebec4a52fd887169b7c6373a7d4">SVF::SVFG::callSiteToActualINMap</a></div><div class="ttdeci">CallSiteToActualINsMapTy callSiteToActualINMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00100">SVFG.h:100</a></div></div>
|
|
91
91
|
<div class="ttc" id="classSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00208">GenericGraph.h:208</a></div></div>
|
|
92
92
|
<div class="ttc" id="classSVF_1_1VFG_html_ad86631f70bd702b5635bdbeab7d884b9"><div class="ttname"><a href="classSVF_1_1VFG.html#ad86631f70bd702b5635bdbeab7d884b9">SVF::VFG::hasInterVFGEdge</a></div><div class="ttdeci">VFGEdge * hasInterVFGEdge(VFGNode *src, VFGNode *dst, VFGEdge::VFGEdgeK kind, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8cpp_source.html#l00901">VFG.cpp:901</a></div></div>
|
|
93
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a8dd513e8e5343beeb5d117c1ff4e45ea"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8dd513e8e5343beeb5d117c1ff4e45ea">SVF::SVFG::addDummyVersionPropSVFGNode</a></div><div class="ttdeci">const DummyVersionPropSVFGNode * addDummyVersionPropSVFGNode(const NodeID object, const NodeID version)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
93
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a8dd513e8e5343beeb5d117c1ff4e45ea"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8dd513e8e5343beeb5d117c1ff4e45ea">SVF::SVFG::addDummyVersionPropSVFGNode</a></div><div class="ttdeci">const DummyVersionPropSVFGNode * addDummyVersionPropSVFGNode(const NodeID object, const NodeID version)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00262">SVFG.h:262</a></div></div>
|
|
94
94
|
<div class="ttc" id="classSVF_1_1SVFG_html_a8ba934714a7f2caf2e041002fdb66137"><div class="ttname"><a href="classSVF_1_1SVFG.html#a8ba934714a7f2caf2e041002fdb66137">SVF::SVFG::getStat</a></div><div class="ttdeci">SVFGStat * getStat() const</div><div class="ttdoc">Return statistics. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00125">SVFG.h:125</a></div></div>
|
|
95
95
|
<div class="ttc" id="classSVF_1_1StoreCHI_html"><div class="ttname"><a href="classSVF_1_1StoreCHI.html">SVF::StoreCHI</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00461">MSSAMuChi.h:461</a></div></div>
|
|
96
96
|
<div class="ttc" id="classSVF_1_1VFG_html_a122aa5ad874170ef644cee8705f1ef3e"><div class="ttname"><a href="classSVF_1_1VFG.html#a122aa5ad874170ef644cee8705f1ef3e">SVF::VFG::removeVFGNode</a></div><div class="ttdeci">void removeVFGNode(VFGNode *node)</div><div class="ttdoc">Remove a VFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00326">VFG.h:326</a></div></div>
|
|
@@ -111,7 +111,7 @@ $(function() {
|
|
|
111
111
|
<div class="ttc" id="VFG_8h_html"><div class="ttname"><a href="VFG_8h.html">VFG.h</a></div></div>
|
|
112
112
|
<div class="ttc" id="classSVF_1_1GepVFGNode_html"><div class="ttname"><a href="classSVF_1_1GepVFGNode.html">SVF::GepVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00594">VFGNode.h:594</a></div></div>
|
|
113
113
|
<div class="ttc" id="namespaceSVF_html_a0f7ff1d9a479df87241b45bb9c81d3ca"><div class="ttname"><a href="namespaceSVF.html#a0f7ff1d9a479df87241b45bb9c81d3ca">SVF::InterPHISVFGNode</a></div><div class="ttdeci">InterPHIVFGNode InterPHISVFGNode</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00058">SVFG.h:58</a></div></div>
|
|
114
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a55a26b88ffe786b04184a29ae72575e7"><div class="ttname"><a href="classSVF_1_1SVFG.html#a55a26b88ffe786b04184a29ae72575e7">SVF::SVFG::getDef</a></div><div class="ttdeci">NodeID getDef(const MRVer *mvar) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
114
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a55a26b88ffe786b04184a29ae72575e7"><div class="ttname"><a href="classSVF_1_1SVFG.html#a55a26b88ffe786b04184a29ae72575e7">SVF::SVFG::getDef</a></div><div class="ttdeci">NodeID getDef(const MRVer *mvar) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00380">SVFG.h:380</a></div></div>
|
|
115
115
|
<div class="ttc" id="classSVF_1_1SVFG_html_a101c5a8b31baf5c5613144f6e277abe9"><div class="ttname"><a href="classSVF_1_1SVFG.html#a101c5a8b31baf5c5613144f6e277abe9">SVF::SVFG::ENTRYCHI</a></div><div class="ttdeci">MemSSA::ENTRYCHI ENTRYCHI</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00094">SVFG.h:94</a></div></div>
|
|
116
116
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a38122734cbe71551a420dfb7fee2012e"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a38122734cbe71551a420dfb7fee2012e">SVF::GenericGraph::nodeNum</a></div><div class="ttdeci">u32_t nodeNum</div><div class="ttdoc">total num of edge </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00445">GenericGraph.h:445</a></div></div>
|
|
117
117
|
<div class="ttc" id="classSVF_1_1ICFG_html_af1b2d2839f811a00103df87342dfc919"><div class="ttname"><a href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">SVF::ICFG::getFunExitICFGNode</a></div><div class="ttdeci">FunExitICFGNode * getFunExitICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function exit node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00278">ICFG.cpp:278</a></div></div>
|
|
@@ -120,7 +120,7 @@ $(function() {
|
|
|
120
120
|
<div class="ttc" id="classSVF_1_1ICFG_html_a881fe977f3a6fde223bd786121e35fcf"><div class="ttname"><a href="classSVF_1_1ICFG.html#a881fe977f3a6fde223bd786121e35fcf">SVF::ICFG::getRetICFGNode</a></div><div class="ttdeci">RetICFGNode * getRetICFGNode(const SVFInstruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00249">ICFG.cpp:249</a></div></div>
|
|
121
121
|
<div class="ttc" id="namespaceSVF_html_a71d4e214e049f02bf26537cba6328673"><div class="ttname"><a href="namespaceSVF.html#a71d4e214e049f02bf26537cba6328673">SVF::PHISVFGNode</a></div><div class="ttdeci">PHIVFGNode PHISVFGNode</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00056">SVFG.h:56</a></div></div>
|
|
122
122
|
<div class="ttc" id="classSVF_1_1MSSAMU_html"><div class="ttname"><a href="classSVF_1_1MSSAMU.html">SVF::MSSAMU</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00095">MSSAMuChi.h:95</a></div></div>
|
|
123
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_ab1fde654cc464c5b4d1bafff83d346ed"><div class="ttname"><a href="classSVF_1_1SVFG.html#ab1fde654cc464c5b4d1bafff83d346ed">SVF::SVFG::hasActualOUTSVFGNodes</a></div><div class="ttdeci">bool hasActualOUTSVFGNodes(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
123
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_ab1fde654cc464c5b4d1bafff83d346ed"><div class="ttname"><a href="classSVF_1_1SVFG.html#ab1fde654cc464c5b4d1bafff83d346ed">SVF::SVFG::hasActualOUTSVFGNodes</a></div><div class="ttdeci">bool hasActualOUTSVFGNodes(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00191">SVFG.h:191</a></div></div>
|
|
124
124
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ae5b113921530eee6afe58a65d8e5b3a7"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">SVF::GenericNode::InEdgeBegin</a></div><div class="ttdeci">iterator InEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00216">GenericGraph.h:216</a></div></div>
|
|
125
125
|
<div class="ttc" id="classSVF_1_1SVFG_html_ae51cd0493e4e767848b96b69045762fd"><div class="ttname"><a href="classSVF_1_1SVFG.html#ae51cd0493e4e767848b96b69045762fd">SVF::SVFG::funToFormalINMap</a></div><div class="ttdeci">FunctionToFormalINsMapTy funToFormalINMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00102">SVFG.h:102</a></div></div>
|
|
126
126
|
<div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00099">SVFType.h:99</a></div></div>
|
|
@@ -132,7 +132,7 @@ $(function() {
|
|
|
132
132
|
<div class="ttc" id="classSVF_1_1VFGEdge_html_a156ae6a8b3a033f505c18c6b162e7cf5a8288c583cfcbfdf9aa2ac2103c0e7191"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8288c583cfcbfdf9aa2ac2103c0e7191">SVF::VFGEdge::RetDirVF</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00056">VFGEdge.h:56</a></div></div>
|
|
133
133
|
<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="SVFType_8h_source.html#l00050">SVFType.h:50</a></div></div>
|
|
134
134
|
<div class="ttc" id="classSVF_1_1SVFG_html_a2b4850c833564916c7fce46d55672038"><div class="ttname"><a href="classSVF_1_1SVFG.html#a2b4850c833564916c7fce46d55672038">SVF::SVFG::FunctionToFormalINsMapTy</a></div><div class="ttdeci">Map< const SVFFunction *, FormalINSVFGNodeSet > FunctionToFormalINsMapTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00084">SVFG.h:84</a></div></div>
|
|
135
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a65f28035e0fa5bebf76d28612b2f8ba8"><div class="ttname"><a href="classSVF_1_1SVFG.html#a65f28035e0fa5bebf76d28612b2f8ba8">SVF::SVFG::hasFormalINSVFGNodes</a></div><div class="ttdeci">bool hasFormalINSVFGNodes(const SVFFunction *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
135
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a65f28035e0fa5bebf76d28612b2f8ba8"><div class="ttname"><a href="classSVF_1_1SVFG.html#a65f28035e0fa5bebf76d28612b2f8ba8">SVF::SVFG::hasFormalINSVFGNodes</a></div><div class="ttdeci">bool hasFormalINSVFGNodes(const SVFFunction *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00196">SVFG.h:196</a></div></div>
|
|
136
136
|
<div class="ttc" id="classSVF_1_1ICFG_html_aa41516cdd2be5066adf22798a4fe2213"><div class="ttname"><a href="classSVF_1_1ICFG.html#aa41516cdd2be5066adf22798a4fe2213">SVF::ICFG::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const SVFInstruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00236">ICFG.cpp:236</a></div></div>
|
|
137
137
|
<div class="ttc" id="classSVF_1_1SVFG_html_abddfc95cf644d0729ee29eccf95699f1"><div class="ttname"><a href="classSVF_1_1SVFG.html#abddfc95cf644d0729ee29eccf95699f1">SVF::SVFG::addSVFGNodesForAddrTakenVars</a></div><div class="ttdeci">void addSVFGNodesForAddrTakenVars()</div><div class="ttdoc">Create SVFG nodes for address-taken variables. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00251">SVFG.cpp:251</a></div></div>
|
|
138
138
|
<div class="ttc" id="classSVF_1_1SVFG_html_a727af89a305e48f399ad33cc7149dbcb"><div class="ttname"><a href="classSVF_1_1SVFG.html#a727af89a305e48f399ad33cc7149dbcb">SVF::SVFG::CallSiteToActualINsMapTy</a></div><div class="ttdeci">Map< const CallICFGNode *, ActualINSVFGNodeSet > CallSiteToActualINsMapTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00082">SVFG.h:82</a></div></div>
|
|
@@ -140,12 +140,12 @@ $(function() {
|
|
|
140
140
|
<div class="ttc" id="classSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
|
|
141
141
|
<div class="ttc" id="classSVF_1_1MemSSA_html_af9cf084e3070456d8cca491e1391b0c4"><div class="ttname"><a href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">SVF::MemSSA::CHISet</a></div><div class="ttdeci">Set< CHI * > CHISet</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00071">MemSSA.h:71</a></div></div>
|
|
142
142
|
<div class="ttc" id="classSVF_1_1RetMU_html"><div class="ttname"><a href="classSVF_1_1RetMU.html">SVF::RetMU</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00277">MSSAMuChi.h:277</a></div></div>
|
|
143
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_ac965abfbe9bdc872f98b36a171a7b5aa"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac965abfbe9bdc872f98b36a171a7b5aa">SVF::SVFG::getSVFGNodeNum</a></div><div class="ttdeci">u32_t getSVFGNodeNum() const</div><div class="ttdoc">Return total SVFG node number. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
143
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_ac965abfbe9bdc872f98b36a171a7b5aa"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac965abfbe9bdc872f98b36a171a7b5aa">SVF::SVFG::getSVFGNodeNum</a></div><div class="ttdeci">u32_t getSVFGNodeNum() const</div><div class="ttdoc">Return total SVFG node number. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00254">SVFG.h:254</a></div></div>
|
|
144
144
|
<div class="ttc" id="classSVF_1_1SVFG_html_a710a36fc3f4ad15010c4469abcd032e5"><div class="ttname"><a href="classSVF_1_1SVFG.html#a710a36fc3f4ad15010c4469abcd032e5">SVF::SVFG::~SVFG</a></div><div class="ttdeci">virtual ~SVFG()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00119">SVFG.h:119</a></div></div>
|
|
145
145
|
<div class="ttc" id="classSVF_1_1VFG_html_a30eb9d717ad5bc8a9109a7bdef38f4a1"><div class="ttname"><a href="classSVF_1_1VFG.html#a30eb9d717ad5bc8a9109a7bdef38f4a1">SVF::VFG::hasVFGNode</a></div><div class="ttdeci">bool hasVFGNode(NodeID id) const</div><div class="ttdoc">Whether has the VFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00151">VFG.h:151</a></div></div>
|
|
146
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a5b7ae610bee28acc2905ca82928e714f"><div class="ttname"><a href="classSVF_1_1SVFG.html#a5b7ae610bee28acc2905ca82928e714f">SVF::SVFG::getActualOUTSVFGNodes</a></div><div class="ttdeci">ActualOUTSVFGNodeSet & getActualOUTSVFGNodes(const CallICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
146
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a5b7ae610bee28acc2905ca82928e714f"><div class="ttname"><a href="classSVF_1_1SVFG.html#a5b7ae610bee28acc2905ca82928e714f">SVF::SVFG::getActualOUTSVFGNodes</a></div><div class="ttdeci">ActualOUTSVFGNodeSet & getActualOUTSVFGNodes(const CallICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00214">SVFG.h:214</a></div></div>
|
|
147
147
|
<div class="ttc" id="classSVF_1_1LoadMU_html"><div class="ttname"><a href="classSVF_1_1LoadMU.html">SVF::LoadMU</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00165">MSSAMuChi.h:165</a></div></div>
|
|
148
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a1f8c60ad57bf473e0186b794d666b5c2"><div class="ttname"><a href="classSVF_1_1SVFG.html#a1f8c60ad57bf473e0186b794d666b5c2">SVF::SVFG::hasFormalOUTSVFGNodes</a></div><div class="ttdeci">bool hasFormalOUTSVFGNodes(const SVFFunction *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
148
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a1f8c60ad57bf473e0186b794d666b5c2"><div class="ttname"><a href="classSVF_1_1SVFG.html#a1f8c60ad57bf473e0186b794d666b5c2">SVF::SVFG::hasFormalOUTSVFGNodes</a></div><div class="ttdeci">bool hasFormalOUTSVFGNodes(const SVFFunction *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00201">SVFG.h:201</a></div></div>
|
|
149
149
|
<div class="ttc" id="classSVF_1_1SVFG_html_a164a3df08fc24bacc0b97aee8b6eec38"><div class="ttname"><a href="classSVF_1_1SVFG.html#a164a3df08fc24bacc0b97aee8b6eec38">SVF::SVFG::connectIndirectSVFGEdges</a></div><div class="ttdeci">void connectIndirectSVFGEdges()</div><div class="ttdoc">Connect direct SVFG edges between two SVFG nodes (value-flow of top address-taken variables) ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00326">SVFG.cpp:326</a></div></div>
|
|
150
150
|
<div class="ttc" id="namespaceSVF_html_ad466edced10faeafd48e96daf193b8a9"><div class="ttname"><a href="namespaceSVF.html#ad466edced10faeafd48e96daf193b8a9">SVF::FormalParmSVFGNode</a></div><div class="ttdeci">FormalParmVFGNode FormalParmSVFGNode</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00046">SVFG.h:46</a></div></div>
|
|
151
151
|
<div class="ttc" id="namespaceSVF_html_a5dfa3fa5129bacdc0be0c051ccf386df"><div class="ttname"><a href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVF::SVFGNode</a></div><div class="ttdeci">VFGNode SVFGNode</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00043">SVFG.h:43</a></div></div>
|
|
@@ -155,30 +155,30 @@ $(function() {
|
|
|
155
155
|
<div class="ttc" id="classSVF_1_1SVFG_html_a7ce9ec638995467c211958262be08ee1"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7ce9ec638995467c211958262be08ee1">SVF::SVFG::writeToFile</a></div><div class="ttdeci">virtual void writeToFile(const std::string &filename)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGReadWrite_8cpp_source.html#l00047">SVFGReadWrite.cpp:47</a></div></div>
|
|
156
156
|
<div class="ttc" id="classSVF_1_1SVFG_html_a0920e9f9896531959d74ae61013d96d6"><div class="ttname"><a href="classSVF_1_1SVFG.html#a0920e9f9896531959d74ae61013d96d6">SVF::SVFG::buildSVFG</a></div><div class="ttdeci">virtual void buildSVFG()</div><div class="ttdoc">Start building SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00224">SVFG.cpp:224</a></div></div>
|
|
157
157
|
<div class="ttc" id="classSVF_1_1SVFG_html_a5f3e0fbf83621cc661d2c59800756727"><div class="ttname"><a href="classSVF_1_1SVFG.html#a5f3e0fbf83621cc661d2c59800756727">SVF::SVFG::CALLCHI</a></div><div class="ttdeci">MemSSA::CALLCHI CALLCHI</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00095">SVFG.h:95</a></div></div>
|
|
158
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a0554abe7c072b66ab24a900284646572"><div class="ttname"><a href="classSVF_1_1SVFG.html#a0554abe7c072b66ab24a900284646572">SVF::SVFG::addIntraMSSAPHISVFGNode</a></div><div class="ttdeci">void addIntraMSSAPHISVFGNode(ICFGNode *BlockICFGNode, const Map< u32_t, const MRVer *>::const_iterator opVerBegin, const Map< u32_t, const MRVer *>::const_iterator opVerEnd, const MRVer *resVer, const NodeID nodeId)</div><div class="ttdoc">Add memory SSA PHI SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
159
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a475205e221890204c7770c414ee63975"><div class="ttname"><a href="classSVF_1_1SVFG.html#a475205e221890204c7770c414ee63975">SVF::SVFG::getActualINSVFGNodes</a></div><div class="ttdeci">ActualINSVFGNodeSet & getActualINSVFGNodes(const CallICFGNode *cs)</div><div class="ttdoc">Get SVFGNode set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
158
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a0554abe7c072b66ab24a900284646572"><div class="ttname"><a href="classSVF_1_1SVFG.html#a0554abe7c072b66ab24a900284646572">SVF::SVFG::addIntraMSSAPHISVFGNode</a></div><div class="ttdeci">void addIntraMSSAPHISVFGNode(ICFGNode *BlockICFGNode, const Map< u32_t, const MRVer *>::const_iterator opVerBegin, const Map< u32_t, const MRVer *>::const_iterator opVerEnd, const MRVer *resVer, const NodeID nodeId)</div><div class="ttdoc">Add memory SSA PHI SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00436">SVFG.h:436</a></div></div>
|
|
159
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a475205e221890204c7770c414ee63975"><div class="ttname"><a href="classSVF_1_1SVFG.html#a475205e221890204c7770c414ee63975">SVF::SVFG::getActualINSVFGNodes</a></div><div class="ttdeci">ActualINSVFGNodeSet & getActualINSVFGNodes(const CallICFGNode *cs)</div><div class="ttdoc">Get SVFGNode set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00209">SVFG.h:209</a></div></div>
|
|
160
160
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00095">GenericGraph.h:95</a></div></div>
|
|
161
161
|
<div class="ttc" id="classSVF_1_1SVFG_html_aef7ee9d802934d51b3761663bdaf0c05"><div class="ttname"><a href="classSVF_1_1SVFG.html#aef7ee9d802934d51b3761663bdaf0c05">SVF::SVFG::PHISet</a></div><div class="ttdeci">MemSSA::PHISet PHISet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00088">SVFG.h:88</a></div></div>
|
|
162
162
|
<div class="ttc" id="classSVF_1_1MemSSA_html"><div class="ttname"><a href="classSVF_1_1MemSSA.html">SVF::MemSSA</a></div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00052">MemSSA.h:52</a></div></div>
|
|
163
163
|
<div class="ttc" id="namespaceSVF_html_aeccd0bd024319173c1cda5ff1a79c5ae"><div class="ttname"><a href="namespaceSVF.html#aeccd0bd024319173c1cda5ff1a79c5ae">SVF::NullPtrSVFGNode</a></div><div class="ttdeci">NullPtrVFGNode NullPtrSVFGNode</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00049">SVFG.h:49</a></div></div>
|
|
164
164
|
<div class="ttc" id="classSVF_1_1SVFG_html_a67654d252e9e93b74e35ba247048b41a"><div class="ttname"><a href="classSVF_1_1SVFG.html#a67654d252e9e93b74e35ba247048b41a">SVF::SVFG::RcSvfgBuilder</a></div><div class="ttdeci">friend class RcSvfgBuilder</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00072">SVFG.h:72</a></div></div>
|
|
165
165
|
<div class="ttc" id="classSVF_1_1SVFG_html_af8ceb1ebf745e6803c606c41f7a482ac"><div class="ttname"><a href="classSVF_1_1SVFG.html#af8ceb1ebf745e6803c606c41f7a482ac">SVF::SVFG::addCallIndirectVFEdge</a></div><div class="ttdeci">SVFGEdge * addCallIndirectVFEdge(NodeID srcId, NodeID dstId, const NodeBS &cpts, CallSiteID csId)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00503">SVFG.cpp:503</a></div></div>
|
|
166
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_ac1acdf7bc468d7734359591e45f485fe"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac1acdf7bc468d7734359591e45f485fe">SVF::SVFG::getInterVFEdgeAtIndCSFromAPToFP</a></div><div class="ttdeci">virtual void getInterVFEdgeAtIndCSFromAPToFP(const PAGNode *cs_arg, const PAGNode *fun_arg, const CallICFGNode *, CallSiteID csId, SVFGEdgeSetTy &edges)</div><div class="ttdoc">Get inter value flow edges between indirect call site and callee. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
166
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_ac1acdf7bc468d7734359591e45f485fe"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac1acdf7bc468d7734359591e45f485fe">SVF::SVFG::getInterVFEdgeAtIndCSFromAPToFP</a></div><div class="ttdeci">virtual void getInterVFEdgeAtIndCSFromAPToFP(const PAGNode *cs_arg, const PAGNode *fun_arg, const CallICFGNode *, CallSiteID csId, SVFGEdgeSetTy &edges)</div><div class="ttdoc">Get inter value flow edges between indirect call site and callee. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00309">SVFG.h:309</a></div></div>
|
|
167
167
|
<div class="ttc" id="namespaceSVF_html_a77b8b8ca831e1eba3e47f2ca29667f67"><div class="ttname"><a href="namespaceSVF.html#a77b8b8ca831e1eba3e47f2ca29667f67">SVF::ActualRetSVFGNode</a></div><div class="ttdeci">ActualRetVFGNode ActualRetSVFGNode</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00045">SVFG.h:45</a></div></div>
|
|
168
168
|
<div class="ttc" id="classSVF_1_1SVFG_html_a665c93b68f49078c281270a028d04445"><div class="ttname"><a href="classSVF_1_1SVFG.html#a665c93b68f49078c281270a028d04445">SVF::SVFG::TaintSVFGBuilder</a></div><div class="ttdeci">friend class TaintSVFGBuilder</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00069">SVFG.h:69</a></div></div>
|
|
169
169
|
<div class="ttc" id="classSVF_1_1VFG_html_ac97ef8c479556f9ca2c40cd4d8a18694"><div class="ttname"><a href="classSVF_1_1VFG.html#ac97ef8c479556f9ca2c40cd4d8a18694">SVF::VFG::SVFGEdgeSetTy</a></div><div class="ttdeci">VFGEdge::SVFGEdgeSetTy SVFGEdgeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00078">VFG.h:78</a></div></div>
|
|
170
170
|
<div class="ttc" id="namespaceSVF_html_a959453cbb8ff2d852b526fd1ff74ce49"><div class="ttname"><a href="namespaceSVF.html#a959453cbb8ff2d852b526fd1ff74ce49">SVF::AddrSVFGNode</a></div><div class="ttdeci">AddrVFGNode AddrSVFGNode</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00051">SVFG.h:51</a></div></div>
|
|
171
171
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a81bba824495a882b49e687683954b112"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">SVF::MemSSA::MUSet</a></div><div class="ttdeci">Set< MU * > MUSet</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00070">MemSSA.h:70</a></div></div>
|
|
172
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a67750c461e3543f6b75d2dd510d67297"><div class="ttname"><a href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297">SVF::SVFG::addSVFGEdge</a></div><div class="ttdeci">bool addSVFGEdge(SVFGEdge *edge)</div><div class="ttdoc">Add SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
173
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_aa3ebc066d376e7ed508d2bce49fa864d"><div class="ttname"><a href="classSVF_1_1SVFG.html#aa3ebc066d376e7ed508d2bce49fa864d">SVF::SVFG::setDef</a></div><div class="ttdeci">void setDef(const MRVer *mvar, const SVFGNode *node)</div><div class="ttdoc">Given a MSSADef, set/get its def SVFG node (definition of address-taken variables) ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
174
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a74aa824a68f99756ac3e65231c7bc2e9"><div class="ttname"><a href="classSVF_1_1SVFG.html#a74aa824a68f99756ac3e65231c7bc2e9">SVF::SVFG::addActualOUTSVFGNode</a></div><div class="ttdeci">void addActualOUTSVFGNode(const CallICFGNode *callsite, const MRVer *resVer, const NodeID nodeId)</div><div class="ttdoc">Add memory callsite chi SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
172
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a67750c461e3543f6b75d2dd510d67297"><div class="ttname"><a href="classSVF_1_1SVFG.html#a67750c461e3543f6b75d2dd510d67297">SVF::SVFG::addSVFGEdge</a></div><div class="ttdeci">bool addSVFGEdge(SVFGEdge *edge)</div><div class="ttdoc">Add SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00248">SVFG.h:248</a></div></div>
|
|
173
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_aa3ebc066d376e7ed508d2bce49fa864d"><div class="ttname"><a href="classSVF_1_1SVFG.html#aa3ebc066d376e7ed508d2bce49fa864d">SVF::SVFG::setDef</a></div><div class="ttdeci">void setDef(const MRVer *mvar, const SVFGNode *node)</div><div class="ttdoc">Given a MSSADef, set/get its def SVFG node (definition of address-taken variables) ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00367">SVFG.h:367</a></div></div>
|
|
174
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a74aa824a68f99756ac3e65231c7bc2e9"><div class="ttname"><a href="classSVF_1_1SVFG.html#a74aa824a68f99756ac3e65231c7bc2e9">SVF::SVFG::addActualOUTSVFGNode</a></div><div class="ttdeci">void addActualOUTSVFGNode(const CallICFGNode *callsite, const MRVer *resVer, const NodeID nodeId)</div><div class="ttdoc">Add memory callsite chi SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00427">SVFG.h:427</a></div></div>
|
|
175
175
|
<div class="ttc" id="classSVF_1_1VFG_html_aca5b658b87728ac8bd7e562d51e771f8"><div class="ttname"><a href="classSVF_1_1VFG.html#aca5b658b87728ac8bd7e562d51e771f8">SVF::VFG::VFGNodeIDToNodeMapTy</a></div><div class="ttdeci">OrderedMap< NodeID, VFGNode * > VFGNodeIDToNodeMapTy</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00060">VFG.h:60</a></div></div>
|
|
176
176
|
<div class="ttc" id="classSVF_1_1SVFG_html_a1aba3845bad017f81cd5f938db03a161"><div class="ttname"><a href="classSVF_1_1SVFG.html#a1aba3845bad017f81cd5f938db03a161">SVF::SVFG::addThreadMHPIndirectVFEdge</a></div><div class="ttdeci">SVFGEdge * addThreadMHPIndirectVFEdge(NodeID srcId, NodeID dstId, const NodeBS &cpts)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00483">SVFG.cpp:483</a></div></div>
|
|
177
177
|
<div class="ttc" id="classSVF_1_1GenericNode_html_afe6a7b286d9af4992f41b59612fd2900"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">SVF::GenericNode::InEdgeEnd</a></div><div class="ttdeci">iterator InEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00220">GenericGraph.h:220</a></div></div>
|
|
178
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a9d0714075d6071c26d26cf16c4dec7c5"><div class="ttname"><a href="classSVF_1_1SVFG.html#a9d0714075d6071c26d26cf16c4dec7c5">SVF::SVFG::getFormalINSVFGNodes</a></div><div class="ttdeci">FormalINSVFGNodeSet & getFormalINSVFGNodes(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
178
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a9d0714075d6071c26d26cf16c4dec7c5"><div class="ttname"><a href="classSVF_1_1SVFG.html#a9d0714075d6071c26d26cf16c4dec7c5">SVF::SVFG::getFormalINSVFGNodes</a></div><div class="ttdeci">FormalINSVFGNodeSet & getFormalINSVFGNodes(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00219">SVFG.h:219</a></div></div>
|
|
179
179
|
<div class="ttc" id="SVFGNode_8h_html"><div class="ttname"><a href="SVFGNode_8h.html">SVFGNode.h</a></div></div>
|
|
180
180
|
<div class="ttc" id="classSVF_1_1SVFG_html_ad5c1415f488ec4412d5457262269eff3"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad5c1415f488ec4412d5457262269eff3">SVF::SVFG::stat</a></div><div class="ttdeci">SVFGStat * stat</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00104">SVFG.h:104</a></div></div>
|
|
181
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a287c337697eed7d92889bca0a0e370d7"><div class="ttname"><a href="classSVF_1_1SVFG.html#a287c337697eed7d92889bca0a0e370d7">SVF::SVFG::getFormalOUTSVFGNodes</a></div><div class="ttdeci">FormalOUTSVFGNodeSet & getFormalOUTSVFGNodes(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
181
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a287c337697eed7d92889bca0a0e370d7"><div class="ttname"><a href="classSVF_1_1SVFG.html#a287c337697eed7d92889bca0a0e370d7">SVF::SVFG::getFormalOUTSVFGNodes</a></div><div class="ttdeci">FormalOUTSVFGNodeSet & getFormalOUTSVFGNodes(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00224">SVFG.h:224</a></div></div>
|
|
182
182
|
<div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00058">SVFType.h:58</a></div></div>
|
|
183
183
|
<div class="ttc" id="classSVF_1_1SVFG_html_a57629591037e16e57a0178d102a405f2"><div class="ttname"><a href="classSVF_1_1SVFG.html#a57629591037e16e57a0178d102a405f2">SVF::SVFG::addInterIndirectVFCallEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFCallEdge(const ActualINSVFGNode *src, const FormalINSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from callsite mu to function entry chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00543">SVFG.cpp:543</a></div></div>
|
|
184
184
|
<div class="ttc" id="classSVF_1_1MSSAPHISVFGNode_html_a928a57d7f518c5af98a0245d9221e671"><div class="ttname"><a href="classSVF_1_1MSSAPHISVFGNode.html#a928a57d7f518c5af98a0245d9221e671">SVF::MSSAPHISVFGNode::setOpVer</a></div><div class="ttdeci">void setOpVer(u32_t pos, const MRVer *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00305">SVFGNode.h:305</a></div></div>
|
|
@@ -191,31 +191,31 @@ $(function() {
|
|
|
191
191
|
<div class="ttc" id="namespaceSVF_html_a54c5725186e66ead6faf53c10a288714"><div class="ttname"><a href="namespaceSVF.html#a54c5725186e66ead6faf53c10a288714">SVF::StoreSVFGNode</a></div><div class="ttdeci">StoreVFGNode StoreSVFGNode</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00053">SVFG.h:53</a></div></div>
|
|
192
192
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a0a8831a5429005ff9d71adbd6bf3994f"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0a8831a5429005ff9d71adbd6bf3994f">SVF::GenericGraph::addGNode</a></div><div class="ttdeci">void addGNode(NodeID id, NodeType *node)</div><div class="ttdoc">Add a Node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00388">GenericGraph.h:388</a></div></div>
|
|
193
193
|
<div class="ttc" id="classSVF_1_1SVFG_html_ac9666ae7266cf1a9c0a5f7d28b39d1e9"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">SVF::SVFG::addInterIndirectVFRetEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFRetEdge(const FormalOUTSVFGNode *src, const ActualOUTSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from function exit mu to callsite chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00558">SVFG.cpp:558</a></div></div>
|
|
194
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_accd1cbd26c9b194971f3107a57a0ab2e"><div class="ttname"><a href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">SVF::SVFG::setDef</a></div><div class="ttdeci">void setDef(const PAGNode *pagNode, const SVFGNode *node)</div><div class="ttdoc">Given a PAGNode, set/get its def SVFG node (definition of top level pointers) </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
194
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_accd1cbd26c9b194971f3107a57a0ab2e"><div class="ttname"><a href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">SVF::SVFG::setDef</a></div><div class="ttdeci">void setDef(const PAGNode *pagNode, const SVFGNode *node)</div><div class="ttdoc">Given a PAGNode, set/get its def SVFG node (definition of top level pointers) </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00351">SVFG.h:351</a></div></div>
|
|
195
195
|
<div class="ttc" id="classSVF_1_1EntryCHI_html"><div class="ttname"><a href="classSVF_1_1EntryCHI.html">SVF::EntryCHI</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00578">MSSAMuChi.h:578</a></div></div>
|
|
196
196
|
<div class="ttc" id="classSVF_1_1ActualRetVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualRetVFGNode.html">SVF::ActualRetVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00967">VFGNode.h:967</a></div></div>
|
|
197
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a804824faa3a042cb1b63edd9e9eb7207"><div class="ttname"><a href="classSVF_1_1SVFG.html#a804824faa3a042cb1b63edd9e9eb7207">SVF::SVFG::addFormalOUTSVFGNode</a></div><div class="ttdeci">void addFormalOUTSVFGNode(const FunExitICFGNode *funExit, const MRVer *ver, const NodeID nodeId)</div><div class="ttdoc">Add memory Function return mu SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
198
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a21577bc4b4e55b23aa55083f5321b399"><div class="ttname"><a href="classSVF_1_1SVFG.html#a21577bc4b4e55b23aa55083f5321b399">SVF::SVFG::hasActualINSVFGNodes</a></div><div class="ttdeci">bool hasActualINSVFGNodes(const CallICFGNode *cs) const</div><div class="ttdoc">Has a SVFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
197
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a804824faa3a042cb1b63edd9e9eb7207"><div class="ttname"><a href="classSVF_1_1SVFG.html#a804824faa3a042cb1b63edd9e9eb7207">SVF::SVFG::addFormalOUTSVFGNode</a></div><div class="ttdeci">void addFormalOUTSVFGNode(const FunExitICFGNode *funExit, const MRVer *ver, const NodeID nodeId)</div><div class="ttdoc">Add memory Function return mu SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00411">SVFG.h:411</a></div></div>
|
|
198
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a21577bc4b4e55b23aa55083f5321b399"><div class="ttname"><a href="classSVF_1_1SVFG.html#a21577bc4b4e55b23aa55083f5321b399">SVF::SVFG::hasActualINSVFGNodes</a></div><div class="ttdeci">bool hasActualINSVFGNodes(const CallICFGNode *cs) const</div><div class="ttdoc">Has a SVFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00186">SVFG.h:186</a></div></div>
|
|
199
199
|
<div class="ttc" id="classSVF_1_1VFG_html_acb181d4f9faa40578c80e2018e2742b8"><div class="ttname"><a href="classSVF_1_1VFG.html#acb181d4f9faa40578c80e2018e2742b8">SVF::VFG::totalVFGNode</a></div><div class="ttdeci">NodeID totalVFGNode</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00088">VFG.h:88</a></div></div>
|
|
200
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a32378226c18a0b1e22271a2338a635f6"><div class="ttname"><a href="classSVF_1_1SVFG.html#a32378226c18a0b1e22271a2338a635f6">SVF::SVFG::hasFuncRetMu</a></div><div class="ttdeci">bool hasFuncRetMu(const SVFFunction *func) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
200
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a32378226c18a0b1e22271a2338a635f6"><div class="ttname"><a href="classSVF_1_1SVFG.html#a32378226c18a0b1e22271a2338a635f6">SVF::SVFG::hasFuncRetMu</a></div><div class="ttdeci">bool hasFuncRetMu(const SVFFunction *func) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00452">SVFG.h:452</a></div></div>
|
|
201
201
|
<div class="ttc" id="classSVF_1_1SVFG_html_a7f4deffe7e13352b8c13eab110c834cc"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7f4deffe7e13352b8c13eab110c834cc">SVF::SVFG::MU</a></div><div class="ttdeci">MemSSA::MU MU</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00089">SVFG.h:89</a></div></div>
|
|
202
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_ab4690114393820f580e805d2e0d6a41d"><div class="ttname"><a href="classSVF_1_1SVFG.html#ab4690114393820f580e805d2e0d6a41d">SVF::SVFG::addFormalINSVFGNode</a></div><div class="ttdeci">void addFormalINSVFGNode(const FunEntryICFGNode *funEntry, const MRVer *resVer, const NodeID nodeId)</div><div class="ttdoc">Add memory Function entry chi SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
202
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_ab4690114393820f580e805d2e0d6a41d"><div class="ttname"><a href="classSVF_1_1SVFG.html#ab4690114393820f580e805d2e0d6a41d">SVF::SVFG::addFormalINSVFGNode</a></div><div class="ttdeci">void addFormalINSVFGNode(const FunEntryICFGNode *funEntry, const MRVer *resVer, const NodeID nodeId)</div><div class="ttdoc">Add memory Function entry chi SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00402">SVFG.h:402</a></div></div>
|
|
203
203
|
<div class="ttc" id="classSVF_1_1VFG_html_ab5b63b4f6317bfb5875f2b977bcf26a4"><div class="ttname"><a href="classSVF_1_1VFG.html#ab5b63b4f6317bfb5875f2b977bcf26a4">SVF::VFG::hasDef</a></div><div class="ttdeci">bool hasDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00426">VFG.h:426</a></div></div>
|
|
204
204
|
<div class="ttc" id="classSVF_1_1SVFG_html_a3d04ce1429b1edf90c9c0833e3b5a4a9"><div class="ttname"><a href="classSVF_1_1SVFG.html#a3d04ce1429b1edf90c9c0833e3b5a4a9">SVF::SVFG::SVFGNodeIDToNodeMapTy</a></div><div class="ttdeci">VFGNodeIDToNodeMapTy SVFGNodeIDToNodeMapTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00075">SVFG.h:75</a></div></div>
|
|
205
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_abd917826bf50ed409a307ce00562c97d"><div class="ttname"><a href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">SVF::SVFG::getDef</a></div><div class="ttdeci">NodeID getDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
205
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_abd917826bf50ed409a307ce00562c97d"><div class="ttname"><a href="classSVF_1_1SVFG.html#abd917826bf50ed409a307ce00562c97d">SVF::SVFG::getDef</a></div><div class="ttdeci">NodeID getDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00355">SVFG.h:355</a></div></div>
|
|
206
206
|
<div class="ttc" id="classSVF_1_1SVFG_html_ac4c65501e9beba5495a57dd469f78e5b"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac4c65501e9beba5495a57dd469f78e5b">SVF::SVFG::FunctionToFormalOUTsMapTy</a></div><div class="ttdeci">Map< const SVFFunction *, FormalOUTSVFGNodeSet > FunctionToFormalOUTsMapTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00085">SVFG.h:85</a></div></div>
|
|
207
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_afbaf925e1e165f75161999229fa5f782"><div class="ttname"><a href="classSVF_1_1SVFG.html#afbaf925e1e165f75161999229fa5f782">SVF::SVFG::getInterVFEdgeAtIndCSFromAInToFIn</a></div><div class="ttdeci">virtual void getInterVFEdgeAtIndCSFromAInToFIn(ActualINSVFGNode *actualIn, const SVFFunction *callee, SVFGEdgeSetTy &edges)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
207
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_afbaf925e1e165f75161999229fa5f782"><div class="ttname"><a href="classSVF_1_1SVFG.html#afbaf925e1e165f75161999229fa5f782">SVF::SVFG::getInterVFEdgeAtIndCSFromAInToFIn</a></div><div class="ttdeci">virtual void getInterVFEdgeAtIndCSFromAInToFIn(ActualINSVFGNode *actualIn, const SVFFunction *callee, SVFGEdgeSetTy &edges)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00327">SVFG.h:327</a></div></div>
|
|
208
208
|
<div class="ttc" id="classSVF_1_1VFGNode_html_a3c558955f60c237c558d8faafed781e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVF::VFGNode::const_iterator</a></div><div class="ttdeci">VFGEdge::VFGEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00060">VFGNode.h:60</a></div></div>
|
|
209
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a23ca21b90feca5e7d00c9ba9f489374a"><div class="ttname"><a href="classSVF_1_1SVFG.html#a23ca21b90feca5e7d00c9ba9f489374a">SVF::SVFG::hasFuncEntryChi</a></div><div class="ttdeci">bool hasFuncEntryChi(const SVFFunction *func) const</div><div class="ttdoc">Has function for EntryCHI/RetMU/CallCHI/CallMU. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
209
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a23ca21b90feca5e7d00c9ba9f489374a"><div class="ttname"><a href="classSVF_1_1SVFG.html#a23ca21b90feca5e7d00c9ba9f489374a">SVF::SVFG::hasFuncEntryChi</a></div><div class="ttdeci">bool hasFuncEntryChi(const SVFFunction *func) const</div><div class="ttdoc">Has function for EntryCHI/RetMU/CallCHI/CallMU. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00448">SVFG.h:448</a></div></div>
|
|
210
210
|
<div class="ttc" id="classSVF_1_1SVFG_html_a2f6ed8a9f14657abc1e2a89247a84b99"><div class="ttname"><a href="classSVF_1_1SVFG.html#a2f6ed8a9f14657abc1e2a89247a84b99">SVF::SVFG::ActualOUTSVFGNodeSet</a></div><div class="ttdeci">NodeBS ActualOUTSVFGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00079">SVFG.h:79</a></div></div>
|
|
211
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_ad9cc1581261182b56ae232d9a9b13296"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad9cc1581261182b56ae232d9a9b13296">SVF::SVFG::hasCallSiteChi</a></div><div class="ttdeci">bool hasCallSiteChi(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
211
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_ad9cc1581261182b56ae232d9a9b13296"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad9cc1581261182b56ae232d9a9b13296">SVF::SVFG::hasCallSiteChi</a></div><div class="ttdeci">bool hasCallSiteChi(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00456">SVFG.h:456</a></div></div>
|
|
212
212
|
<div class="ttc" id="classSVF_1_1SVFG_html_a7c4e9c0fad457a2dc81a85f96fcec9ec"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7c4e9c0fad457a2dc81a85f96fcec9ec">SVF::SVFG::CallSiteToActualOUTsMapTy</a></div><div class="ttdeci">Map< const CallICFGNode *, ActualOUTSVFGNodeSet > CallSiteToActualOUTsMapTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00083">SVFG.h:83</a></div></div>
|
|
213
213
|
<div class="ttc" id="namespaceSVF_html_a11c50c2f81327753b3ff3ffdbe356812"><div class="ttname"><a href="namespaceSVF.html#a11c50c2f81327753b3ff3ffdbe356812">SVF::ActualParmSVFGNode</a></div><div class="ttdeci">ActualParmVFGNode ActualParmSVFGNode</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00044">SVFG.h:44</a></div></div>
|
|
214
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a926c79813d5cfbd16201832024b95190"><div class="ttname"><a href="classSVF_1_1SVFG.html#a926c79813d5cfbd16201832024b95190">SVF::SVFG::hasDef</a></div><div class="ttdeci">bool hasDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
214
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a926c79813d5cfbd16201832024b95190"><div class="ttname"><a href="classSVF_1_1SVFG.html#a926c79813d5cfbd16201832024b95190">SVF::SVFG::hasDef</a></div><div class="ttdeci">bool hasDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00359">SVFG.h:359</a></div></div>
|
|
215
215
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
|
|
216
216
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00454">SparseBitVector.h:454</a></div></div>
|
|
217
217
|
<div class="ttc" id="classSVF_1_1SVFG_html"><div class="ttname"><a href="classSVF_1_1SVFG.html">SVF::SVFG</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00065">SVFG.h:65</a></div></div>
|
|
218
|
-
<div class="ttc" id="structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4_html_a0e3ed0946d46830533f184f12428bbb0"><div class="ttname"><a href="structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html#a0e3ed0946d46830533f184f12428bbb0">SVF::GenericGraphTraits< SVF::SVFG * >::NodeRef</a></div><div class="ttdeci">SVF::SVFGNode * NodeRef</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
218
|
+
<div class="ttc" id="structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4_html_a0e3ed0946d46830533f184f12428bbb0"><div class="ttname"><a href="structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html#a0e3ed0946d46830533f184f12428bbb0">SVF::GenericGraphTraits< SVF::SVFG * >::NodeRef</a></div><div class="ttdeci">SVF::SVFGNode * NodeRef</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00485">SVFG.h:485</a></div></div>
|
|
219
219
|
<div class="ttc" id="classSVF_1_1SVFG_html_aefca97f043b3e220ef6012a049b83fdf"><div class="ttname"><a href="classSVF_1_1SVFG.html#aefca97f043b3e220ef6012a049b83fdf">SVF::SVFG::connectCallerAndCallee</a></div><div class="ttdeci">virtual void connectCallerAndCallee(const CallICFGNode *cs, const SVFFunction *callee, SVFGEdgeSetTy &edges)</div><div class="ttdoc">Connect SVFG nodes between caller and callee for indirect call site. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00656">SVFG.cpp:656</a></div></div>
|
|
220
220
|
<div class="ttc" id="classSVF_1_1SVFG_html_ab6c337637ccc9bbf0bcc7153b427f7ca"><div class="ttname"><a href="classSVF_1_1SVFG.html#ab6c337637ccc9bbf0bcc7153b427f7ca">SVF::SVFG::getPTA</a></div><div class="ttdeci">PointerAnalysis * getPTA() const</div><div class="ttdoc">Get Pointer Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00143">SVFG.h:143</a></div></div>
|
|
221
221
|
<div class="ttc" id="classSVF_1_1SVFG_html_a07d48490eda50ee6d31f295150409cf3"><div class="ttname"><a href="classSVF_1_1SVFG.html#a07d48490eda50ee6d31f295150409cf3">SVF::SVFG::SVFG</a></div><div class="ttdeci">SVFG(std::unique_ptr< MemSSA > mssa, VFGK k)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00200">SVFG.cpp:200</a></div></div>
|
|
@@ -227,7 +227,7 @@ $(function() {
|
|
|
227
227
|
<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#l00171">GenericGraph.h:171</a></div></div>
|
|
228
228
|
<div class="ttc" id="classSVF_1_1SVFG_html_ad14cdbb3f1df1f716aa03b4d39f4e52b"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad14cdbb3f1df1f716aa03b4d39f4e52b">SVF::SVFG::STORECHI</a></div><div class="ttdeci">MemSSA::STORECHI STORECHI</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00092">SVFG.h:92</a></div></div>
|
|
229
229
|
<div class="ttc" id="classSVF_1_1VFG_html_a7343f970332391634f79b2023bba6650"><div class="ttname"><a href="classSVF_1_1VFG.html#a7343f970332391634f79b2023bba6650">SVF::VFG::getDef</a></div><div class="ttdeci">NodeID getDef(const PAGNode *pagNode) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00420">VFG.h:420</a></div></div>
|
|
230
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a402dfe93b8692be453c4f76d048b690a"><div class="ttname"><a href="classSVF_1_1SVFG.html#a402dfe93b8692be453c4f76d048b690a">SVF::SVFG::connectFOutAndAOut</a></div><div class="ttdeci">virtual void connectFOutAndAOut(const FormalOUTSVFGNode *formalOut, const ActualOUTSVFGNode *actualOut, CallSiteID csId, SVFGEdgeSetTy &edges)</div><div class="ttdoc">Connect formal-out and actual-out. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
230
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a402dfe93b8692be453c4f76d048b690a"><div class="ttname"><a href="classSVF_1_1SVFG.html#a402dfe93b8692be453c4f76d048b690a">SVF::SVFG::connectFOutAndAOut</a></div><div class="ttdeci">virtual void connectFOutAndAOut(const FormalOUTSVFGNode *formalOut, const ActualOUTSVFGNode *actualOut, CallSiteID csId, SVFGEdgeSetTy &edges)</div><div class="ttdoc">Connect formal-out and actual-out. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00299">SVFG.h:299</a></div></div>
|
|
231
231
|
<div class="ttc" id="classSVF_1_1SVFGBuilder_html"><div class="ttname"><a href="classSVF_1_1SVFGBuilder.html">SVF::SVFGBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGBuilder_8h_source.html#l00042">SVFGBuilder.h:42</a></div></div>
|
|
232
232
|
<div class="ttc" id="classSVF_1_1ICFG_html_a0dca4655c2f6112a5be1f921b8e81076"><div class="ttname"><a href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">SVF::ICFG::getFunEntryICFGNode</a></div><div class="ttdeci">FunEntryICFGNode * getFunEntryICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function entry node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00269">ICFG.cpp:269</a></div></div>
|
|
233
233
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html">SVF::StmtVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00116">VFGNode.h:116</a></div></div>
|
|
@@ -236,7 +236,8 @@ $(function() {
|
|
|
236
236
|
<div class="ttc" id="classSVF_1_1SVFG_html_ad03f0064d3a1ff397b35a606304a9c80"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad03f0064d3a1ff397b35a606304a9c80">SVF::SVFG::addIntraIndirectVFEdge</a></div><div class="ttdeci">SVFGEdge * addIntraIndirectVFEdge(NodeID srcId, NodeID dstId, const NodeBS &cpts)</div><div class="ttdoc">Add indirect def-use edges of a memory region between two statements,. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00461">SVFG.cpp:461</a></div></div>
|
|
237
237
|
<div class="ttc" id="classSVF_1_1CallCHI_html"><div class="ttname"><a href="classSVF_1_1CallCHI.html">SVF::CallCHI</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00521">MSSAMuChi.h:521</a></div></div>
|
|
238
238
|
<div class="ttc" id="classSVF_1_1SVFG_html_a0d6cfa496e6885fe31b6b7a651fa01a8"><div class="ttname"><a href="classSVF_1_1SVFG.html#a0d6cfa496e6885fe31b6b7a651fa01a8">SVF::SVFG::pta</a></div><div class="ttdeci">PointerAnalysis * pta</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00106">SVFG.h:106</a></div></div>
|
|
239
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a842f6f2325c9e93ea96367e9cf624ee8"><div class="ttname"><a href="classSVF_1_1SVFG.html#a842f6f2325c9e93ea96367e9cf624ee8">SVF::SVFG::hasCallSiteMu</a></div><div class="ttdeci">bool hasCallSiteMu(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
239
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a842f6f2325c9e93ea96367e9cf624ee8"><div class="ttname"><a href="classSVF_1_1SVFG.html#a842f6f2325c9e93ea96367e9cf624ee8">SVF::SVFG::hasCallSiteMu</a></div><div class="ttdeci">bool hasCallSiteMu(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00460">SVFG.h:460</a></div></div>
|
|
240
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_ad2d19c5b80b01c8a7bb41100bb156279"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad2d19c5b80b01c8a7bb41100bb156279">SVF::SVFG::hasDefSVFGNode</a></div><div class="ttdeci">bool hasDefSVFGNode(const PAGNode *pagNode) const</div><div class="ttdoc">Given a pagNode, return whether it has definition site. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00176">SVFG.h:176</a></div></div>
|
|
240
241
|
<div class="ttc" id="classSVF_1_1FormalParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalParmVFGNode.html">SVF::FormalParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00898">VFGNode.h:898</a></div></div>
|
|
241
242
|
<div class="ttc" id="classSVF_1_1SVFG_html_a49fc2c505720d5cfa57231529d1c7534"><div class="ttname"><a href="classSVF_1_1SVFG.html#a49fc2c505720d5cfa57231529d1c7534">SVF::SVFG::getInterVFEdgesForIndirectCallSite</a></div><div class="ttdeci">void getInterVFEdgesForIndirectCallSite(const CallICFGNode *cs, const SVFFunction *callee, SVFGEdgeSetTy &edges)</div><div class="ttdoc">Get all inter value flow edges of a indirect call site. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00582">SVFG.cpp:582</a></div></div>
|
|
242
243
|
<div class="ttc" id="classSVF_1_1VFG_html_a915fa50effaeea10716b86528b15c6dc"><div class="ttname"><a href="classSVF_1_1VFG.html#a915fa50effaeea10716b86528b15c6dc">SVF::VFG::getVFGNode</a></div><div class="ttdeci">VFGNode * getVFGNode(NodeID id) const</div><div class="ttdoc">Get a VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00145">VFG.h:145</a></div></div>
|
|
@@ -245,12 +246,12 @@ $(function() {
|
|
|
245
246
|
<div class="ttc" id="classSVF_1_1SVFG_html_a7d58f9fe97071ec9936174689cb99301"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7d58f9fe97071ec9936174689cb99301">SVF::SVFG::funToFormalOUTMap</a></div><div class="ttdeci">FunctionToFormalOUTsMapTy funToFormalOUTMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00103">SVFG.h:103</a></div></div>
|
|
246
247
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00212">GenericGraph.h:212</a></div></div>
|
|
247
248
|
<div class="ttc" id="classSVF_1_1FormalRetVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalRetVFGNode.html">SVF::FormalRetVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l01025">VFGNode.h:1025</a></div></div>
|
|
248
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a7a88391e0c2cf8a57238dec32c2474a3"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7a88391e0c2cf8a57238dec32c2474a3">SVF::SVFG::getInterVFEdgeAtIndCSFromFOutToAOut</a></div><div class="ttdeci">virtual void getInterVFEdgeAtIndCSFromFOutToAOut(ActualOUTSVFGNode *actualOut, const SVFFunction *callee, SVFGEdgeSetTy &edges)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
249
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a7a88391e0c2cf8a57238dec32c2474a3"><div class="ttname"><a href="classSVF_1_1SVFG.html#a7a88391e0c2cf8a57238dec32c2474a3">SVF::SVFG::getInterVFEdgeAtIndCSFromFOutToAOut</a></div><div class="ttdeci">virtual void getInterVFEdgeAtIndCSFromFOutToAOut(ActualOUTSVFGNode *actualOut, const SVFFunction *callee, SVFGEdgeSetTy &edges)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00337">SVFG.h:337</a></div></div>
|
|
249
250
|
<div class="ttc" id="classSVF_1_1SVFG_html_a49a910bc4ea6e98d1584e74a018badc9"><div class="ttname"><a href="classSVF_1_1SVFG.html#a49a910bc4ea6e98d1584e74a018badc9">SVF::SVFG::getMSSA</a></div><div class="ttdeci">MemSSA * getMSSA() const</div><div class="ttdoc">Get SVFG memory SSA. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00137">SVFG.h:137</a></div></div>
|
|
250
251
|
<div class="ttc" id="classSVF_1_1SVFG_html_acd9fd6597e5dedf3c14a430830c7dd08"><div class="ttname"><a href="classSVF_1_1SVFG.html#acd9fd6597e5dedf3c14a430830c7dd08">SVF::SVFG::CALLMU</a></div><div class="ttdeci">MemSSA::CALLMU CALLMU</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00096">SVFG.h:96</a></div></div>
|
|
251
252
|
<div class="ttc" id="classSVF_1_1SVFG_html_ad189e45b0c810e68566ccc3bdb3f2e59"><div class="ttname"><a href="classSVF_1_1SVFG.html#ad189e45b0c810e68566ccc3bdb3f2e59">SVF::SVFG::isCallSiteRetSVFGNode</a></div><div class="ttdeci">const CallICFGNode * isCallSiteRetSVFGNode(const SVFGNode *node) const</div><div class="ttdoc">Whether a node is callsite return SVFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00730">SVFG.cpp:730</a></div></div>
|
|
252
253
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a8a5d3597f3dba9744e170cc8c32bf25f"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f">SVF::MemSSA::PHISet</a></div><div class="ttdeci">Set< PHI * > PHISet</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00072">MemSSA.h:72</a></div></div>
|
|
253
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a88e1f6f77421c5274ceeb14928bdcb43"><div class="ttname"><a href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">SVF::SVFG::addSVFGNode</a></div><div class="ttdeci">virtual void addSVFGNode(SVFGNode *node, ICFGNode *icfgNode)</div><div class="ttdoc">Add SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
254
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a88e1f6f77421c5274ceeb14928bdcb43"><div class="ttname"><a href="classSVF_1_1SVFG.html#a88e1f6f77421c5274ceeb14928bdcb43">SVF::SVFG::addSVFGNode</a></div><div class="ttdeci">virtual void addSVFGNode(SVFGNode *node, ICFGNode *icfgNode)</div><div class="ttdoc">Add SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00396">SVFG.h:396</a></div></div>
|
|
254
255
|
<div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00163">SVFIR.h:163</a></div></div>
|
|
255
256
|
<div class="ttc" id="classSVF_1_1SVFG_html_acb7262c3b9161c77eb1b491048152fb0"><div class="ttname"><a href="classSVF_1_1SVFG.html#acb7262c3b9161c77eb1b491048152fb0">SVF::SVFG::FormalOUTSVFGNodeSet</a></div><div class="ttdeci">NodeBS FormalOUTSVFGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00081">SVFG.h:81</a></div></div>
|
|
256
257
|
<div class="ttc" id="classSVF_1_1VFG_html_ac2e2f555975063da3fa1932ac35802c6"><div class="ttname"><a href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6">SVF::VFG::VFGK</a></div><div class="ttdeci">VFGK</div><div class="ttdoc">VFG kind. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00055">VFG.h:55</a></div></div>
|
|
@@ -263,15 +264,15 @@ $(function() {
|
|
|
263
264
|
<div class="ttc" id="classSVF_1_1MSSACHI_html"><div class="ttname"><a href="classSVF_1_1MSSACHI.html">SVF::MSSACHI</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00396">MSSAMuChi.h:396</a></div></div>
|
|
264
265
|
<div class="ttc" id="classSVF_1_1SVFG_html_ac84d3749671f177b14749a825e36efe3"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac84d3749671f177b14749a825e36efe3">SVF::SVFG::MSSAVarToDefMapTy</a></div><div class="ttdeci">Map< const MRVer *, NodeID > MSSAVarToDefMapTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00077">SVFG.h:77</a></div></div>
|
|
265
266
|
<div class="ttc" id="namespaceSVF_html_aa4745cf70b26e17d59752356f0b19dd9"><div class="ttname"><a href="namespaceSVF.html#aa4745cf70b26e17d59752356f0b19dd9">SVF::SVFGEdge</a></div><div class="ttdeci">VFGEdge SVFGEdge</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00040">SVFG.h:40</a></div></div>
|
|
266
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_ac9ab2a95cd7a09bbe4b4aa3e6fafaf62"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac9ab2a95cd7a09bbe4b4aa3e6fafaf62">SVF::SVFG::connectAInAndFIn</a></div><div class="ttdeci">virtual void connectAInAndFIn(const ActualINSVFGNode *actualIn, const FormalINSVFGNode *formalIn, CallSiteID csId, SVFGEdgeSetTy &edges)</div><div class="ttdoc">Connect SVFG nodes between caller and callee for indirect call site. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
267
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_ac9ab2a95cd7a09bbe4b4aa3e6fafaf62"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac9ab2a95cd7a09bbe4b4aa3e6fafaf62">SVF::SVFG::connectAInAndFIn</a></div><div class="ttdeci">virtual void connectAInAndFIn(const ActualINSVFGNode *actualIn, const FormalINSVFGNode *formalIn, CallSiteID csId, SVFGEdgeSetTy &edges)</div><div class="ttdoc">Connect SVFG nodes between caller and callee for indirect call site. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00292">SVFG.h:292</a></div></div>
|
|
267
268
|
<div class="ttc" id="namespaceSVF_html_ad772e1586e369943f37c22641e93e941"><div class="ttname"><a href="namespaceSVF.html#ad772e1586e369943f37c22641e93e941">SVF::IntraPHISVFGNode</a></div><div class="ttdeci">IntraPHIVFGNode IntraPHISVFGNode</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00057">SVFG.h:57</a></div></div>
|
|
268
269
|
<div class="ttc" id="classSVF_1_1DummyVersionPropSVFGNode_html"><div class="ttname"><a href="classSVF_1_1DummyVersionPropSVFGNode.html">SVF::DummyVersionPropSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00469">SVFGNode.h:469</a></div></div>
|
|
269
270
|
<div class="ttc" id="namespaceSVF_html_a3ce49be3724e1e8423ccdfa726fbf6c8"><div class="ttname"><a href="namespaceSVF.html#a3ce49be3724e1e8423ccdfa726fbf6c8">SVF::LoadSVFGNode</a></div><div class="ttdeci">LoadVFGNode LoadSVFGNode</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00054">SVFG.h:54</a></div></div>
|
|
270
271
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html">SVF::PointerAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00058">PointerAnalysis.h:58</a></div></div>
|
|
271
272
|
<div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
|
|
272
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_ab2b969b7d5922427622dd875e6b8fe14"><div class="ttname"><a href="classSVF_1_1SVFG.html#ab2b969b7d5922427622dd875e6b8fe14">SVF::SVFG::getInterVFEdgeAtIndCSFromFRToAR</a></div><div class="ttdeci">virtual void getInterVFEdgeAtIndCSFromFRToAR(const PAGNode *fun_ret, const PAGNode *cs_ret, CallSiteID csId, SVFGEdgeSetTy &edges)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
273
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_ab2b969b7d5922427622dd875e6b8fe14"><div class="ttname"><a href="classSVF_1_1SVFG.html#ab2b969b7d5922427622dd875e6b8fe14">SVF::SVFG::getInterVFEdgeAtIndCSFromFRToAR</a></div><div class="ttdeci">virtual void getInterVFEdgeAtIndCSFromFRToAR(const PAGNode *fun_ret, const PAGNode *cs_ret, CallSiteID csId, SVFGEdgeSetTy &edges)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00318">SVFG.h:318</a></div></div>
|
|
273
274
|
<div class="ttc" id="classSVF_1_1InterPHIVFGNode_html"><div class="ttname"><a href="classSVF_1_1InterPHIVFGNode.html">SVF::InterPHIVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l01091">VFGNode.h:1091</a></div></div>
|
|
274
|
-
<div class="ttc" id="classSVF_1_1SVFG_html_a700c5fc6c1cb4136e55196fe3d393b8b"><div class="ttname"><a href="classSVF_1_1SVFG.html#a700c5fc6c1cb4136e55196fe3d393b8b">SVF::SVFG::removeSVFGNode</a></div><div class="ttdeci">void removeSVFGNode(SVFGNode *node)</div><div class="ttdoc">Remove a SVFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#
|
|
275
|
+
<div class="ttc" id="classSVF_1_1SVFG_html_a700c5fc6c1cb4136e55196fe3d393b8b"><div class="ttname"><a href="classSVF_1_1SVFG.html#a700c5fc6c1cb4136e55196fe3d393b8b">SVF::SVFG::removeSVFGNode</a></div><div class="ttdeci">void removeSVFGNode(SVFGNode *node)</div><div class="ttdoc">Remove a SVFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00242">SVFG.h:242</a></div></div>
|
|
275
276
|
<div class="ttc" id="classSVF_1_1VFG_html_ad8c76cdb73541eed5aa1c2ba9de60383"><div class="ttname"><a href="classSVF_1_1VFG.html#ad8c76cdb73541eed5aa1c2ba9de60383">SVF::VFG::addVFGNode</a></div><div class="ttdeci">virtual void addVFGNode(VFGNode *vfgNode, ICFGNode *icfgNode)</div><div class="ttdoc">Add a VFG node. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00464">VFG.h:464</a></div></div>
|
|
276
277
|
</div><!-- fragment --></div><!-- contents -->
|
|
277
278
|
<!-- start footer part -->
|