svf-tools 1.0.803 → 1.0.805

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.
@@ -102,174 +102,190 @@ $(function() {
102
102
  <div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div>
103
103
  <div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;{</div>
104
104
  <div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; </div>
105
- <div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classSVF_1_1CFBasicBlockGBuilder.html#a43c0cba051306acc6440f60165b835e6"> 34</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a43c0cba051306acc6440f60165b835e6">CFBasicBlockGBuilder::initCFBasicBlockGNodes</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *icfg,</div>
106
- <div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt;<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *, std::vector&lt;CFBasicBlockNode *&gt;&gt; &amp;bbToNodes)</div>
107
- <div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div>
108
- <div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;node: *icfg)</div>
109
- <div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div>
110
- <div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a> *pNode;</div>
111
- <div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *bb = node.second-&gt;getBB())</div>
112
- <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div>
113
- <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *callNode = SVFUtil::dyn_cast&lt;CallICFGNode&gt;(node.second))</div>
114
- <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div>
115
- <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; pNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>({callNode});</div>
116
- <div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; bbToNodes[bb].push_back(pNode);</div>
117
- <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-&gt;<a class="code" href="classSVF_1_1CFBasicBlockGraph.html#a4a7a6e00d13b4099c34a3015b4f06a67">addCFBBNode</a>(pNode);</div>
118
- <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; </div>
119
- <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">auto</span> *retNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>({callNode-&gt;getRetICFGNode()});</div>
120
- <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; bbToNodes[bb].push_back(retNode);</div>
121
- <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-&gt;<a class="code" href="classSVF_1_1CFBasicBlockGraph.html#a4a7a6e00d13b4099c34a3015b4f06a67">addCFBBNode</a>(retNode);</div>
122
- <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; </div>
123
- <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div>
124
- <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!SVFUtil::isa&lt;RetICFGNode&gt;(node.second))</div>
125
- <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div>
126
- <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">if</span> (bbToNodes.find(bb) == bbToNodes.end())</div>
127
- <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div>
128
- <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; pNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>({node.second});</div>
129
- <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; bbToNodes[node.second-&gt;getBB()] = {pNode};</div>
130
- <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-&gt;<a class="code" href="classSVF_1_1CFBasicBlockGraph.html#a4a7a6e00d13b4099c34a3015b4f06a67">addCFBBNode</a>(pNode);</div>
131
- <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div>
132
- <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">else</span></div>
133
- <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div>
134
- <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; pNode = bbToNodes[node.second-&gt;getBB()].back();</div>
135
- <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;RetICFGNode&gt;(pNode-&gt;<a class="code" href="classSVF_1_1CFBasicBlockNode.html#afdad57a83c392a8b14b838ecb58f9ff7">getICFGNodes</a>()[0]))</div>
136
- <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; {</div>
137
- <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; pNode-&gt;<a class="code" href="classSVF_1_1CFBasicBlockNode.html#a5374f4567cee38325f61940f4edbb142">addNode</a>(node.second);</div>
138
- <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div>
139
- <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">else</span></div>
140
- <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div>
141
- <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; pNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>({node.second});</div>
142
- <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; bbToNodes[node.second-&gt;getBB()].push_back(pNode);</div>
143
- <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-&gt;<a class="code" href="classSVF_1_1CFBasicBlockGraph.html#a4a7a6e00d13b4099c34a3015b4f06a67">addCFBBNode</a>(pNode);</div>
144
- <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div>
145
- <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div>
146
- <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div>
147
- <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div>
148
- <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div>
149
- <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;}</div>
150
- <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; </div>
151
- <div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1CFBasicBlockGBuilder.html#a2c9f8c120522e31124364f485e873608"> 80</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a2c9f8c120522e31124364f485e873608">CFBasicBlockGBuilder::addInterBBEdge</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *icfg,</div>
152
- <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt;<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *, std::vector&lt;CFBasicBlockNode *&gt;&gt; &amp;bbToNodes)</div>
153
- <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;{</div>
154
- <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="comment">// connect inter-BB BBNodes</span></div>
155
- <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;node: *icfg)</div>
156
- <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div>
157
- <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;succ: node.second-&gt;getOutEdges())</div>
158
- <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div>
159
- <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *node_fun = node.second-&gt;getFun();</div>
160
- <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *succ_fun = succ-&gt;getDstNode()-&gt;getFun();</div>
161
- <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *node_bb = node.second-&gt;getBB();</div>
162
- <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *succ_bb = succ-&gt;getDstNode()-&gt;getBB();</div>
163
- <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">if</span> (node_fun == succ_fun)</div>
164
- <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div>
165
- <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span> (node_bb != succ_bb)</div>
166
- <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div>
167
- <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a> *pEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a>(bbToNodes[node_bb].back(),</div>
168
- <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; bbToNodes[succ_bb].front(), succ);</div>
169
- <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-&gt;<a class="code" href="classSVF_1_1CFBasicBlockGraph.html#acd6a4b291c9aab8abdc466f985975d0d">addCFBBEdge</a>(pEdge);</div>
170
- <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div>
171
- <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div>
172
- <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div>
173
- <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div>
174
- <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;}</div>
175
- <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
176
- <div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classSVF_1_1CFBasicBlockGBuilder.html#ae6c8497f1cd2e3ca63b899ea11757b31"> 105</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#ae6c8497f1cd2e3ca63b899ea11757b31">CFBasicBlockGBuilder::addIntraBBEdge</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *icfg,</div>
177
- <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt;<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *, std::vector&lt;CFBasicBlockNode *&gt;&gt; &amp;bbToNodes)</div>
178
- <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;{</div>
179
- <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">// connect intra-BB BBNodes</span></div>
180
- <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;bbNodes: bbToNodes)</div>
181
- <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div>
182
- <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; bbNodes.second.size() - 1; ++i)</div>
183
- <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div>
184
- <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> *icfgEdge = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5dd4ac55123501c47c628adcf27e2475">getICFGEdge</a>(</div>
185
- <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *<span class="keyword">&gt;</span>(bbNodes.second[i]-&gt;getICFGNodes().back()),</div>
186
- <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *<span class="keyword">&gt;</span>(bbNodes.second[i + 1]-&gt;getICFGNodes().front()),</div>
187
- <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429acb8fba7c61b08ec952f1b65643d7a84b">ICFGEdge::IntraCF</a>))</div>
188
- <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div>
189
- <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a> *pEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a>(bbNodes.second[i], bbNodes.second[i + 1], icfgEdge);</div>
190
- <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-&gt;<a class="code" href="classSVF_1_1CFBasicBlockGraph.html#acd6a4b291c9aab8abdc466f985975d0d">addCFBBEdge</a>(pEdge);</div>
191
- <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div>
192
- <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">else</span></div>
193
- <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div>
194
- <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">// no intra-procedural edge, maybe ext api</span></div>
195
- <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div>
196
- <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div>
197
- <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div>
198
- <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;}</div>
199
- <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; </div>
200
- <div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classSVF_1_1CFBasicBlockGBuilder.html#a2a72cd05458304eaae145532448cf913"> 129</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a2a72cd05458304eaae145532448cf913">CFBasicBlockGBuilder::addInterProceduralEdge</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *icfg,</div>
201
- <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt;<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *, std::vector&lt;CFBasicBlockNode *&gt;&gt; &amp;bbToNodes)</div>
202
- <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;{</div>
203
- <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="comment">// connect inter-procedural BBNodes</span></div>
204
- <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;bbNodes: bbToNodes)</div>
205
- <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; {</div>
206
- <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; bbNodes.second.size(); ++i)</div>
207
- <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div>
208
- <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *callICFGNode = SVFUtil::dyn_cast&lt;CallICFGNode&gt;(</div>
209
- <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; bbNodes.second[i]-&gt;getICFGNodes().front()))</div>
210
- <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div>
211
- <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;icfgEdge: callICFGNode-&gt;getOutEdges())</div>
212
- <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; {</div>
213
- <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a> *callEdge = SVFUtil::dyn_cast&lt;CallCFGEdge&gt;(icfgEdge))</div>
214
- <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; {</div>
215
- <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a> *pEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a>(bbNodes.second[i],</div>
216
- <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; bbToNodes[callEdge-&gt;getDstNode()-&gt;getBB()].front(),</div>
217
- <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; callEdge);</div>
218
- <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-&gt;<a class="code" href="classSVF_1_1CFBasicBlockGraph.html#acd6a4b291c9aab8abdc466f985975d0d">addCFBBEdge</a>(pEdge);</div>
219
- <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div>
220
- <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div>
221
- <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div>
222
- <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a> *retICFGNode = SVFUtil::dyn_cast&lt;RetICFGNode&gt;(</div>
223
- <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; bbNodes.second[i]-&gt;getICFGNodes().front()))</div>
224
- <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {</div>
225
- <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;icfgEdge: retICFGNode-&gt;getInEdges())</div>
226
- <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div>
227
- <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a> *retEdge = SVFUtil::dyn_cast&lt;RetCFGEdge&gt;(icfgEdge))</div>
228
- <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {</div>
229
- <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a> *pEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a>(bbToNodes[retEdge-&gt;getSrcNode()-&gt;getBB()].back(),</div>
230
- <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; bbNodes.second[i],</div>
231
- <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; retEdge);</div>
232
- <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-&gt;<a class="code" href="classSVF_1_1CFBasicBlockGraph.html#acd6a4b291c9aab8abdc466f985975d0d">addCFBBEdge</a>(pEdge);</div>
233
- <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div>
234
- <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div>
235
- <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div>
236
- <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">else</span></div>
237
- <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; {</div>
238
- <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="comment">// other nodes are intra-procedural</span></div>
239
- <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div>
240
- <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div>
241
- <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div>
242
- <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;}</div>
243
- <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; </div>
244
- <div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="classSVF_1_1CFBasicBlockGBuilder.html#a25f0496187622b156bafc49f34fffeaf"> 173</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a25f0496187622b156bafc49f34fffeaf">CFBasicBlockGBuilder::build</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* icfg)</div>
245
- <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;{</div>
246
- <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockGraph.html">CFBasicBlockGraph</a>();</div>
247
- <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFBasicBlock*, std::vector&lt;CFBasicBlockNode*&gt;</a>&gt; bbToNodes;</div>
248
- <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; </div>
249
- <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a43c0cba051306acc6440f60165b835e6">initCFBasicBlockGNodes</a>(icfg, bbToNodes);</div>
250
- <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a2c9f8c120522e31124364f485e873608">addInterBBEdge</a>(icfg, bbToNodes);</div>
251
- <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#ae6c8497f1cd2e3ca63b899ea11757b31">addIntraBBEdge</a>(icfg, bbToNodes);</div>
252
- <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a2a72cd05458304eaae145532448cf913">addInterProceduralEdge</a>(icfg, bbToNodes);</div>
253
- <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;}</div>
254
- <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;}</div>
105
+ <div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1CFBasicBlockGBuilder.html#a43c0cba051306acc6440f60165b835e6"> 40</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a43c0cba051306acc6440f60165b835e6">CFBasicBlockGBuilder::initCFBasicBlockGNodes</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *icfg,</div>
106
+ <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt;<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *, std::vector&lt;CFBasicBlockNode *&gt;&gt; &amp;bbToNodes)</div>
107
+ <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div>
108
+ <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;node : *icfg)</div>
109
+ <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div>
110
+ <div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a> *pNode;</div>
111
+ <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *bb = node.second-&gt;getBB())</div>
112
+ <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div>
113
+ <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *callNode = SVFUtil::dyn_cast&lt;CallICFGNode&gt;(node.second))</div>
114
+ <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div>
115
+ <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">// Create a new CFBasicBlockNode for the CallICFGNode</span></div>
116
+ <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; pNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>({callNode});</div>
117
+ <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; bbToNodes[bb].push_back(pNode);</div>
118
+ <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-&gt;<a class="code" href="classSVF_1_1CFBasicBlockGraph.html#a4a7a6e00d13b4099c34a3015b4f06a67">addCFBBNode</a>(pNode);</div>
119
+ <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
120
+ <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// Create a new CFBasicBlockNode for the corresponding RetICFGNode</span></div>
121
+ <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">auto</span> *retNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>({callNode-&gt;getRetICFGNode()});</div>
122
+ <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; bbToNodes[bb].push_back(retNode);</div>
123
+ <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-&gt;<a class="code" href="classSVF_1_1CFBasicBlockGraph.html#a4a7a6e00d13b4099c34a3015b4f06a67">addCFBBNode</a>(retNode);</div>
124
+ <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div>
125
+ <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!SVFUtil::isa&lt;RetICFGNode&gt;(node.second))</div>
126
+ <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div>
127
+ <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span> (bbToNodes.find(bb) == bbToNodes.end())</div>
128
+ <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div>
129
+ <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="comment">// Create a new CFBasicBlockNode for the non-CallICFGNode</span></div>
130
+ <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; pNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>({node.second});</div>
131
+ <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; bbToNodes[node.second-&gt;getBB()] = {pNode};</div>
132
+ <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-&gt;<a class="code" href="classSVF_1_1CFBasicBlockGraph.html#a4a7a6e00d13b4099c34a3015b4f06a67">addCFBBNode</a>(pNode);</div>
133
+ <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div>
134
+ <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">else</span></div>
135
+ <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div>
136
+ <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; pNode = bbToNodes[node.second-&gt;getBB()].back();</div>
137
+ <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;RetICFGNode&gt;(pNode-&gt;<a class="code" href="classSVF_1_1CFBasicBlockNode.html#afdad57a83c392a8b14b838ecb58f9ff7">getICFGNodes</a>()[0]))</div>
138
+ <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div>
139
+ <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// Add the non-CallICFGNode to the existing CFBasicBlockNode</span></div>
140
+ <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; pNode-&gt;<a class="code" href="classSVF_1_1CFBasicBlockNode.html#a5374f4567cee38325f61940f4edbb142">addNode</a>(node.second);</div>
141
+ <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div>
142
+ <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">else</span></div>
143
+ <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div>
144
+ <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">// Create a new CFBasicBlockNode for the non-CallICFGNode</span></div>
145
+ <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; pNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>({node.second});</div>
146
+ <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; bbToNodes[node.second-&gt;getBB()].push_back(pNode);</div>
147
+ <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-&gt;<a class="code" href="classSVF_1_1CFBasicBlockGraph.html#a4a7a6e00d13b4099c34a3015b4f06a67">addCFBBNode</a>(pNode);</div>
148
+ <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div>
149
+ <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div>
150
+ <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div>
151
+ <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div>
152
+ <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div>
153
+ <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div>
154
+ <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; </div>
155
+ <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
156
+ <div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classSVF_1_1CFBasicBlockGBuilder.html#a2c9f8c120522e31124364f485e873608"> 97</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a2c9f8c120522e31124364f485e873608">CFBasicBlockGBuilder::addInterBBEdge</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *icfg,</div>
157
+ <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt;<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *, std::vector&lt;CFBasicBlockNode *&gt;&gt; &amp;bbToNodes)</div>
158
+ <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;{</div>
159
+ <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">// Connect inter-BB BBNodes</span></div>
160
+ <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;node : *icfg)</div>
161
+ <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div>
162
+ <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;succ : node.second-&gt;getOutEdges())</div>
163
+ <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div>
164
+ <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="comment">// Check if it&#39;s an intraCFGEdge in case of recursive functions</span></div>
165
+ <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="comment">// if recursive functions, node_fun == succ_fun but they are different call context</span></div>
166
+ <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="comment">// edges related to recursive functions would be added in addInterProceduralEdge()</span></div>
167
+ <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (succ-&gt;isIntraCFGEdge())</div>
168
+ <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div>
169
+ <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *node_fun = node.second-&gt;getFun();</div>
170
+ <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *succ_fun = succ-&gt;getDstNode()-&gt;getFun();</div>
171
+ <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *node_bb = node.second-&gt;getBB();</div>
172
+ <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *succ_bb = succ-&gt;getDstNode()-&gt;getBB();</div>
173
+ <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">if</span> (node_fun == succ_fun)</div>
174
+ <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div>
175
+ <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span> (node_bb != succ_bb)</div>
176
+ <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div>
177
+ <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="comment">// Create a new CFBasicBlockEdge connecting the last node of the source BB</span></div>
178
+ <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="comment">// and the first node of the destination BB</span></div>
179
+ <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a> *pEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a>(</div>
180
+ <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; bbToNodes[node_bb].back(),</div>
181
+ <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; bbToNodes[succ_bb].front(), succ);</div>
182
+ <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-&gt;<a class="code" href="classSVF_1_1CFBasicBlockGraph.html#acd6a4b291c9aab8abdc466f985975d0d">addCFBBEdge</a>(pEdge);</div>
183
+ <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div>
184
+ <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div>
185
+ <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div>
186
+ <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div>
187
+ <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div>
188
+ <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;}</div>
189
+ <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; </div>
190
+ <div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1CFBasicBlockGBuilder.html#ae6c8497f1cd2e3ca63b899ea11757b31"> 137</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#ae6c8497f1cd2e3ca63b899ea11757b31">CFBasicBlockGBuilder::addIntraBBEdge</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *icfg,</div>
191
+ <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt;<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *, std::vector&lt;CFBasicBlockNode *&gt;&gt; &amp;bbToNodes)</div>
192
+ <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;{</div>
193
+ <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">// Connect intra-BB BBNodes</span></div>
194
+ <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;bbNodes : bbToNodes)</div>
195
+ <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div>
196
+ <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; bbNodes.second.size() - 1; ++i)</div>
197
+ <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; {</div>
198
+ <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">// Check if an intraCFGEdge exists between the last node of the source BB and the first node of the destination BB</span></div>
199
+ <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> *icfgEdge = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5dd4ac55123501c47c628adcf27e2475">getICFGEdge</a>(</div>
200
+ <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *<span class="keyword">&gt;</span>(bbNodes.second[i]-&gt;getICFGNodes().back()),</div>
201
+ <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *<span class="keyword">&gt;</span>(bbNodes.second[i + 1]-&gt;getICFGNodes().front()),</div>
202
+ <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429acb8fba7c61b08ec952f1b65643d7a84b">ICFGEdge::IntraCF</a>))</div>
203
+ <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div>
204
+ <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a> *pEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a>(bbNodes.second[i], bbNodes.second[i + 1], icfgEdge);</div>
205
+ <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-&gt;<a class="code" href="classSVF_1_1CFBasicBlockGraph.html#acd6a4b291c9aab8abdc466f985975d0d">addCFBBEdge</a>(pEdge);</div>
206
+ <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div>
207
+ <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">else</span></div>
208
+ <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div>
209
+ <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="comment">// No intra-procedural edge found, possibly an external API call</span></div>
210
+ <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; }</div>
211
+ <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div>
212
+ <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div>
213
+ <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;}</div>
214
+ <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; </div>
215
+ <div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classSVF_1_1CFBasicBlockGBuilder.html#a2a72cd05458304eaae145532448cf913"> 168</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a2a72cd05458304eaae145532448cf913">CFBasicBlockGBuilder::addInterProceduralEdge</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *icfg,</div>
216
+ <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt;<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *, std::vector&lt;CFBasicBlockNode *&gt;&gt; &amp;bbToNodes)</div>
217
+ <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;{</div>
218
+ <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="comment">// Connect inter-procedural BBNodes</span></div>
219
+ <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;bbNodes : bbToNodes)</div>
220
+ <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {</div>
221
+ <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; bbNodes.second.size(); ++i)</div>
222
+ <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; {</div>
223
+ <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *callICFGNode = SVFUtil::dyn_cast&lt;CallICFGNode&gt;(</div>
224
+ <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; bbNodes.second[i]-&gt;getICFGNodes().front()))</div>
225
+ <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; {</div>
226
+ <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;icfgEdge : callICFGNode-&gt;getOutEdges())</div>
227
+ <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; {</div>
228
+ <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a> *callEdge = SVFUtil::dyn_cast&lt;CallCFGEdge&gt;(icfgEdge))</div>
229
+ <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div>
230
+ <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a> *pEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a>(bbNodes.second[i],</div>
231
+ <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; bbToNodes[callEdge-&gt;getDstNode()-&gt;getBB()].front(),</div>
232
+ <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; callEdge);</div>
233
+ <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-&gt;<a class="code" href="classSVF_1_1CFBasicBlockGraph.html#acd6a4b291c9aab8abdc466f985975d0d">addCFBBEdge</a>(pEdge);</div>
234
+ <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div>
235
+ <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div>
236
+ <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; }</div>
237
+ <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a> *retICFGNode = SVFUtil::dyn_cast&lt;RetICFGNode&gt;(</div>
238
+ <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; bbNodes.second[i]-&gt;getICFGNodes().front()))</div>
239
+ <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; {</div>
240
+ <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;icfgEdge : retICFGNode-&gt;getInEdges())</div>
241
+ <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; {</div>
242
+ <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a> *retEdge = SVFUtil::dyn_cast&lt;RetCFGEdge&gt;(icfgEdge))</div>
243
+ <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div>
244
+ <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a> *pEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a>(bbToNodes[retEdge-&gt;getSrcNode()-&gt;getBB()].back(),</div>
245
+ <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; bbNodes.second[i],</div>
246
+ <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; retEdge);</div>
247
+ <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-&gt;<a class="code" href="classSVF_1_1CFBasicBlockGraph.html#acd6a4b291c9aab8abdc466f985975d0d">addCFBBEdge</a>(pEdge);</div>
248
+ <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div>
249
+ <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div>
250
+ <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div>
251
+ <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">else</span></div>
252
+ <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; {</div>
253
+ <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="comment">// Other nodes are intra-procedural</span></div>
254
+ <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div>
255
+ <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; }</div>
256
+ <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div>
257
+ <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;}</div>
258
+ <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; </div>
259
+ <div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classSVF_1_1CFBasicBlockGBuilder.html#a25f0496187622b156bafc49f34fffeaf"> 217</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a25f0496187622b156bafc49f34fffeaf">CFBasicBlockGBuilder::build</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *icfg)</div>
260
+ <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;{</div>
261
+ <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockGraph.html">CFBasicBlockGraph</a>();</div>
262
+ <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFBasicBlock *, std::vector&lt;CFBasicBlockNode *&gt;</a>&gt; bbToNodes;</div>
263
+ <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; </div>
264
+ <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a43c0cba051306acc6440f60165b835e6">initCFBasicBlockGNodes</a>(icfg, bbToNodes);</div>
265
+ <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a2c9f8c120522e31124364f485e873608">addInterBBEdge</a>(icfg, bbToNodes);</div>
266
+ <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#ae6c8497f1cd2e3ca63b899ea11757b31">addIntraBBEdge</a>(icfg, bbToNodes);</div>
267
+ <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a2a72cd05458304eaae145532448cf913">addInterProceduralEdge</a>(icfg, bbToNodes);</div>
268
+ <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;}</div>
269
+ <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; </div>
270
+ <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;}</div>
255
271
  </div><!-- fragment --></div><!-- contents -->
