svf-tools 1.0.335 → 1.0.336
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 +4 -4
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +5 -4
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +13 -9
- package/SVF-doxygen/html/html/functions_a.html +4 -4
- package/SVF-doxygen/html/html/functions_func_g.html +1 -1
- package/SVF-doxygen/html/html/functions_g.html +1 -1
- package/SVF-doxygen/html/html/functions_type.html +2 -2
- package/SVF-doxygen/html/html/functions_v.html +6 -6
- package/SVF-doxygen/html/html/functions_vars_a.html +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +2 -2
- package/SVF-doxygen/html/html/search/all_16.js +3 -3
- package/SVF-doxygen/html/html/search/all_7.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_0.js +1 -1
- package/SVF-doxygen/html/html/search/variables_1.js +1 -1
- package/include/Graphs/ICFGNode.h +3 -3
- package/lib/SVF-FE/SymbolTableBuilder.cpp +16 -3
- package/package.json +1 -1
|
@@ -66,7 +66,8 @@ $(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#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>
|
|
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#a058711bcf2ae9bc15106c8d99ce02c1c"> 368</a></span>  <span class="keyword">typedef</span> std::vector<const SVFVar *> <a class="code" href="classSVF_1_1CallBlockNode.html#a058711bcf2ae9bc15106c8d99ce02c1c">ActualParmNodeVec</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#a1caa9664587eb96c575af2f293b4cd1e"> 372</a></span>  ActualParmNodeVec <a class="code" href="classSVF_1_1CallBlockNode.html#a1caa9664587eb96c575af2f293b4cd1e">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#abfc30a2fc6e996c2e1b0902abc7c813b"> 418</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> ActualParmNodeVec &<a class="code" href="classSVF_1_1CallBlockNode.html#abfc30a2fc6e996c2e1b0902abc7c813b">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
|
+
<div class="ttc" id="classSVF_1_1CallBlockNode_html_abfc30a2fc6e996c2e1b0902abc7c813b"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html#abfc30a2fc6e996c2e1b0902abc7c813b">SVF::CallBlockNode::getActualParms</a></div><div class="ttdeci">const ActualParmNodeVec & getActualParms() const</div><div class="ttdoc">Return the set of actual parameters. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00418">ICFGNode.h:418</a></div></div>
|
|
70
71
|
<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
72
|
<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
73
|
<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 +80,7 @@ $(function() {
|
|
|
79
80
|
<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
81
|
<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
82
|
<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>
|
|
83
|
+
<div class="ttc" id="classSVF_1_1CallBlockNode_html_a058711bcf2ae9bc15106c8d99ce02c1c"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html#a058711bcf2ae9bc15106c8d99ce02c1c">SVF::CallBlockNode::ActualParmNodeVec</a></div><div class="ttdeci">std::vector< const SVFVar * > ActualParmNodeVec</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00368">ICFGNode.h:368</a></div></div>
|
|
82
84
|
<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>
|
|
83
85
|
<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>
|
|
84
86
|
<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>
|
|
@@ -145,7 +147,6 @@ $(function() {
|
|
|
145
147
|
<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
148
|
<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>
|
|
147
149
|
<div class="ttc" id="classSVF_1_1InterBlockNode_html_a02b79c6ff51262d4c92a69597a8b46db"><div class="ttname"><a href="classSVF_1_1InterBlockNode.html#a02b79c6ff51262d4c92a69597a8b46db">SVF::InterBlockNode::InterBlockNode</a></div><div class="ttdeci">InterBlockNode(NodeID id, ICFGNodeK k)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00218">ICFGNode.h:218</a></div></div>
|
|
148
|
-
<div class="ttc" id="classSVF_1_1CallBlockNode_html_a20ed03cf52e284860210e4b53766b45f"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html#a20ed03cf52e284860210e4b53766b45f">SVF::CallBlockNode::getActualParms</a></div><div class="ttdeci">const ActualParmVFGNodeVec & getActualParms() const</div><div class="ttdoc">Return the set of actual parameters. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00418">ICFGNode.h:418</a></div></div>
|
|
149
150
|
<div class="ttc" id="classSVF_1_1FunEntryBlockNode_html_a7a3c08df6a65f82ecda01d3f547aa158"><div class="ttname"><a href="classSVF_1_1FunEntryBlockNode.html#a7a3c08df6a65f82ecda01d3f547aa158">SVF::FunEntryBlockNode::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#l00281">ICFGNode.h:281</a></div></div>
|
|
150
151
|
<div class="ttc" id="classSVF_1_1CallBlockNode_html_a285c517dfd7fee5467606663a0fdd035"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html#a285c517dfd7fee5467606663a0fdd035">SVF::CallBlockNode::isIndirectCall</a></div><div class="ttdeci">bool isIndirectCall() const</div><div class="ttdoc">Return true if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00412">ICFGNode.h:412</a></div></div>
|
|
151
152
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00069">LLVMModule.h:69</a></div></div>
|
|
@@ -157,7 +158,6 @@ $(function() {
|
|
|
157
158
|
<div class="ttc" id="classSVF_1_1InterBlockNode_html_a4ab1005f23a3f3a0e2e275a9be183553"><div class="ttname"><a href="classSVF_1_1InterBlockNode.html#a4ab1005f23a3f3a0e2e275a9be183553">SVF::InterBlockNode::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#l00237">ICFGNode.h:237</a></div></div>
|
|
158
159
|
<div class="ttc" id="classSVF_1_1FunExitBlockNode_html_a1463cde3f7e218c4bef996b2e1e9aef4"><div class="ttname"><a href="classSVF_1_1FunExitBlockNode.html#a1463cde3f7e218c4bef996b2e1e9aef4">SVF::FunExitBlockNode::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#l00318">ICFGNode.h:318</a></div></div>
|
|
159
160
|
<div class="ttc" id="classSVF_1_1CallBlockNode_html_a4236d60c129adc0d959bed14dce71053"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html#a4236d60c129adc0d959bed14dce71053">SVF::CallBlockNode::cs</a></div><div class="ttdeci">const Instruction * cs</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00370">ICFGNode.h:370</a></div></div>
|
|
160
|
-
<div class="ttc" id="classSVF_1_1CallBlockNode_html_adf65fcbc277c4c7a259cc015aa9b3f32"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html#adf65fcbc277c4c7a259cc015aa9b3f32">SVF::CallBlockNode::APNodes</a></div><div class="ttdeci">ActualParmVFGNodeVec APNodes</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00372">ICFGNode.h:372</a></div></div>
|
|
161
161
|
<div class="ttc" id="classSVF_1_1RetBlockNode_html_a74ea1e2e7765016e0a07720d9c2e0a81"><div class="ttname"><a href="classSVF_1_1RetBlockNode.html#a74ea1e2e7765016e0a07720d9c2e0a81">SVF::RetBlockNode::actualRet</a></div><div class="ttdeci">const SVFVar * actualRet</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00464">ICFGNode.h:464</a></div></div>
|
|
162
162
|
<div class="ttc" id="classSVF_1_1CallBlockNode_html_a8ad5091c13a0dc2f6518a0e3340dcb05"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html#a8ad5091c13a0dc2f6518a0e3340dcb05">SVF::CallBlockNode::setRetBlockNode</a></div><div class="ttdeci">void setRetBlockNode(const RetBlockNode *r)</div><div class="ttdoc">Return callsite. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00394">ICFGNode.h:394</a></div></div>
|
|
163
163
|
<div class="ttc" id="classSVF_1_1RetBlockNode_html_a383ea0e36372dad2a0603428a8c26f7d"><div class="ttname"><a href="classSVF_1_1RetBlockNode.html#a383ea0e36372dad2a0603428a8c26f7d">SVF::RetBlockNode::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#l00513">ICFGNode.h:513</a></div></div>
|
|
@@ -165,7 +165,6 @@ $(function() {
|
|
|
165
165
|
<div class="ttc" id="classSVF_1_1ICFGNode_html_a57f9be13188a6cd53b30489f791e40d3"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a57f9be13188a6cd53b30489f791e40d3">SVF::ICFGNode::VFGNodes</a></div><div class="ttdeci">VFGNodeList VFGNodes</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00134">ICFGNode.h:134</a></div></div>
|
|
166
166
|
<div class="ttc" id="classSVF_1_1InterBlockNode_html_a2a0f22695ebcceefe2c57a4ba9255e35"><div class="ttname"><a href="classSVF_1_1InterBlockNode.html#a2a0f22695ebcceefe2c57a4ba9255e35">SVF::InterBlockNode::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#l00229">ICFGNode.h:229</a></div></div>
|
|
167
167
|
<div class="ttc" id="classSVF_1_1GlobalBlockNode_html_a42b0e52fb503c704bec4b1506991ed75"><div class="ttname"><a href="classSVF_1_1GlobalBlockNode.html#a42b0e52fb503c704bec4b1506991ed75">SVF::GlobalBlockNode::classof</a></div><div class="ttdeci">static bool classof(const GlobalBlockNode *)</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#l00153">ICFGNode.h:153</a></div></div>
|
|
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
168
|
<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
169
|
<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
170
|
<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>
|
|
@@ -174,6 +173,7 @@ $(function() {
|
|
|
174
173
|
<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>
|
|
175
174
|
<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
175
|
<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>
|
|
176
|
+
<div class="ttc" id="classSVF_1_1CallBlockNode_html_a1caa9664587eb96c575af2f293b4cd1e"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html#a1caa9664587eb96c575af2f293b4cd1e">SVF::CallBlockNode::APNodes</a></div><div class="ttdeci">ActualParmNodeVec APNodes</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00372">ICFGNode.h:372</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>
|