svf-tools 1.0.331 → 1.0.332
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/ICFGNode_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1InterBlockNode-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterBlockNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +2 -2
- package/SVF-doxygen/html/html/functions_a.html +4 -4
- package/SVF-doxygen/html/html/functions_func.html +7 -7
- package/SVF-doxygen/html/html/functions_func_g.html +7 -7
- package/SVF-doxygen/html/html/functions_g.html +9 -9
- package/SVF-doxygen/html/html/functions_r.html +1 -1
- package/SVF-doxygen/html/html/functions_s.html +3 -3
- package/SVF-doxygen/html/html/functions_t.html +5 -7
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_w.html +5 -9
- package/SVF-doxygen/html/html/search/all_1.js +1 -1
- package/SVF-doxygen/html/html/search/all_12.js +1 -1
- package/SVF-doxygen/html/html/search/all_13.js +3 -3
- package/SVF-doxygen/html/html/search/all_14.js +2 -2
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_7.js +1 -1
- package/SVF-doxygen/html/html/search/functions_0.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +1 -1
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/include/Graphs/ICFGNode.h +2 -2
- package/lib/SVF-FE/SVFIRBuilder.cpp +1 -1
- package/package.json +1 -1
|
@@ -66,7 +66,7 @@ $(function() {
|
|
|
66
66
|
<div class="title">ICFGNode.h</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="ICFGNode_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">//===- ICFGNode.h -- ICFG node------------------------------------------------//</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-2018> <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"> * ICFGNode.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: Sep 11, 2018</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei</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 ICFGNODE_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define ICFGNODE_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="SVFUtil_8h.html">Util/SVFUtil.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="GenericGraph_8h.html">Graphs/GenericGraph.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="ICFGEdge_8h.html">Graphs/ICFGEdge.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">class </span>ICFGNode;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">class </span>RetBlockNode;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span>CallPE;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">class </span>RetPE;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">class </span>SVFStmt;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">class </span>SVFVar;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespaceSVF.html#afc2824871ad4eb9b871c35ae28494cd3"> 46</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericNode.html">GenericNode<ICFGNode, ICFGEdge></a> <a class="code" href="namespaceSVF.html#afc2824871ad4eb9b871c35ae28494cd3">GenericICFGNodeTy</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html"> 54</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> : <span class="keyword">public</span> GenericICFGNodeTy</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376"> 60</a></span>  <span class="keyword">enum</span> <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376">ICFGNodeK</a></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a0df20ce0cced8193d3f194ee5985c8c4"> 62</a></span>  <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a0df20ce0cced8193d3f194ee5985c8c4">IntraBlock</a>, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ad2fb9517b64addcced67efe9cc83b994">FunEntryBlock</a>, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376acf25925678f7fa5fba01766bd06a1fb8">FunExitBlock</a>, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a58501ce2adf17a3da23a98f363ed9800">FunCallBlock</a>, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac731cdb9d1269f6c25e1c80159154921">FunRetBlock</a>, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac93cf90864e69a21cbaefccbd48b8648">GlobalBlock</a></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a5a148eccec266a67e4ff5364d7268fff"> 65</a></span>  <span class="keyword">typedef</span> ICFGEdge::ICFGEdgeSetTy::iterator <a class="code" href="classSVF_1_1ICFGNode.html#a5a148eccec266a67e4ff5364d7268fff">iterator</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#ac16c5a3227a44d3b9f7c3209156d9df2"> 66</a></span>  <span class="keyword">typedef</span> ICFGEdge::ICFGEdgeSetTy::const_iterator <a class="code" href="classSVF_1_1ICFGNode.html#ac16c5a3227a44d3b9f7c3209156d9df2">const_iterator</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#ab1a4b4a8dc600ca375d9f5adbd2a5b59"> 67</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const CallPE *></a> <a class="code" href="classSVF_1_1ICFGNode.html#ab1a4b4a8dc600ca375d9f5adbd2a5b59">CallPESet</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a2c39225f7b5ca0c392ea7afc3cec1fdb"> 68</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const RetPE *></a> <a class="code" href="classSVF_1_1ICFGNode.html#a2c39225f7b5ca0c392ea7afc3cec1fdb">RetPESet</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a53a4a33b8ea241f46b37111905a48169"> 69</a></span>  <span class="keyword">typedef</span> std::list<const VFGNode*> <a class="code" href="classSVF_1_1ICFGNode.html#a53a4a33b8ea241f46b37111905a48169">VFGNodeList</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#aa84a3724426f08a0e31ecdbc99114072"> 70</a></span>  <span class="keyword">typedef</span> std::list<const SVFStmt*> <a class="code" href="classSVF_1_1ICFGNode.html#aa84a3724426f08a0e31ecdbc99114072">SVFStmtList</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#ae6fe836e269ac36f14b2d2b1499a11e6"> 74</a></span>  <a class="code" href="classSVF_1_1ICFGNode.html#ae6fe836e269ac36f14b2d2b1499a11e6">ICFGNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376">ICFGNodeK</a> k) : GenericICFGNodeTy(i, k), <a class="code" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">fun</a>(nullptr), <a class="code" href="classSVF_1_1ICFGNode.html#ad3c5171fed4e28cfd35c1a6fb9697005">bb</a>(nullptr)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da"> 80</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">fun</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4"> 86</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* <a class="code" href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">getBB</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFGNode.html#ad3c5171fed4e28cfd35c1a6fb9697005">bb</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a19844bff2f6a0e90217c7a2ce9bb5184"> 94</a></span>  <span class="keyword">friend</span> <a class="code" href="namespaceSVF.html#a424cc053c29ad7303699c529d1a2cc71">raw_ostream</a> &<a class="code" href="classSVF_1_1ICFGNode.html#a19844bff2f6a0e90217c7a2ce9bb5184">operator<<</a>(<a class="code" href="namespaceSVF.html#a424cc053c29ad7303699c529d1a2cc71">raw_ostream</a> &o, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> &node)</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  o << node.<a class="code" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">toString</a>();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> o;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#aff18898b9bbd85d08b00d64d48eea6a5"> 103</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGNode.html#aff18898b9bbd85d08b00d64d48eea6a5">addVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a> *vfgNode)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <a class="code" href="classSVF_1_1ICFGNode.html#a57f9be13188a6cd53b30489f791e40d3">VFGNodes</a>.push_back(vfgNode);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#abcc53637a634f7ec92b9c7861b941601"> 108</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> VFGNodeList& <a class="code" href="classSVF_1_1ICFGNode.html#abcc53637a634f7ec92b9c7861b941601">getVFGNodes</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFGNode.html#a57f9be13188a6cd53b30489f791e40d3">VFGNodes</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a820364ef4158270478e9c09e11b6c2ea"> 116</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGNode.html#a820364ef4158270478e9c09e11b6c2ea">addPAGEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="classSVF_1_1ICFGNode.html#a12ce3aabc1bd3bae7caa9be9ec0a6a71">pagEdges</a>.push_back(edge);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a23707d08fd5cfcb5db72ff4ef0b864ff"> 121</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> SVFStmtList& <a class="code" href="classSVF_1_1ICFGNode.html#a23707d08fd5cfcb5db72ff4ef0b864ff">getPAGEdges</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFGNode.html#a12ce3aabc1bd3bae7caa9be9ec0a6a71">pagEdges</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGNode.html#a3c193da05d6dee7313a141ae3ab43e97">dump</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be"> 132</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">fun</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#ad3c5171fed4e28cfd35c1a6fb9697005"> 133</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* <a class="code" href="classSVF_1_1ICFGNode.html#ad3c5171fed4e28cfd35c1a6fb9697005">bb</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a57f9be13188a6cd53b30489f791e40d3"> 134</a></span>  VFGNodeList <a class="code" href="classSVF_1_1ICFGNode.html#a57f9be13188a6cd53b30489f791e40d3">VFGNodes</a>; <span class="comment">//< a list of VFGNodes</span></div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a12ce3aabc1bd3bae7caa9be9ec0a6a71"> 135</a></span>  SVFStmtList <a class="code" href="classSVF_1_1ICFGNode.html#a12ce3aabc1bd3bae7caa9be9ec0a6a71">pagEdges</a>; <span class="comment">//< a list of PAGEdges</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> };</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classSVF_1_1GlobalBlockNode.html"> 142</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1GlobalBlockNode.html">GlobalBlockNode</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classSVF_1_1GlobalBlockNode.html#a233fceb667e517862fd97d50832a4d7e"> 146</a></span>  <a class="code" href="classSVF_1_1GlobalBlockNode.html#a233fceb667e517862fd97d50832a4d7e">GlobalBlockNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>) : <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>(id, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac93cf90864e69a21cbaefccbd48b8648">GlobalBlock</a>)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="classSVF_1_1ICFGNode.html#ad3c5171fed4e28cfd35c1a6fb9697005">bb</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</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"><a class="line" href="classSVF_1_1GlobalBlockNode.html#a42b0e52fb503c704bec4b1506991ed75"> 153</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GlobalBlockNode.html#a42b0e52fb503c704bec4b1506991ed75">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GlobalBlockNode.html">GlobalBlockNode</a> *)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1GlobalBlockNode.html#aab88b3a34534158e3f67e81f047248d0"> 158</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GlobalBlockNode.html#aab88b3a34534158e3f67e81f047248d0">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac93cf90864e69a21cbaefccbd48b8648">GlobalBlock</a>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classSVF_1_1GlobalBlockNode.html#a26f244ed2fdbc1cb7abdb97373465caf"> 163</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GlobalBlockNode.html#a26f244ed2fdbc1cb7abdb97373465caf">classof</a>(<span class="keyword">const</span> GenericICFGNodeTy *node)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac93cf90864e69a21cbaefccbd48b8648">GlobalBlock</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> };</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraBlockNode.html"> 175</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1IntraBlockNode.html">IntraBlockNode</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraBlockNode.html#a2381ce8fea9eb3213bd2f2d00db0086d"> 178</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1IntraBlockNode.html#a2381ce8fea9eb3213bd2f2d00db0086d">inst</a>;</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> <span class="keyword">public</span>:</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraBlockNode.html#a498e59de4ef7bc2ec8f76de43608a778"> 181</a></span>  <a class="code" href="classSVF_1_1IntraBlockNode.html#a498e59de4ef7bc2ec8f76de43608a778">IntraBlockNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i) : <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>(id, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a0df20ce0cced8193d3f194ee5985c8c4">IntraBlock</a>), inst(i)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">fun</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(inst->getFunction());</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="classSVF_1_1ICFGNode.html#ad3c5171fed4e28cfd35c1a6fb9697005">bb</a> = inst->getParent();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraBlockNode.html#ac4d046229e38c7501d7aca638f13f07b"> 187</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1IntraBlockNode.html#ac4d046229e38c7501d7aca638f13f07b">getInst</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">return</span> inst;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraBlockNode.html#afec0f1abe96e4f6e0e3f9e4d075bf308"> 194</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1IntraBlockNode.html#afec0f1abe96e4f6e0e3f9e4d075bf308">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1IntraBlockNode.html">IntraBlockNode</a> *)</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraBlockNode.html#aab3d8287388f8d4b5e22e8496bb37f8d"> 199</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1IntraBlockNode.html#aab3d8287388f8d4b5e22e8496bb37f8d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a0df20ce0cced8193d3f194ee5985c8c4">IntraBlock</a>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraBlockNode.html#a7a4180f1fc1b33da820c676aa8c4613d"> 204</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1IntraBlockNode.html#a7a4180f1fc1b33da820c676aa8c4613d">classof</a>(<span class="keyword">const</span> GenericICFGNodeTy *node)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a0df20ce0cced8193d3f194ee5985c8c4">IntraBlock</a>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</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="keyword">const</span> std::string <a class="code" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">toString</a>() <span class="keyword">const</span>;</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_1InterBlockNode.html"> 213</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a></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> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classSVF_1_1InterBlockNode.html#a02b79c6ff51262d4c92a69597a8b46db"> 218</a></span>  <a class="code" href="classSVF_1_1InterBlockNode.html#a02b79c6ff51262d4c92a69597a8b46db">InterBlockNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376">ICFGNodeK</a> k) : <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>(id, k)</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>  }</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="l00224"></a><span class="lineno"><a class="line" href="classSVF_1_1InterBlockNode.html#aba751d4e1585e5e42bf505574f8b288a"> 224</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1InterBlockNode.html#aba751d4e1585e5e42bf505574f8b288a">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a> *)</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> <span class="keyword">true</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classSVF_1_1InterBlockNode.html#a2a0f22695ebcceefe2c57a4ba9255e35"> 229</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1InterBlockNode.html#a2a0f22695ebcceefe2c57a4ba9255e35">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ad2fb9517b64addcced67efe9cc83b994">FunEntryBlock</a></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  || node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376acf25925678f7fa5fba01766bd06a1fb8">FunExitBlock</a></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  || node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a58501ce2adf17a3da23a98f363ed9800">FunCallBlock</a></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  || node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac731cdb9d1269f6c25e1c80159154921">FunRetBlock</a>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="classSVF_1_1InterBlockNode.html#a4ab1005f23a3f3a0e2e275a9be183553"> 237</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1InterBlockNode.html#a4ab1005f23a3f3a0e2e275a9be183553">classof</a>(<span class="keyword">const</span> GenericICFGNodeTy *node)</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>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ad2fb9517b64addcced67efe9cc83b994">FunEntryBlock</a></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  || node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376acf25925678f7fa5fba01766bd06a1fb8">FunExitBlock</a></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  || node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a58501ce2adf17a3da23a98f363ed9800">FunCallBlock</a></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  || node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac731cdb9d1269f6c25e1c80159154921">FunRetBlock</a>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  }</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="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryBlockNode.html"> 251</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1FunEntryBlockNode.html">FunEntryBlockNode</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryBlockNode.html#a44354534e0f2fc7626e5ed11126f2549"> 255</a></span>  <span class="keyword">typedef</span> std::vector<const SVFVar *> <a class="code" href="classSVF_1_1FunEntryBlockNode.html#a44354534e0f2fc7626e5ed11126f2549">FormalParmNodeVec</a>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryBlockNode.html#afc829a259f3c15524a71cef27d294949"> 257</a></span>  FormalParmNodeVec <a class="code" href="classSVF_1_1FunEntryBlockNode.html#afc829a259f3c15524a71cef27d294949">FPNodes</a>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <a class="code" href="classSVF_1_1FunEntryBlockNode.html">FunEntryBlockNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* f);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryBlockNode.html#ac0f34c048695a1ed822bc7fec0dfe028"> 262</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1FunEntryBlockNode.html#ac0f34c048695a1ed822bc7fec0dfe028">getFun</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">fun</a>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryBlockNode.html#a2206a196a4bfcc4475c1a0b48e16b180"> 268</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> FormalParmNodeVec &<a class="code" href="classSVF_1_1FunEntryBlockNode.html#a2206a196a4bfcc4475c1a0b48e16b180">getFormalParms</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">return</span> FPNodes;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryBlockNode.html#ae6ebc073885c5d47f685c61097dadf20"> 274</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FunEntryBlockNode.html#ae6ebc073885c5d47f685c61097dadf20">addFormalParms</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *fp)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  FPNodes.push_back(fp);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> </div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryBlockNode.html#a7a3c08df6a65f82ecda01d3f547aa158"> 281</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FunEntryBlockNode.html#a7a3c08df6a65f82ecda01d3f547aa158">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryBlockNode.html">FunEntryBlockNode</a> *)</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">return</span> <span class="keyword">true</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> </div><div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryBlockNode.html#a86f816aea050a089d7a86dbc774deba3"> 286</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FunEntryBlockNode.html#a86f816aea050a089d7a86dbc774deba3">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a> *node)</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ad2fb9517b64addcced67efe9cc83b994">FunEntryBlock</a>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryBlockNode.html#a590bf75c1e200b6e9a66b852a6002c32"> 291</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FunEntryBlockNode.html#a590bf75c1e200b6e9a66b852a6002c32">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ad2fb9517b64addcced67efe9cc83b994">FunEntryBlock</a>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryBlockNode.html#a0c124155eaac6adf80029dbf708294ff"> 296</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FunEntryBlockNode.html#a0c124155eaac6adf80029dbf708294ff">classof</a>(<span class="keyword">const</span> GenericICFGNodeTy *node)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ad2fb9517b64addcced67efe9cc83b994">FunEntryBlock</a>;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keyword">const</span> <span class="keyword">virtual</span> std::string <a class="code" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> };</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitBlockNode.html"> 308</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1FunExitBlockNode.html">FunExitBlockNode</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitBlockNode.html#a0d18e92e60f6060ee188d4e4947f8097"> 312</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1FunExitBlockNode.html#a0d18e92e60f6060ee188d4e4947f8097">fun</a>;</div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitBlockNode.html#ae759d153ed7d3296b67574c888b99e4f"> 313</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *<a class="code" href="classSVF_1_1FunExitBlockNode.html#ae759d153ed7d3296b67574c888b99e4f">formalRet</a>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <a class="code" href="classSVF_1_1FunExitBlockNode.html">FunExitBlockNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* f);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitBlockNode.html#a1463cde3f7e218c4bef996b2e1e9aef4"> 318</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1FunExitBlockNode.html#a1463cde3f7e218c4bef996b2e1e9aef4">getFun</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">fun</a>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00324"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitBlockNode.html#af1f343711d10adacf264f1aaebf44d54"> 324</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *<a class="code" href="classSVF_1_1FunExitBlockNode.html#af1f343711d10adacf264f1aaebf44d54">getFormalRet</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">return</span> formalRet;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitBlockNode.html#ae1499a3ea7d5bb90dccd5d04a8b97dfc"> 330</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FunExitBlockNode.html#ae1499a3ea7d5bb90dccd5d04a8b97dfc">addFormalRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *fr)</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  formalRet = fr;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div><div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitBlockNode.html#a5fdc1edafbd26a57c1c563f8df439cfc"> 337</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FunExitBlockNode.html#a5fdc1edafbd26a57c1c563f8df439cfc">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryBlockNode.html">FunEntryBlockNode</a> *)</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">return</span> <span class="keyword">true</span>;</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> </div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitBlockNode.html#abeae6aae021670c80206c1f5a82ccd97"> 342</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FunExitBlockNode.html#abeae6aae021670c80206c1f5a82ccd97">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376acf25925678f7fa5fba01766bd06a1fb8">FunExitBlock</a>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitBlockNode.html#aceef01ea3cc4d85385705df32b6f67da"> 347</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FunExitBlockNode.html#aceef01ea3cc4d85385705df32b6f67da">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a> *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"> 349</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376acf25925678f7fa5fba01766bd06a1fb8">FunExitBlock</a>;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitBlockNode.html#a6cda85f67241db56f0a8ca4830c574f0"> 352</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FunExitBlockNode.html#a6cda85f67241db56f0a8ca4830c574f0">classof</a>(<span class="keyword">const</span> GenericICFGNodeTy *node)</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376acf25925678f7fa5fba01766bd06a1fb8">FunExitBlock</a>;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> </div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> };</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html"> 364</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a></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> </div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a3e0ea980b787636a9aa79c3b3738df0c"> 368</a></span>  <span class="keyword">typedef</span> std::vector<const SVFVar *> <a class="code" href="classSVF_1_1CallBlockNode.html#a3e0ea980b787636a9aa79c3b3738df0c">ActualParmVFGNodeVec</a>;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a4236d60c129adc0d959bed14dce71053"> 370</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* <a class="code" href="classSVF_1_1CallBlockNode.html#a4236d60c129adc0d959bed14dce71053">cs</a>;</div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a3d0f509f08dd017efecc949f0a98e1af"> 371</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a>* <a class="code" href="classSVF_1_1CallBlockNode.html#a3d0f509f08dd017efecc949f0a98e1af">ret</a>;</div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#adf65fcbc277c4c7a259cc015aa9b3f32"> 372</a></span>  ActualParmVFGNodeVec <a class="code" href="classSVF_1_1CallBlockNode.html#adf65fcbc277c4c7a259cc015aa9b3f32">APNodes</a>;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a4f5af7780f4290ae69724fd3050dab1a"> 374</a></span>  <a class="code" href="classSVF_1_1CallBlockNode.html#a4f5af7780f4290ae69724fd3050dab1a">CallBlockNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* c) : <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a>(id, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a58501ce2adf17a3da23a98f363ed9800">FunCallBlock</a>), cs(c), ret(nullptr)</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <a class="code" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">fun</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(cs->getFunction());</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <a class="code" href="classSVF_1_1ICFGNode.html#ad3c5171fed4e28cfd35c1a6fb9697005">bb</a> = cs->getParent();</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="l00381"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f"> 381</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* <a class="code" href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">getCallSite</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">return</span> cs;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#ad48f8aa952074fba88c54d6e9fad4a17"> 387</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a>* <a class="code" href="classSVF_1_1CallBlockNode.html#ad48f8aa952074fba88c54d6e9fad4a17">getRetBlockNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(ret && <span class="stringliteral">"RetBlockNode not set?"</span>);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">return</span> ret;</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> </div><div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a8ad5091c13a0dc2f6518a0e3340dcb05"> 394</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CallBlockNode.html#a8ad5091c13a0dc2f6518a0e3340dcb05">setRetBlockNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a>* r)</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  ret = r;</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> </div><div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a5bab98a0b8cf0a804d53abd994e922c0"> 400</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1CallBlockNode.html#a5bab98a0b8cf0a804d53abd994e922c0">getCaller</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(cs->getFunction());</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> </div><div class="line"><a name="l00406"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#aa541f0ab3c35110d5a00ae8bb4af58bc"> 406</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* <a class="code" href="classSVF_1_1CallBlockNode.html#aa541f0ab3c35110d5a00ae8bb4af58bc">getParent</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">return</span> cs->getParent();</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> </div><div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a285c517dfd7fee5467606663a0fdd035"> 412</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallBlockNode.html#a285c517dfd7fee5467606663a0fdd035">isIndirectCall</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span> == <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(cs);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  }</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> </div><div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a20ed03cf52e284860210e4b53766b45f"> 418</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> ActualParmVFGNodeVec &<a class="code" href="classSVF_1_1CallBlockNode.html#a20ed03cf52e284860210e4b53766b45f">getActualParms</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">return</span> APNodes;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a6d819186e239e68c117af16ed405da84"> 424</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CallBlockNode.html#a6d819186e239e68c117af16ed405da84">addActualParms</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *ap)</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  APNodes.push_back(ap);</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"> 430</span> </div><div class="line"><a name="l00431"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a1c688ff81489957e775cb2463c59d1ef"> 431</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallBlockNode.html#a1c688ff81489957e775cb2463c59d1ef">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a> *)</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>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a43a5f89377aef18e7e6d31731b8bf11d"> 436</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallBlockNode.html#a43a5f89377aef18e7e6d31731b8bf11d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a58501ce2adf17a3da23a98f363ed9800">FunCallBlock</a>;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  }</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> </div><div class="line"><a name="l00441"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a8ac74fdb13bee140b0568f40c3a94b2a"> 441</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallBlockNode.html#a8ac74fdb13bee140b0568f40c3a94b2a">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a> *node)</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a58501ce2adf17a3da23a98f363ed9800">FunCallBlock</a>;</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="l00446"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a1fab44c7854d6bc5fe0ab9ad236b64c3"> 446</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallBlockNode.html#a1fab44c7854d6bc5fe0ab9ad236b64c3">classof</a>(<span class="keyword">const</span> GenericICFGNodeTy *node)</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a58501ce2adf17a3da23a98f363ed9800">FunCallBlock</a>;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> };</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> </div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> </div><div class="line"><a name="l00459"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html"> 459</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a></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> </div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00463"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#a9ed7b40bb07977642484362673e7ba2d"> 463</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* <a class="code" href="classSVF_1_1RetBlockNode.html#a9ed7b40bb07977642484362673e7ba2d">cs</a>;</div><div class="line"><a name="l00464"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#a74ea1e2e7765016e0a07720d9c2e0a81"> 464</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *<a class="code" href="classSVF_1_1RetBlockNode.html#a74ea1e2e7765016e0a07720d9c2e0a81">actualRet</a>;</div><div class="line"><a name="l00465"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#aa135efaadc44746c585cb295b8b2bf77"> 465</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* <a class="code" href="classSVF_1_1RetBlockNode.html#aa135efaadc44746c585cb295b8b2bf77">callBlockNode</a>;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00467"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#a7a35666782fd9fff6954ad6b5fd284ee"> 467</a></span>  <a class="code" href="classSVF_1_1RetBlockNode.html#a7a35666782fd9fff6954ad6b5fd284ee">RetBlockNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* c, <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cb) :</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a>(id, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac731cdb9d1269f6c25e1c80159154921">FunRetBlock</a>), cs(c), actualRet(nullptr), callBlockNode(cb)</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  {</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <a class="code" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">fun</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(cs->getFunction());</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <a class="code" href="classSVF_1_1ICFGNode.html#ad3c5171fed4e28cfd35c1a6fb9697005">bb</a> = cs->getParent();</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00475"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#a436cd30be9fba449fee6bc6dcc18bb18"> 475</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* <a class="code" href="classSVF_1_1RetBlockNode.html#a436cd30be9fba449fee6bc6dcc18bb18">getCallSite</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">return</span> cs;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> </div><div class="line"><a name="l00480"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#a6f47c3169f64fb7637b544ec1faf6f31"> 480</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* <a class="code" href="classSVF_1_1RetBlockNode.html#a6f47c3169f64fb7637b544ec1faf6f31">getCallBlockNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">return</span> callBlockNode;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  }</div><div class="line"><a name="l00485"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#aa9ecd6854337dfa67a828d2416f3813f"> 485</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *<a class="code" href="classSVF_1_1RetBlockNode.html#aa9ecd6854337dfa67a828d2416f3813f">getActualRet</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">return</span> actualRet;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> </div><div class="line"><a name="l00491"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#ad2cd6f6589ce5464d6fbcac49f115714"> 491</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1RetBlockNode.html#ad2cd6f6589ce5464d6fbcac49f115714">addActualRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *ar)</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  actualRet = ar;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  }</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> </div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00498"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#abd3a2b54fdb7e1339f765b3e5ab86947"> 498</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetBlockNode.html#abd3a2b54fdb7e1339f765b3e5ab86947">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a> *)</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div><div class="line"><a name="l00503"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#a06433b4ec10e147df00c1e36990cdaab"> 503</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetBlockNode.html#a06433b4ec10e147df00c1e36990cdaab">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a> *node)</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac731cdb9d1269f6c25e1c80159154921">FunRetBlock</a>;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  }</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> </div><div class="line"><a name="l00508"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#aed4047d93fee5e00c58e5bff0cbc06e0"> 508</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetBlockNode.html#aed4047d93fee5e00c58e5bff0cbc06e0">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac731cdb9d1269f6c25e1c80159154921">FunRetBlock</a>;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  }</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div><div class="line"><a name="l00513"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#a383ea0e36372dad2a0603428a8c26f7d"> 513</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetBlockNode.html#a383ea0e36372dad2a0603428a8c26f7d">classof</a>(<span class="keyword">const</span> GenericICFGNodeTy *node)</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac731cdb9d1269f6c25e1c80159154921">FunRetBlock</a>;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  }</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> </div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> };</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> </div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="preprocessor">#endif </span><span class="comment">/* ICFGNode_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="namespaceSVF_html_afc2824871ad4eb9b871c35ae28494cd3"><div class="ttname"><a href="namespaceSVF.html#afc2824871ad4eb9b871c35ae28494cd3">SVF::GenericICFGNodeTy</a></div><div class="ttdeci">GenericNode< ICFGNode, ICFGEdge > GenericICFGNodeTy</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00046">ICFGNode.h:46</a></div></div>
|
|
69
|
+
<a href="ICFGNode_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">//===- ICFGNode.h -- ICFG node------------------------------------------------//</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-2018> <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"> * ICFGNode.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: Sep 11, 2018</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei</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 ICFGNODE_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define ICFGNODE_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="SVFUtil_8h.html">Util/SVFUtil.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="GenericGraph_8h.html">Graphs/GenericGraph.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="ICFGEdge_8h.html">Graphs/ICFGEdge.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">class </span>ICFGNode;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">class </span>RetBlockNode;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span>CallPE;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">class </span>RetPE;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">class </span>SVFStmt;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">class </span>SVFVar;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespaceSVF.html#afc2824871ad4eb9b871c35ae28494cd3"> 46</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericNode.html">GenericNode<ICFGNode, ICFGEdge></a> <a class="code" href="namespaceSVF.html#afc2824871ad4eb9b871c35ae28494cd3">GenericICFGNodeTy</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html"> 54</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> : <span class="keyword">public</span> GenericICFGNodeTy</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376"> 60</a></span>  <span class="keyword">enum</span> <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376">ICFGNodeK</a></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a0df20ce0cced8193d3f194ee5985c8c4"> 62</a></span>  <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a0df20ce0cced8193d3f194ee5985c8c4">IntraBlock</a>, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ad2fb9517b64addcced67efe9cc83b994">FunEntryBlock</a>, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376acf25925678f7fa5fba01766bd06a1fb8">FunExitBlock</a>, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a58501ce2adf17a3da23a98f363ed9800">FunCallBlock</a>, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac731cdb9d1269f6c25e1c80159154921">FunRetBlock</a>, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac93cf90864e69a21cbaefccbd48b8648">GlobalBlock</a></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a5a148eccec266a67e4ff5364d7268fff"> 65</a></span>  <span class="keyword">typedef</span> ICFGEdge::ICFGEdgeSetTy::iterator <a class="code" href="classSVF_1_1ICFGNode.html#a5a148eccec266a67e4ff5364d7268fff">iterator</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#ac16c5a3227a44d3b9f7c3209156d9df2"> 66</a></span>  <span class="keyword">typedef</span> ICFGEdge::ICFGEdgeSetTy::const_iterator <a class="code" href="classSVF_1_1ICFGNode.html#ac16c5a3227a44d3b9f7c3209156d9df2">const_iterator</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#ab1a4b4a8dc600ca375d9f5adbd2a5b59"> 67</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const CallPE *></a> <a class="code" href="classSVF_1_1ICFGNode.html#ab1a4b4a8dc600ca375d9f5adbd2a5b59">CallPESet</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a2c39225f7b5ca0c392ea7afc3cec1fdb"> 68</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const RetPE *></a> <a class="code" href="classSVF_1_1ICFGNode.html#a2c39225f7b5ca0c392ea7afc3cec1fdb">RetPESet</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a53a4a33b8ea241f46b37111905a48169"> 69</a></span>  <span class="keyword">typedef</span> std::list<const VFGNode*> <a class="code" href="classSVF_1_1ICFGNode.html#a53a4a33b8ea241f46b37111905a48169">VFGNodeList</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#aa84a3724426f08a0e31ecdbc99114072"> 70</a></span>  <span class="keyword">typedef</span> std::list<const SVFStmt*> <a class="code" href="classSVF_1_1ICFGNode.html#aa84a3724426f08a0e31ecdbc99114072">SVFStmtList</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#ae6fe836e269ac36f14b2d2b1499a11e6"> 74</a></span>  <a class="code" href="classSVF_1_1ICFGNode.html#ae6fe836e269ac36f14b2d2b1499a11e6">ICFGNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376">ICFGNodeK</a> k) : GenericICFGNodeTy(i, k), <a class="code" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">fun</a>(nullptr), <a class="code" href="classSVF_1_1ICFGNode.html#ad3c5171fed4e28cfd35c1a6fb9697005">bb</a>(nullptr)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da"> 80</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">fun</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4"> 86</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* <a class="code" href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">getBB</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFGNode.html#ad3c5171fed4e28cfd35c1a6fb9697005">bb</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a19844bff2f6a0e90217c7a2ce9bb5184"> 94</a></span>  <span class="keyword">friend</span> <a class="code" href="namespaceSVF.html#a424cc053c29ad7303699c529d1a2cc71">raw_ostream</a> &<a class="code" href="classSVF_1_1ICFGNode.html#a19844bff2f6a0e90217c7a2ce9bb5184">operator<<</a>(<a class="code" href="namespaceSVF.html#a424cc053c29ad7303699c529d1a2cc71">raw_ostream</a> &o, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> &node)</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  o << node.<a class="code" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">toString</a>();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> o;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#aff18898b9bbd85d08b00d64d48eea6a5"> 103</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGNode.html#aff18898b9bbd85d08b00d64d48eea6a5">addVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a> *vfgNode)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <a class="code" href="classSVF_1_1ICFGNode.html#a57f9be13188a6cd53b30489f791e40d3">VFGNodes</a>.push_back(vfgNode);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#abcc53637a634f7ec92b9c7861b941601"> 108</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> VFGNodeList& <a class="code" href="classSVF_1_1ICFGNode.html#abcc53637a634f7ec92b9c7861b941601">getVFGNodes</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFGNode.html#a57f9be13188a6cd53b30489f791e40d3">VFGNodes</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a8a133398c691ab3639ceefbc57cd33be"> 116</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGNode.html#a8a133398c691ab3639ceefbc57cd33be">addSVFStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *edge)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="classSVF_1_1ICFGNode.html#a12ce3aabc1bd3bae7caa9be9ec0a6a71">pagEdges</a>.push_back(edge);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661"> 121</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> SVFStmtList& <a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFGNode.html#a12ce3aabc1bd3bae7caa9be9ec0a6a71">pagEdges</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ICFGNode.html#a3c193da05d6dee7313a141ae3ab43e97">dump</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be"> 132</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">fun</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#ad3c5171fed4e28cfd35c1a6fb9697005"> 133</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* <a class="code" href="classSVF_1_1ICFGNode.html#ad3c5171fed4e28cfd35c1a6fb9697005">bb</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a57f9be13188a6cd53b30489f791e40d3"> 134</a></span>  VFGNodeList <a class="code" href="classSVF_1_1ICFGNode.html#a57f9be13188a6cd53b30489f791e40d3">VFGNodes</a>; <span class="comment">//< a list of VFGNodes</span></div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classSVF_1_1ICFGNode.html#a12ce3aabc1bd3bae7caa9be9ec0a6a71"> 135</a></span>  SVFStmtList <a class="code" href="classSVF_1_1ICFGNode.html#a12ce3aabc1bd3bae7caa9be9ec0a6a71">pagEdges</a>; <span class="comment">//< a list of PAGEdges</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> };</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classSVF_1_1GlobalBlockNode.html"> 142</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1GlobalBlockNode.html">GlobalBlockNode</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classSVF_1_1GlobalBlockNode.html#a233fceb667e517862fd97d50832a4d7e"> 146</a></span>  <a class="code" href="classSVF_1_1GlobalBlockNode.html#a233fceb667e517862fd97d50832a4d7e">GlobalBlockNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>) : <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>(id, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac93cf90864e69a21cbaefccbd48b8648">GlobalBlock</a>)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="classSVF_1_1ICFGNode.html#ad3c5171fed4e28cfd35c1a6fb9697005">bb</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</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"><a class="line" href="classSVF_1_1GlobalBlockNode.html#a42b0e52fb503c704bec4b1506991ed75"> 153</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GlobalBlockNode.html#a42b0e52fb503c704bec4b1506991ed75">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GlobalBlockNode.html">GlobalBlockNode</a> *)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1GlobalBlockNode.html#aab88b3a34534158e3f67e81f047248d0"> 158</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GlobalBlockNode.html#aab88b3a34534158e3f67e81f047248d0">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac93cf90864e69a21cbaefccbd48b8648">GlobalBlock</a>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classSVF_1_1GlobalBlockNode.html#a26f244ed2fdbc1cb7abdb97373465caf"> 163</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GlobalBlockNode.html#a26f244ed2fdbc1cb7abdb97373465caf">classof</a>(<span class="keyword">const</span> GenericICFGNodeTy *node)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac93cf90864e69a21cbaefccbd48b8648">GlobalBlock</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> };</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraBlockNode.html"> 175</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1IntraBlockNode.html">IntraBlockNode</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraBlockNode.html#a2381ce8fea9eb3213bd2f2d00db0086d"> 178</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1IntraBlockNode.html#a2381ce8fea9eb3213bd2f2d00db0086d">inst</a>;</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> <span class="keyword">public</span>:</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraBlockNode.html#a498e59de4ef7bc2ec8f76de43608a778"> 181</a></span>  <a class="code" href="classSVF_1_1IntraBlockNode.html#a498e59de4ef7bc2ec8f76de43608a778">IntraBlockNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i) : <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>(id, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a0df20ce0cced8193d3f194ee5985c8c4">IntraBlock</a>), inst(i)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">fun</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(inst->getFunction());</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="classSVF_1_1ICFGNode.html#ad3c5171fed4e28cfd35c1a6fb9697005">bb</a> = inst->getParent();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraBlockNode.html#ac4d046229e38c7501d7aca638f13f07b"> 187</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1IntraBlockNode.html#ac4d046229e38c7501d7aca638f13f07b">getInst</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">return</span> inst;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraBlockNode.html#afec0f1abe96e4f6e0e3f9e4d075bf308"> 194</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1IntraBlockNode.html#afec0f1abe96e4f6e0e3f9e4d075bf308">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1IntraBlockNode.html">IntraBlockNode</a> *)</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraBlockNode.html#aab3d8287388f8d4b5e22e8496bb37f8d"> 199</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1IntraBlockNode.html#aab3d8287388f8d4b5e22e8496bb37f8d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a0df20ce0cced8193d3f194ee5985c8c4">IntraBlock</a>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classSVF_1_1IntraBlockNode.html#a7a4180f1fc1b33da820c676aa8c4613d"> 204</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1IntraBlockNode.html#a7a4180f1fc1b33da820c676aa8c4613d">classof</a>(<span class="keyword">const</span> GenericICFGNodeTy *node)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a0df20ce0cced8193d3f194ee5985c8c4">IntraBlock</a>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</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="keyword">const</span> std::string <a class="code" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">toString</a>() <span class="keyword">const</span>;</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_1InterBlockNode.html"> 213</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a></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> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classSVF_1_1InterBlockNode.html#a02b79c6ff51262d4c92a69597a8b46db"> 218</a></span>  <a class="code" href="classSVF_1_1InterBlockNode.html#a02b79c6ff51262d4c92a69597a8b46db">InterBlockNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376">ICFGNodeK</a> k) : <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>(id, k)</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>  }</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="l00224"></a><span class="lineno"><a class="line" href="classSVF_1_1InterBlockNode.html#aba751d4e1585e5e42bf505574f8b288a"> 224</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1InterBlockNode.html#aba751d4e1585e5e42bf505574f8b288a">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a> *)</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> <span class="keyword">true</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classSVF_1_1InterBlockNode.html#a2a0f22695ebcceefe2c57a4ba9255e35"> 229</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1InterBlockNode.html#a2a0f22695ebcceefe2c57a4ba9255e35">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ad2fb9517b64addcced67efe9cc83b994">FunEntryBlock</a></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  || node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376acf25925678f7fa5fba01766bd06a1fb8">FunExitBlock</a></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  || node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a58501ce2adf17a3da23a98f363ed9800">FunCallBlock</a></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  || node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac731cdb9d1269f6c25e1c80159154921">FunRetBlock</a>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="classSVF_1_1InterBlockNode.html#a4ab1005f23a3f3a0e2e275a9be183553"> 237</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1InterBlockNode.html#a4ab1005f23a3f3a0e2e275a9be183553">classof</a>(<span class="keyword">const</span> GenericICFGNodeTy *node)</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>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ad2fb9517b64addcced67efe9cc83b994">FunEntryBlock</a></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  || node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376acf25925678f7fa5fba01766bd06a1fb8">FunExitBlock</a></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  || node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a58501ce2adf17a3da23a98f363ed9800">FunCallBlock</a></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  || node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac731cdb9d1269f6c25e1c80159154921">FunRetBlock</a>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  }</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="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryBlockNode.html"> 251</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1FunEntryBlockNode.html">FunEntryBlockNode</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryBlockNode.html#a44354534e0f2fc7626e5ed11126f2549"> 255</a></span>  <span class="keyword">typedef</span> std::vector<const SVFVar *> <a class="code" href="classSVF_1_1FunEntryBlockNode.html#a44354534e0f2fc7626e5ed11126f2549">FormalParmNodeVec</a>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryBlockNode.html#afc829a259f3c15524a71cef27d294949"> 257</a></span>  FormalParmNodeVec <a class="code" href="classSVF_1_1FunEntryBlockNode.html#afc829a259f3c15524a71cef27d294949">FPNodes</a>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <a class="code" href="classSVF_1_1FunEntryBlockNode.html">FunEntryBlockNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* f);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryBlockNode.html#ac0f34c048695a1ed822bc7fec0dfe028"> 262</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1FunEntryBlockNode.html#ac0f34c048695a1ed822bc7fec0dfe028">getFun</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">fun</a>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryBlockNode.html#a2206a196a4bfcc4475c1a0b48e16b180"> 268</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> FormalParmNodeVec &<a class="code" href="classSVF_1_1FunEntryBlockNode.html#a2206a196a4bfcc4475c1a0b48e16b180">getFormalParms</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">return</span> FPNodes;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryBlockNode.html#ae6ebc073885c5d47f685c61097dadf20"> 274</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FunEntryBlockNode.html#ae6ebc073885c5d47f685c61097dadf20">addFormalParms</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *fp)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  FPNodes.push_back(fp);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> </div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryBlockNode.html#a7a3c08df6a65f82ecda01d3f547aa158"> 281</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FunEntryBlockNode.html#a7a3c08df6a65f82ecda01d3f547aa158">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryBlockNode.html">FunEntryBlockNode</a> *)</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">return</span> <span class="keyword">true</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> </div><div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryBlockNode.html#a86f816aea050a089d7a86dbc774deba3"> 286</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FunEntryBlockNode.html#a86f816aea050a089d7a86dbc774deba3">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a> *node)</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ad2fb9517b64addcced67efe9cc83b994">FunEntryBlock</a>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryBlockNode.html#a590bf75c1e200b6e9a66b852a6002c32"> 291</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FunEntryBlockNode.html#a590bf75c1e200b6e9a66b852a6002c32">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ad2fb9517b64addcced67efe9cc83b994">FunEntryBlock</a>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1FunEntryBlockNode.html#a0c124155eaac6adf80029dbf708294ff"> 296</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FunEntryBlockNode.html#a0c124155eaac6adf80029dbf708294ff">classof</a>(<span class="keyword">const</span> GenericICFGNodeTy *node)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ad2fb9517b64addcced67efe9cc83b994">FunEntryBlock</a>;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keyword">const</span> <span class="keyword">virtual</span> std::string <a class="code" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> };</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitBlockNode.html"> 308</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1FunExitBlockNode.html">FunExitBlockNode</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitBlockNode.html#a0d18e92e60f6060ee188d4e4947f8097"> 312</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1FunExitBlockNode.html#a0d18e92e60f6060ee188d4e4947f8097">fun</a>;</div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitBlockNode.html#ae759d153ed7d3296b67574c888b99e4f"> 313</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *<a class="code" href="classSVF_1_1FunExitBlockNode.html#ae759d153ed7d3296b67574c888b99e4f">formalRet</a>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <a class="code" href="classSVF_1_1FunExitBlockNode.html">FunExitBlockNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* f);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitBlockNode.html#a1463cde3f7e218c4bef996b2e1e9aef4"> 318</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1FunExitBlockNode.html#a1463cde3f7e218c4bef996b2e1e9aef4">getFun</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">fun</a>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00324"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitBlockNode.html#af1f343711d10adacf264f1aaebf44d54"> 324</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *<a class="code" href="classSVF_1_1FunExitBlockNode.html#af1f343711d10adacf264f1aaebf44d54">getFormalRet</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">return</span> formalRet;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitBlockNode.html#ae1499a3ea7d5bb90dccd5d04a8b97dfc"> 330</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FunExitBlockNode.html#ae1499a3ea7d5bb90dccd5d04a8b97dfc">addFormalRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *fr)</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  formalRet = fr;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div><div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitBlockNode.html#a5fdc1edafbd26a57c1c563f8df439cfc"> 337</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FunExitBlockNode.html#a5fdc1edafbd26a57c1c563f8df439cfc">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryBlockNode.html">FunEntryBlockNode</a> *)</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">return</span> <span class="keyword">true</span>;</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> </div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitBlockNode.html#abeae6aae021670c80206c1f5a82ccd97"> 342</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FunExitBlockNode.html#abeae6aae021670c80206c1f5a82ccd97">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376acf25925678f7fa5fba01766bd06a1fb8">FunExitBlock</a>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitBlockNode.html#aceef01ea3cc4d85385705df32b6f67da"> 347</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FunExitBlockNode.html#aceef01ea3cc4d85385705df32b6f67da">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a> *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"> 349</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376acf25925678f7fa5fba01766bd06a1fb8">FunExitBlock</a>;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"><a class="line" href="classSVF_1_1FunExitBlockNode.html#a6cda85f67241db56f0a8ca4830c574f0"> 352</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FunExitBlockNode.html#a6cda85f67241db56f0a8ca4830c574f0">classof</a>(<span class="keyword">const</span> GenericICFGNodeTy *node)</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376acf25925678f7fa5fba01766bd06a1fb8">FunExitBlock</a>;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> </div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> };</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html"> 364</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a></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> </div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a3e0ea980b787636a9aa79c3b3738df0c"> 368</a></span>  <span class="keyword">typedef</span> std::vector<const SVFVar *> <a class="code" href="classSVF_1_1CallBlockNode.html#a3e0ea980b787636a9aa79c3b3738df0c">ActualParmVFGNodeVec</a>;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a4236d60c129adc0d959bed14dce71053"> 370</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* <a class="code" href="classSVF_1_1CallBlockNode.html#a4236d60c129adc0d959bed14dce71053">cs</a>;</div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a3d0f509f08dd017efecc949f0a98e1af"> 371</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a>* <a class="code" href="classSVF_1_1CallBlockNode.html#a3d0f509f08dd017efecc949f0a98e1af">ret</a>;</div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#adf65fcbc277c4c7a259cc015aa9b3f32"> 372</a></span>  ActualParmVFGNodeVec <a class="code" href="classSVF_1_1CallBlockNode.html#adf65fcbc277c4c7a259cc015aa9b3f32">APNodes</a>;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a4f5af7780f4290ae69724fd3050dab1a"> 374</a></span>  <a class="code" href="classSVF_1_1CallBlockNode.html#a4f5af7780f4290ae69724fd3050dab1a">CallBlockNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* c) : <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a>(id, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a58501ce2adf17a3da23a98f363ed9800">FunCallBlock</a>), cs(c), ret(nullptr)</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <a class="code" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">fun</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(cs->getFunction());</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <a class="code" href="classSVF_1_1ICFGNode.html#ad3c5171fed4e28cfd35c1a6fb9697005">bb</a> = cs->getParent();</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="l00381"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f"> 381</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* <a class="code" href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">getCallSite</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">return</span> cs;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#ad48f8aa952074fba88c54d6e9fad4a17"> 387</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a>* <a class="code" href="classSVF_1_1CallBlockNode.html#ad48f8aa952074fba88c54d6e9fad4a17">getRetBlockNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(ret && <span class="stringliteral">"RetBlockNode not set?"</span>);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">return</span> ret;</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> </div><div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a8ad5091c13a0dc2f6518a0e3340dcb05"> 394</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CallBlockNode.html#a8ad5091c13a0dc2f6518a0e3340dcb05">setRetBlockNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a>* r)</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  ret = r;</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> </div><div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a5bab98a0b8cf0a804d53abd994e922c0"> 400</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="classSVF_1_1CallBlockNode.html#a5bab98a0b8cf0a804d53abd994e922c0">getCaller</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(cs->getFunction());</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> </div><div class="line"><a name="l00406"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#aa541f0ab3c35110d5a00ae8bb4af58bc"> 406</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* <a class="code" href="classSVF_1_1CallBlockNode.html#aa541f0ab3c35110d5a00ae8bb4af58bc">getParent</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">return</span> cs->getParent();</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> </div><div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a285c517dfd7fee5467606663a0fdd035"> 412</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallBlockNode.html#a285c517dfd7fee5467606663a0fdd035">isIndirectCall</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span> == <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(cs);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  }</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> </div><div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a20ed03cf52e284860210e4b53766b45f"> 418</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> ActualParmVFGNodeVec &<a class="code" href="classSVF_1_1CallBlockNode.html#a20ed03cf52e284860210e4b53766b45f">getActualParms</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">return</span> APNodes;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a6d819186e239e68c117af16ed405da84"> 424</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CallBlockNode.html#a6d819186e239e68c117af16ed405da84">addActualParms</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *ap)</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  APNodes.push_back(ap);</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"> 430</span> </div><div class="line"><a name="l00431"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a1c688ff81489957e775cb2463c59d1ef"> 431</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallBlockNode.html#a1c688ff81489957e775cb2463c59d1ef">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a> *)</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>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a43a5f89377aef18e7e6d31731b8bf11d"> 436</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallBlockNode.html#a43a5f89377aef18e7e6d31731b8bf11d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a58501ce2adf17a3da23a98f363ed9800">FunCallBlock</a>;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  }</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> </div><div class="line"><a name="l00441"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a8ac74fdb13bee140b0568f40c3a94b2a"> 441</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallBlockNode.html#a8ac74fdb13bee140b0568f40c3a94b2a">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a> *node)</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a58501ce2adf17a3da23a98f363ed9800">FunCallBlock</a>;</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="l00446"></a><span class="lineno"><a class="line" href="classSVF_1_1CallBlockNode.html#a1fab44c7854d6bc5fe0ab9ad236b64c3"> 446</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CallBlockNode.html#a1fab44c7854d6bc5fe0ab9ad236b64c3">classof</a>(<span class="keyword">const</span> GenericICFGNodeTy *node)</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376a58501ce2adf17a3da23a98f363ed9800">FunCallBlock</a>;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> };</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> </div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> </div><div class="line"><a name="l00459"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html"> 459</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a></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> </div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00463"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#a9ed7b40bb07977642484362673e7ba2d"> 463</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* <a class="code" href="classSVF_1_1RetBlockNode.html#a9ed7b40bb07977642484362673e7ba2d">cs</a>;</div><div class="line"><a name="l00464"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#a74ea1e2e7765016e0a07720d9c2e0a81"> 464</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *<a class="code" href="classSVF_1_1RetBlockNode.html#a74ea1e2e7765016e0a07720d9c2e0a81">actualRet</a>;</div><div class="line"><a name="l00465"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#aa135efaadc44746c585cb295b8b2bf77"> 465</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* <a class="code" href="classSVF_1_1RetBlockNode.html#aa135efaadc44746c585cb295b8b2bf77">callBlockNode</a>;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00467"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#a7a35666782fd9fff6954ad6b5fd284ee"> 467</a></span>  <a class="code" href="classSVF_1_1RetBlockNode.html#a7a35666782fd9fff6954ad6b5fd284ee">RetBlockNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* c, <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cb) :</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a>(id, <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac731cdb9d1269f6c25e1c80159154921">FunRetBlock</a>), cs(c), actualRet(nullptr), callBlockNode(cb)</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  {</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <a class="code" href="classSVF_1_1ICFGNode.html#a03587dbd558d8fffe25307b42e3195be">fun</a> = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(cs->getFunction());</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <a class="code" href="classSVF_1_1ICFGNode.html#ad3c5171fed4e28cfd35c1a6fb9697005">bb</a> = cs->getParent();</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00475"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#a436cd30be9fba449fee6bc6dcc18bb18"> 475</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* <a class="code" href="classSVF_1_1RetBlockNode.html#a436cd30be9fba449fee6bc6dcc18bb18">getCallSite</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">return</span> cs;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> </div><div class="line"><a name="l00480"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#a6f47c3169f64fb7637b544ec1faf6f31"> 480</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* <a class="code" href="classSVF_1_1RetBlockNode.html#a6f47c3169f64fb7637b544ec1faf6f31">getCallBlockNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">return</span> callBlockNode;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  }</div><div class="line"><a name="l00485"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#aa9ecd6854337dfa67a828d2416f3813f"> 485</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *<a class="code" href="classSVF_1_1RetBlockNode.html#aa9ecd6854337dfa67a828d2416f3813f">getActualRet</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">return</span> actualRet;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> </div><div class="line"><a name="l00491"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#ad2cd6f6589ce5464d6fbcac49f115714"> 491</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1RetBlockNode.html#ad2cd6f6589ce5464d6fbcac49f115714">addActualRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *ar)</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  actualRet = ar;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  }</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> </div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00498"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#abd3a2b54fdb7e1339f765b3e5ab86947"> 498</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetBlockNode.html#abd3a2b54fdb7e1339f765b3e5ab86947">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a> *)</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div><div class="line"><a name="l00503"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#a06433b4ec10e147df00c1e36990cdaab"> 503</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetBlockNode.html#a06433b4ec10e147df00c1e36990cdaab">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1InterBlockNode.html">InterBlockNode</a> *node)</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac731cdb9d1269f6c25e1c80159154921">FunRetBlock</a>;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  }</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> </div><div class="line"><a name="l00508"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#aed4047d93fee5e00c58e5bff0cbc06e0"> 508</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetBlockNode.html#aed4047d93fee5e00c58e5bff0cbc06e0">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac731cdb9d1269f6c25e1c80159154921">FunRetBlock</a>;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  }</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div><div class="line"><a name="l00513"></a><span class="lineno"><a class="line" href="classSVF_1_1RetBlockNode.html#a383ea0e36372dad2a0603428a8c26f7d"> 513</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1RetBlockNode.html#a383ea0e36372dad2a0603428a8c26f7d">classof</a>(<span class="keyword">const</span> GenericICFGNodeTy *node)</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">return</span> node-><a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() == <a class="code" href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac731cdb9d1269f6c25e1c80159154921">FunRetBlock</a>;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  }</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> </div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1ICFGNode.html#af1b6fd9ea200ab0ff51d48a4872c921a">toString</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> };</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> </div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="preprocessor">#endif </span><span class="comment">/* ICFGNode_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="namespaceSVF_html_afc2824871ad4eb9b871c35ae28494cd3"><div class="ttname"><a href="namespaceSVF.html#afc2824871ad4eb9b871c35ae28494cd3">SVF::GenericICFGNodeTy</a></div><div class="ttdeci">GenericNode< ICFGNode, ICFGEdge > GenericICFGNodeTy</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00046">ICFGNode.h:46</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1RetBlockNode_html_aa135efaadc44746c585cb295b8b2bf77"><div class="ttname"><a href="classSVF_1_1RetBlockNode.html#aa135efaadc44746c585cb295b8b2bf77">SVF::RetBlockNode::callBlockNode</a></div><div class="ttdeci">const CallBlockNode * callBlockNode</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00465">ICFGNode.h:465</a></div></div>
|
|
71
71
|
<div class="ttc" id="classSVF_1_1FunExitBlockNode_html_ae1499a3ea7d5bb90dccd5d04a8b97dfc"><div class="ttname"><a href="classSVF_1_1FunExitBlockNode.html#ae1499a3ea7d5bb90dccd5d04a8b97dfc">SVF::FunExitBlockNode::addFormalRet</a></div><div class="ttdeci">void addFormalRet(const SVFVar *fr)</div><div class="ttdoc">Add actual return parameter. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00330">ICFGNode.h:330</a></div></div>
|
|
72
72
|
<div class="ttc" id="classSVF_1_1IntraBlockNode_html_aab3d8287388f8d4b5e22e8496bb37f8d"><div class="ttname"><a href="classSVF_1_1IntraBlockNode.html#aab3d8287388f8d4b5e22e8496bb37f8d">SVF::IntraBlockNode::classof</a></div><div class="ttdeci">static bool classof(const ICFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00199">ICFGNode.h:199</a></div></div>
|
|
@@ -79,6 +79,7 @@ $(function() {
|
|
|
79
79
|
<div class="ttc" id="namespaceSVF_html_a424cc053c29ad7303699c529d1a2cc71"><div class="ttname"><a href="namespaceSVF.html#a424cc053c29ad7303699c529d1a2cc71">SVF::raw_ostream</a></div><div class="ttdeci">llvm::raw_ostream raw_ostream</div><div class="ttdoc">LLVM outputs. </div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00099">BasicTypes.h:99</a></div></div>
|
|
80
80
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
|
|
81
81
|
<div class="ttc" id="classSVF_1_1ICFGNode_html_a19844bff2f6a0e90217c7a2ce9bb5184"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a19844bff2f6a0e90217c7a2ce9bb5184">SVF::ICFGNode::operator<<</a></div><div class="ttdeci">friend raw_ostream & operator<<(raw_ostream &o, const ICFGNode &node)</div><div class="ttdoc">Overloading operator << for dumping ICFG node ID. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00094">ICFGNode.h:94</a></div></div>
|
|
82
|
+
<div class="ttc" id="classSVF_1_1ICFGNode_html_a8a133398c691ab3639ceefbc57cd33be"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a8a133398c691ab3639ceefbc57cd33be">SVF::ICFGNode::addSVFStmt</a></div><div class="ttdeci">void addSVFStmt(const SVFStmt *edge)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00116">ICFGNode.h:116</a></div></div>
|
|
82
83
|
<div class="ttc" id="classSVF_1_1FunExitBlockNode_html_a5fdc1edafbd26a57c1c563f8df439cfc"><div class="ttname"><a href="classSVF_1_1FunExitBlockNode.html#a5fdc1edafbd26a57c1c563f8df439cfc">SVF::FunExitBlockNode::classof</a></div><div class="ttdeci">static bool classof(const FunEntryBlockNode *)</div><div class="ttdoc">Methods for support type inquiry through isa, cast, and dyn_cast: </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00337">ICFGNode.h:337</a></div></div>
|
|
83
84
|
<div class="ttc" id="classSVF_1_1FunExitBlockNode_html_af1f343711d10adacf264f1aaebf44d54"><div class="ttname"><a href="classSVF_1_1FunExitBlockNode.html#af1f343711d10adacf264f1aaebf44d54">SVF::FunExitBlockNode::getFormalRet</a></div><div class="ttdeci">const SVFVar * getFormalRet() const</div><div class="ttdoc">Return actual return parameter. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00324">ICFGNode.h:324</a></div></div>
|
|
84
85
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
@@ -140,7 +141,6 @@ $(function() {
|
|
|
140
141
|
<div class="ttc" id="classSVF_1_1FunExitBlockNode_html_ae759d153ed7d3296b67574c888b99e4f"><div class="ttname"><a href="classSVF_1_1FunExitBlockNode.html#ae759d153ed7d3296b67574c888b99e4f">SVF::FunExitBlockNode::formalRet</a></div><div class="ttdeci">const SVFVar * formalRet</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00313">ICFGNode.h:313</a></div></div>
|
|
141
142
|
<div class="ttc" id="classSVF_1_1RetBlockNode_html_a7a35666782fd9fff6954ad6b5fd284ee"><div class="ttname"><a href="classSVF_1_1RetBlockNode.html#a7a35666782fd9fff6954ad6b5fd284ee">SVF::RetBlockNode::RetBlockNode</a></div><div class="ttdeci">RetBlockNode(NodeID id, const Instruction *c, CallBlockNode *cb)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00467">ICFGNode.h:467</a></div></div>
|
|
142
143
|
<div class="ttc" id="classSVF_1_1IntraBlockNode_html"><div class="ttname"><a href="classSVF_1_1IntraBlockNode.html">SVF::IntraBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00175">ICFGNode.h:175</a></div></div>
|
|
143
|
-
<div class="ttc" id="classSVF_1_1ICFGNode_html_a23707d08fd5cfcb5db72ff4ef0b864ff"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a23707d08fd5cfcb5db72ff4ef0b864ff">SVF::ICFGNode::getPAGEdges</a></div><div class="ttdeci">const SVFStmtList & getPAGEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00121">ICFGNode.h:121</a></div></div>
|
|
144
144
|
<div class="ttc" id="classSVF_1_1FunEntryBlockNode_html_ae6ebc073885c5d47f685c61097dadf20"><div class="ttname"><a href="classSVF_1_1FunEntryBlockNode.html#ae6ebc073885c5d47f685c61097dadf20">SVF::FunEntryBlockNode::addFormalParms</a></div><div class="ttdeci">void addFormalParms(const SVFVar *fp)</div><div class="ttdoc">Add formal parameters. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00274">ICFGNode.h:274</a></div></div>
|
|
145
145
|
<div class="ttc" id="classSVF_1_1ICFGNode_html_a74f598c1c86b023680bb2685aa8ab376ad2fb9517b64addcced67efe9cc83b994"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ad2fb9517b64addcced67efe9cc83b994">SVF::ICFGNode::FunEntryBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00062">ICFGNode.h:62</a></div></div>
|
|
146
146
|
<div class="ttc" id="classSVF_1_1CallBlockNode_html_a4f5af7780f4290ae69724fd3050dab1a"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html#a4f5af7780f4290ae69724fd3050dab1a">SVF::CallBlockNode::CallBlockNode</a></div><div class="ttdeci">CallBlockNode(NodeID id, const Instruction *c)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00374">ICFGNode.h:374</a></div></div>
|
|
@@ -168,12 +168,12 @@ $(function() {
|
|
|
168
168
|
<div class="ttc" id="classSVF_1_1CallBlockNode_html_a3e0ea980b787636a9aa79c3b3738df0c"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html#a3e0ea980b787636a9aa79c3b3738df0c">SVF::CallBlockNode::ActualParmVFGNodeVec</a></div><div class="ttdeci">std::vector< const SVFVar * > ActualParmVFGNodeVec</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00368">ICFGNode.h:368</a></div></div>
|
|
169
169
|
<div class="ttc" id="classSVF_1_1IntraBlockNode_html_a498e59de4ef7bc2ec8f76de43608a778"><div class="ttname"><a href="classSVF_1_1IntraBlockNode.html#a498e59de4ef7bc2ec8f76de43608a778">SVF::IntraBlockNode::IntraBlockNode</a></div><div class="ttdeci">IntraBlockNode(NodeID id, const Instruction *i)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00181">ICFGNode.h:181</a></div></div>
|
|
170
170
|
<div class="ttc" id="classSVF_1_1FunEntryBlockNode_html_ac0f34c048695a1ed822bc7fec0dfe028"><div class="ttname"><a href="classSVF_1_1FunEntryBlockNode.html#ac0f34c048695a1ed822bc7fec0dfe028">SVF::FunEntryBlockNode::getFun</a></div><div class="ttdeci">const SVFFunction * getFun() const</div><div class="ttdoc">Return function. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00262">ICFGNode.h:262</a></div></div>
|
|
171
|
-
<div class="ttc" id="classSVF_1_1ICFGNode_html_a820364ef4158270478e9c09e11b6c2ea"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a820364ef4158270478e9c09e11b6c2ea">SVF::ICFGNode::addPAGEdge</a></div><div class="ttdeci">void addPAGEdge(const SVFStmt *edge)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00116">ICFGNode.h:116</a></div></div>
|
|
172
171
|
<div class="ttc" id="classSVF_1_1FunEntryBlockNode_html_a2206a196a4bfcc4475c1a0b48e16b180"><div class="ttname"><a href="classSVF_1_1FunEntryBlockNode.html#a2206a196a4bfcc4475c1a0b48e16b180">SVF::FunEntryBlockNode::getFormalParms</a></div><div class="ttdeci">const FormalParmNodeVec & getFormalParms() const</div><div class="ttdoc">Return the set of formal parameters. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00268">ICFGNode.h:268</a></div></div>
|
|
173
172
|
<div class="ttc" id="classSVF_1_1CallBlockNode_html"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html">SVF::CallBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00364">ICFGNode.h:364</a></div></div>
|
|
174
173
|
<div class="ttc" id="classSVF_1_1RetBlockNode_html_a9ed7b40bb07977642484362673e7ba2d"><div class="ttname"><a href="classSVF_1_1RetBlockNode.html#a9ed7b40bb07977642484362673e7ba2d">SVF::RetBlockNode::cs</a></div><div class="ttdeci">const Instruction * cs</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00463">ICFGNode.h:463</a></div></div>
|
|
175
174
|
<div class="ttc" id="classSVF_1_1RetBlockNode_html_aa9ecd6854337dfa67a828d2416f3813f"><div class="ttname"><a href="classSVF_1_1RetBlockNode.html#aa9ecd6854337dfa67a828d2416f3813f">SVF::RetBlockNode::getActualRet</a></div><div class="ttdeci">const SVFVar * getActualRet() const</div><div class="ttdoc">Return actual return parameter. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00485">ICFGNode.h:485</a></div></div>
|
|
176
175
|
<div class="ttc" id="classSVF_1_1ICFGNode_html_a74f598c1c86b023680bb2685aa8ab376ac93cf90864e69a21cbaefccbd48b8648"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a74f598c1c86b023680bb2685aa8ab376ac93cf90864e69a21cbaefccbd48b8648">SVF::ICFGNode::GlobalBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00062">ICFGNode.h:62</a></div></div>
|
|
176
|
+
<div class="ttc" id="classSVF_1_1ICFGNode_html_a6c68f52dd90728073fb79141df9b0661"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">SVF::ICFGNode::getSVFStmts</a></div><div class="ttdeci">const SVFStmtList & getSVFStmts() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00121">ICFGNode.h:121</a></div></div>
|
|
177
177
|
<div class="ttc" id="classSVF_1_1ICFGNode_html_ab1a4b4a8dc600ca375d9f5adbd2a5b59"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#ab1a4b4a8dc600ca375d9f5adbd2a5b59">SVF::ICFGNode::CallPESet</a></div><div class="ttdeci">Set< const CallPE * > CallPESet</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00067">ICFGNode.h:67</a></div></div>
|
|
178
178
|
<div class="ttc" id="classSVF_1_1CallBlockNode_html_a1fab44c7854d6bc5fe0ab9ad236b64c3"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html#a1fab44c7854d6bc5fe0ab9ad236b64c3">SVF::CallBlockNode::classof</a></div><div class="ttdeci">static bool classof(const GenericICFGNodeTy *node)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00446">ICFGNode.h:446</a></div></div>
|
|
179
179
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a547b3bc62de65b9dbfc6dee55c063dd7"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">const SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00112">LLVMModule.h:112</a></div></div>
|