256
- <div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html_a43c0cba051306acc6440f60165b835e6"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html#a43c0cba051306acc6440f60165b835e6">SVF::CFBasicBlockGBuilder::initCFBasicBlockGNodes</a></div><div class="ttdeci">void initCFBasicBlockGNodes(ICFG *icfg, Map&lt; const SVFBasicBlock *, std::vector&lt; CFBasicBlockNode * &gt;&gt; &amp;bbToNodes)</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8cpp_source.html#l00034">CFBasicBlockGBuilder.cpp:34</a></div></div>
272
+ <div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html_a43c0cba051306acc6440f60165b835e6"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html#a43c0cba051306acc6440f60165b835e6">SVF::CFBasicBlockGBuilder::initCFBasicBlockGNodes</a></div><div class="ttdeci">void initCFBasicBlockGNodes(ICFG *icfg, Map&lt; const SVFBasicBlock *, std::vector&lt; CFBasicBlockNode * &gt;&gt; &amp;bbToNodes)</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8cpp_source.html#l00040">CFBasicBlockGBuilder.cpp:40</a></div></div>
257
273
  <div class="ttc" id="aclassSVF_1_1CallCFGEdge_html"><div class="ttname"><a href="classSVF_1_1CallCFGEdge.html">SVF::CallCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00176">ICFGEdge.h:176</a></div></div>
258
274
  <div class="ttc" id="aclassSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00044">ICFGEdge.h:44</a></div></div>
259
275
  <div class="ttc" id="aclassSVF_1_1RetICFGNode_html"><div class="ttname"><a href="classSVF_1_1RetICFGNode.html">SVF::RetICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00487">ICFGNode.h:487</a></div></div>
260
276
  <div class="ttc" id="anamespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
261
- <div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html_a2c9f8c120522e31124364f485e873608"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html#a2c9f8c120522e31124364f485e873608">SVF::CFBasicBlockGBuilder::addInterBBEdge</a></div><div class="ttdeci">void addInterBBEdge(ICFG *icfg, Map&lt; const SVFBasicBlock *, std::vector&lt; CFBasicBlockNode * &gt;&gt; &amp;bbToNodes)</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8cpp_source.html#l00080">CFBasicBlockGBuilder.cpp:80</a></div></div>
277
+ <div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html_a2c9f8c120522e31124364f485e873608"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html#a2c9f8c120522e31124364f485e873608">SVF::CFBasicBlockGBuilder::addInterBBEdge</a></div><div class="ttdeci">void addInterBBEdge(ICFG *icfg, Map&lt; const SVFBasicBlock *, std::vector&lt; CFBasicBlockNode * &gt;&gt; &amp;bbToNodes)</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8cpp_source.html#l00097">CFBasicBlockGBuilder.cpp:97</a></div></div>
262
278
  <div class="ttc" id="aclassSVF_1_1CFBasicBlockEdge_html"><div class="ttname"><a href="classSVF_1_1CFBasicBlockEdge.html">SVF::CFBasicBlockEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockG_8h_source.html#l00043">CFBasicBlockG.h:43</a></div></div>
263
279
  <div class="ttc" id="aclassSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
264
280
  <div class="ttc" id="aclassSVF_1_1RetCFGEdge_html"><div class="ttname"><a href="classSVF_1_1RetCFGEdge.html">SVF::RetCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00227">ICFGEdge.h:227</a></div></div>
265
281
  <div class="ttc" id="aclassSVF_1_1CFBasicBlockGraph_html_acd6a4b291c9aab8abdc466f985975d0d"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGraph.html#acd6a4b291c9aab8abdc466f985975d0d">SVF::CFBasicBlockGraph::addCFBBEdge</a></div><div class="ttdeci">bool addCFBBEdge(CFBasicBlockEdge *edge)</div><div class="ttdoc">Add ICFGEdgeWrapper.</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockG_8h_source.html#l00452">CFBasicBlockG.h:452</a></div></div>
266
282
  <div class="ttc" id="aclassSVF_1_1CFBasicBlockGraph_html_a4a7a6e00d13b4099c34a3015b4f06a67"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGraph.html#a4a7a6e00d13b4099c34a3015b4f06a67">SVF::CFBasicBlockGraph::addCFBBNode</a></div><div class="ttdeci">virtual void addCFBBNode(CFBasicBlockNode *node)</div><div class="ttdoc">Add a ICFGNodeWrapper.</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockG_8h_source.html#l00462">CFBasicBlockG.h:462</a></div></div>
267
- <div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html_ae6c8497f1cd2e3ca63b899ea11757b31"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html#ae6c8497f1cd2e3ca63b899ea11757b31">SVF::CFBasicBlockGBuilder::addIntraBBEdge</a></div><div class="ttdeci">void addIntraBBEdge(ICFG *icfg, Map&lt; const SVFBasicBlock *, std::vector&lt; CFBasicBlockNode * &gt;&gt; &amp;bbToNodes)</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8cpp_source.html#l00105">CFBasicBlockGBuilder.cpp:105</a></div></div>
283
+ <div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html_ae6c8497f1cd2e3ca63b899ea11757b31"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html#ae6c8497f1cd2e3ca63b899ea11757b31">SVF::CFBasicBlockGBuilder::addIntraBBEdge</a></div><div class="ttdeci">void addIntraBBEdge(ICFG *icfg, Map&lt; const SVFBasicBlock *, std::vector&lt; CFBasicBlockNode * &gt;&gt; &amp;bbToNodes)</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8cpp_source.html#l00137">CFBasicBlockGBuilder.cpp:137</a></div></div>
268
284
  <div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00517">SVFValue.h:517</a></div></div>
269
285
  <div class="ttc" id="aclassSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00385">ICFGNode.h:385</a></div></div>
270
- <div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html_a2a72cd05458304eaae145532448cf913"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html#a2a72cd05458304eaae145532448cf913">SVF::CFBasicBlockGBuilder::addInterProceduralEdge</a></div><div class="ttdeci">void addInterProceduralEdge(ICFG *icfg, Map&lt; const SVFBasicBlock *, std::vector&lt; CFBasicBlockNode * &gt;&gt; &amp;bbToNodes)</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8cpp_source.html#l00129">CFBasicBlockGBuilder.cpp:129</a></div></div>
286
+ <div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html_a2a72cd05458304eaae145532448cf913"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html#a2a72cd05458304eaae145532448cf913">SVF::CFBasicBlockGBuilder::addInterProceduralEdge</a></div><div class="ttdeci">void addInterProceduralEdge(ICFG *icfg, Map&lt; const SVFBasicBlock *, std::vector&lt; CFBasicBlockNode * &gt;&gt; &amp;bbToNodes)</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8cpp_source.html#l00168">CFBasicBlockGBuilder.cpp:168</a></div></div>
271
287
  <div class="ttc" id="aclassSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00297">SVFValue.h:297</a></div></div>
272
- <div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html_a25f0496187622b156bafc49f34fffeaf"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html#a25f0496187622b156bafc49f34fffeaf">SVF::CFBasicBlockGBuilder::build</a></div><div class="ttdeci">virtual void build(ICFG *icfg)</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8cpp_source.html#l00173">CFBasicBlockGBuilder.cpp:173</a></div></div>
288
+ <div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html_a25f0496187622b156bafc49f34fffeaf"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html#a25f0496187622b156bafc49f34fffeaf">SVF::CFBasicBlockGBuilder::build</a></div><div class="ttdeci">virtual void build(ICFG *icfg)</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8cpp_source.html#l00217">CFBasicBlockGBuilder.cpp:217</a></div></div>
273
289
  <div class="ttc" id="aclassSVF_1_1CFBasicBlockNode_html_afdad57a83c392a8b14b838ecb58f9ff7"><div class="ttname"><a href="classSVF_1_1CFBasicBlockNode.html#afdad57a83c392a8b14b838ecb58f9ff7">SVF::CFBasicBlockNode::getICFGNodes</a></div><div class="ttdeci">const std::vector&lt; const ICFGNode * &gt; &amp; getICFGNodes() const</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockG_8h_source.html#l00147">CFBasicBlockG.h:147</a></div></div>
274
290
  <div class="ttc" id="aclassSVF_1_1CFBasicBlockNode_html"><div class="ttname"><a href="classSVF_1_1CFBasicBlockNode.html">SVF::CFBasicBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockG_8h_source.html#l00114">CFBasicBlockG.h:114</a></div></div>
275
291
  <div class="ttc" id="aclassSVF_1_1ICFG_html"><div class="ttname"><a href="classSVF_1_1ICFG.html">SVF::ICFG</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00047">ICFG.h:47</a></div></div>