svf-tools 1.0.791 → 1.0.793
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/CMakeLists.txt +4 -1
- package/SVF-doxygen/html/CDGBuilder_8cpp_source.html +131 -127
- package/SVF-doxygen/html/CDGBuilder_8h_source.html +5 -5
- package/SVF-doxygen/html/WTO_8h_source.html +211 -208
- package/SVF-doxygen/html/classSVF_1_1CDGBuilder.html +122 -118
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGWTO.html +174 -172
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGWTO_1_1TailBuilder.html +17 -16
- package/package.json +1 -1
- package/svf/include/AbstractExecution/WTO.h +3 -0
- package/svf/lib/Util/CDGBuilder.cpp +13 -9
- package/svf-llvm/CMakeLists.txt +1 -0
package/CMakeLists.txt
CHANGED
|
@@ -89,7 +89,10 @@ install(
|
|
|
89
89
|
PATTERN "**/*.h")
|
|
90
90
|
|
|
91
91
|
# Compile extapi.c to extapi.bc
|
|
92
|
-
find_path(LLVM_CLANG_DIR
|
|
92
|
+
find_path(LLVM_CLANG_DIR
|
|
93
|
+
NAMES clang llvm
|
|
94
|
+
HINTS ${LLVM_DIR} ENV LLVM_DIR
|
|
95
|
+
PATH_SUFFIXES bin)
|
|
93
96
|
add_custom_target(extapi_ir ALL
|
|
94
97
|
COMMAND ${LLVM_CLANG_DIR}/clang -w -S -c -Xclang -disable-O0-optnone -fno-discard-value-names -emit-llvm ${PROJECT_SOURCE_DIR}/svf-llvm/lib/extapi.c -o ${PROJECT_BINARY_DIR}/svf-llvm/extapi.bc
|
|
95
98
|
DEPENDS ${PROJECT_SOURCE_DIR}/svf-llvm/lib/extapi.c
|
|
@@ -128,128 +128,132 @@ $(function() {
|
|
|
128
128
|
<div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1CDGBuilder.html#a6a7139139b2f0124e1729036490886db"> 64</a></span> <a class="code" href="classSVF_1_1CDGBuilder.html#a6a7139139b2f0124e1729036490886db">CDGBuilder::extractNodesBetweenPdomNodes</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *succ, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *LCA,</div>
|
|
129
129
|
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  std::vector<const SVFBasicBlock *> &tgtNodes)</div>
|
|
130
130
|
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> {</div>
|
|
131
|
-
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span> (
|
|
132
|
-
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> 
|
|
133
|
-
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> 
|
|
134
|
-
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> 
|
|
135
|
-
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> 
|
|
136
|
-
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> 
|
|
137
|
-
<div class="line"><a name="
|
|
138
|
-
<div class="line"><a name="
|
|
139
|
-
<div class="line"><a name="
|
|
140
|
-
<div class="line"><a name="
|
|
141
|
-
<div class="line"><a name="
|
|
142
|
-
<div class="line"><a name="l00081"></a><span class="lineno"
|
|
143
|
-
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> 
|
|
144
|
-
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> 
|
|
145
|
-
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> 
|
|
146
|
-
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> 
|
|
147
|
-
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> 
|
|
148
|
-
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> 
|
|
149
|
-
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> 
|
|
150
|
-
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  </div>
|
|
151
|
-
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  </div>
|
|
152
|
-
<div class="line"><a name="l00091"></a><span class="lineno"
|
|
153
|
-
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> {</div>
|
|
154
|
-
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> 
|
|
155
|
-
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> 
|
|
156
|
-
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> 
|
|
157
|
-
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> 
|
|
158
|
-
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> 
|
|
159
|
-
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> 
|
|
160
|
-
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> 
|
|
161
|
-
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> 
|
|
162
|
-
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> 
|
|
163
|
-
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> 
|
|
164
|
-
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> 
|
|
165
|
-
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> 
|
|
166
|
-
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> 
|
|
167
|
-
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> 
|
|
168
|
-
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> 
|
|
169
|
-
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> 
|
|
170
|
-
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> 
|
|
171
|
-
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> 
|
|
172
|
-
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> 
|
|
173
|
-
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> 
|
|
174
|
-
<div class="line"><a name="
|
|
175
|
-
<div class="line"><a name="
|
|
176
|
-
<div class="line"><a name="l00125"></a><span class="lineno"
|
|
177
|
-
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> {</div>
|
|
178
|
-
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> 
|
|
179
|
-
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> 
|
|
180
|
-
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <
|
|
181
|
-
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> 
|
|
182
|
-
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> 
|
|
183
|
-
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> 
|
|
184
|
-
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> 
|
|
185
|
-
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> 
|
|
186
|
-
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> 
|
|
187
|
-
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *
|
|
188
|
-
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> 
|
|
189
|
-
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> 
|
|
190
|
-
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> 
|
|
191
|
-
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> 
|
|
192
|
-
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> 
|
|
193
|
-
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> 
|
|
194
|
-
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> 
|
|
195
|
-
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="
|
|
196
|
-
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> 
|
|
197
|
-
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  </div>
|
|
198
|
-
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> 
|
|
199
|
-
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> 
|
|
200
|
-
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> 
|
|
201
|
-
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> 
|
|
202
|
-
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> 
|
|
203
|
-
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> 
|
|
204
|
-
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> 
|
|
205
|
-
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> 
|
|
206
|
-
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> }</div>
|
|
207
|
-
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> 
|
|
208
|
-
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> 
|
|
209
|
-
<div class="line"><a name="
|
|
210
|
-
<div class="line"><a name="
|
|
211
|
-
<div class="line"><a name="
|
|
212
|
-
<div class="line"><a name="
|
|
213
|
-
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> 
|
|
214
|
-
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> 
|
|
215
|
-
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> 
|
|
216
|
-
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> 
|
|
217
|
-
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> 
|
|
218
|
-
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> 
|
|
219
|
-
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> 
|
|
220
|
-
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> 
|
|
221
|
-
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> 
|
|
222
|
-
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> 
|
|
223
|
-
<div class="line"><a name="
|
|
224
|
-
<div class="line"><a name="
|
|
225
|
-
<div class="line"><a name="
|
|
226
|
-
<div class="line"><a name="
|
|
227
|
-
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> 
|
|
228
|
-
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> 
|
|
229
|
-
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> 
|
|
230
|
-
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> 
|
|
231
|
-
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> 
|
|
232
|
-
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> 
|
|
233
|
-
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> 
|
|
234
|
-
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="
|
|
235
|
-
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="
|
|
236
|
-
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="
|
|
237
|
-
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="
|
|
238
|
-
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">
|
|
239
|
-
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> 
|
|
240
|
-
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> 
|
|
241
|
-
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> 
|
|
242
|
-
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> 
|
|
243
|
-
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> 
|
|
244
|
-
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> 
|
|
245
|
-
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> 
|
|
246
|
-
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> 
|
|
247
|
-
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> 
|
|
248
|
-
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> 
|
|
249
|
-
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> 
|
|
250
|
-
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> 
|
|
251
|
-
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> 
|
|
252
|
-
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> }</div>
|
|
131
|
+
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span> (succ == LCA) <span class="keywordflow">return</span>;</div>
|
|
132
|
+
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  std::vector<const SVFBasicBlock *> path;</div>
|
|
133
|
+
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a> *ld = <span class="keyword">const_cast<</span><a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<span class="keyword">></span>(LCA-><a class="code" href="classSVF_1_1SVFBasicBlock.html#aeaa9b2b4e802d9e6bed138eaf3186d09">getFunction</a>())->getLoopAndDomInfo();</div>
|
|
134
|
+
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  dfsNodesBetweenPdomNodes(LCA, succ, path, tgtNodes, ld);</div>
|
|
135
|
+
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> }</div>
|
|
136
|
+
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  </div>
|
|
137
|
+
<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1CDGBuilder.html#aeeb38d897babfeff1844c643dda8ae97"> 76</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CDGBuilder.html#aeeb38d897babfeff1844c643dda8ae97">CDGBuilder::build</a>()</div>
|
|
138
|
+
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> {</div>
|
|
139
|
+
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span> (_controlDG->getTotalNodeNum() > 0)</div>
|
|
140
|
+
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">return</span>;</div>
|
|
141
|
+
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="classSVF_1_1SVFIR.html">PAG</a> *pag = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>();</div>
|
|
142
|
+
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  buildControlDependence(pag-><a class="code" href="classSVF_1_1SVFIR.html#ad6e18f520f6b559f2304002792f6b701">getModule</a>());</div>
|
|
143
|
+
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  buildICFGNodeControlMap();</div>
|
|
144
|
+
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> }</div>
|
|
145
|
+
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  </div>
|
|
146
|
+
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  </div>
|
|
147
|
+
<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classSVF_1_1CDGBuilder.html#af65f6090142a61d13e1510c771baaeb1"> 86</a></span> <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> <a class="code" href="classSVF_1_1CDGBuilder.html#af65f6090142a61d13e1510c771baaeb1">CDGBuilder::getBBSuccessorBranchID</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *BB, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *Succ)</div>
|
|
148
|
+
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> {</div>
|
|
149
|
+
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *icfg = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>();</div>
|
|
150
|
+
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *pred = icfg-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(BB-><a class="code" href="classSVF_1_1SVFBasicBlock.html#a10707086ce21999f415c479706abbd38">getTerminator</a>());</div>
|
|
151
|
+
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> *edge = <span class="keyword">nullptr</span>;</div>
|
|
152
|
+
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &inst: Succ-><a class="code" href="classSVF_1_1SVFBasicBlock.html#a8cb9cc170c9693b9bfe9a0f7a65a618e">getInstructionList</a>())</div>
|
|
153
|
+
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {</div>
|
|
154
|
+
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> *e = icfg-><a class="code" href="classSVF_1_1ICFG.html#a5dd4ac55123501c47c628adcf27e2475">getICFGEdge</a>(pred, icfg-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(inst), ICFGEdge::ICFGEdgeK::IntraCF))</div>
|
|
155
|
+
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  {</div>
|
|
156
|
+
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  edge = e;</div>
|
|
157
|
+
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">break</span>;</div>
|
|
158
|
+
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div>
|
|
159
|
+
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div>
|
|
160
|
+
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a> *intraEdge = SVFUtil::dyn_cast<IntraCFGEdge>(edge))</div>
|
|
161
|
+
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div>
|
|
162
|
+
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span>(intraEdge->getCondition())</div>
|
|
163
|
+
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> intraEdge->getSuccessorCondValue();</div>
|
|
164
|
+
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">else</span></div>
|
|
165
|
+
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">return</span> 0;</div>
|
|
166
|
+
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div>
|
|
167
|
+
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">else</span></div>
|
|
168
|
+
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div>
|
|
169
|
+
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"not intra edge?"</span>);</div>
|
|
170
|
+
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  abort();</div>
|
|
171
|
+
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div>
|
|
172
|
+
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> }</div>
|
|
173
|
+
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  </div>
|
|
174
|
+
<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1CDGBuilder.html#aa57921c1c3002e7e35cfb6b113cd8031"> 123</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CDGBuilder.html#aa57921c1c3002e7e35cfb6b113cd8031">CDGBuilder::buildControlDependence</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a> *svfgModule)</div>
|
|
175
|
+
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> {</div>
|
|
176
|
+
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &svfFun: *svfgModule)</div>
|
|
177
|
+
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div>
|
|
178
|
+
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(svfFun)) <span class="keywordflow">continue</span>;</div>
|
|
179
|
+
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// extract basic block edges to be processed</span></div>
|
|
180
|
+
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFBasicBlock *, std::vector<const SVFBasicBlock *></a>> BBS;</div>
|
|
181
|
+
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  extractBBS(svfFun, BBS);</div>
|
|
182
|
+
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  </div>
|
|
183
|
+
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>: BBS)</div>
|
|
184
|
+
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div>
|
|
185
|
+
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *pred = <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first;</div>
|
|
186
|
+
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// for each bb pair</span></div>
|
|
187
|
+
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *succ: <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second)</div>
|
|
188
|
+
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div>
|
|
189
|
+
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *SVFLCA = <span class="keyword">const_cast<</span><a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *<span class="keyword">></span>(svfFun)-></div>
|
|
190
|
+
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  getLoopAndDomInfo()->findNearestCommonPDominator(pred, succ);</div>
|
|
191
|
+
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  std::vector<const SVFBasicBlock *> tgtNodes;</div>
|
|
192
|
+
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// no common ancestor, may be exit()</span></div>
|
|
193
|
+
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">if</span> (SVFLCA == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>)</div>
|
|
194
|
+
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  tgtNodes.push_back(succ);</div>
|
|
195
|
+
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">else</span></div>
|
|
196
|
+
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  {</div>
|
|
197
|
+
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span> (SVFLCA == pred) tgtNodes.push_back(SVFLCA);</div>
|
|
198
|
+
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// from succ to LCA</span></div>
|
|
199
|
+
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  extractNodesBetweenPdomNodes(succ, SVFLCA, tgtNodes);</div>
|
|
200
|
+
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div>
|
|
201
|
+
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  </div>
|
|
202
|
+
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> pos = getBBSuccessorBranchID(pred, succ);</div>
|
|
203
|
+
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *bb: tgtNodes)</div>
|
|
204
|
+
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  {</div>
|
|
205
|
+
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  updateMap(pred, bb, pos);</div>
|
|
206
|
+
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div>
|
|
207
|
+
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div>
|
|
208
|
+
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div>
|
|
209
|
+
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div>
|
|
210
|
+
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> }</div>
|
|
211
|
+
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  </div>
|
|
212
|
+
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  </div>
|
|
213
|
+
<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classSVF_1_1CDGBuilder.html#ac0b9dae9bae020608e293b1288bb988b"> 168</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CDGBuilder.html#ac0b9dae9bae020608e293b1288bb988b">CDGBuilder::extractBBS</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a> *func,</div>
|
|
214
|
+
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a><<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a> *, std::vector<const SVFBasicBlock *>> &res)</div>
|
|
215
|
+
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> {</div>
|
|
216
|
+
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &bb: *func)</div>
|
|
217
|
+
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  {</div>
|
|
218
|
+
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &succ: bb->getSuccessors())</div>
|
|
219
|
+
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  {</div>
|
|
220
|
+
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">if</span> (func->postDominate(succ, bb))</div>
|
|
221
|
+
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">continue</span>;</div>
|
|
222
|
+
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  res[bb].push_back(succ);</div>
|
|
223
|
+
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div>
|
|
224
|
+
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div>
|
|
225
|
+
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> }</div>
|
|
226
|
+
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  </div>
|
|
227
|
+
<div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="classSVF_1_1CDGBuilder.html#ab56c8f3ab29a907d420622dd8e933f0d"> 185</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CDGBuilder.html#ab56c8f3ab29a907d420622dd8e933f0d">CDGBuilder::buildICFGNodeControlMap</a>()</div>
|
|
228
|
+
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> {</div>
|
|
229
|
+
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *icfg = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>();</div>
|
|
230
|
+
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &it: _svfcontrolMap)</div>
|
|
231
|
+
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  {</div>
|
|
232
|
+
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &it2: it.second)</div>
|
|
233
|
+
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  {</div>
|
|
234
|
+
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *controllingBB = it2.first;</div>
|
|
235
|
+
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="comment">// const ICFGNode *controlNode = _bbToNode[it.first].first;</span></div>
|
|
236
|
+
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="comment">// if(!controlNode) continue;</span></div>
|
|
237
|
+
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a> *terminator = it.first->getInstructionList().back();</div>
|
|
238
|
+
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">if</span> (!terminator) <span class="keywordflow">continue</span>;</div>
|
|
239
|
+
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *controlNode = icfg-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(terminator);</div>
|
|
240
|
+
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">if</span> (!controlNode) <span class="keywordflow">continue</span>;</div>
|
|
241
|
+
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="comment">// controlNode control at pos</span></div>
|
|
242
|
+
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &inst: *controllingBB)</div>
|
|
243
|
+
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div>
|
|
244
|
+
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *controllee = icfg-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(inst);</div>
|
|
245
|
+
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  _nodeControlMap[controlNode][controllee].insert(it2.second.begin(), it2.second.end());</div>
|
|
246
|
+
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  _nodeDependentOnMap[controllee][controlNode].insert(it2.second.begin(), it2.second.end());</div>
|
|
247
|
+
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> pos: it2.second)</div>
|
|
248
|
+
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  {</div>
|
|
249
|
+
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  _controlDG->addCDGEdgeFromSrcDst(controlNode, controllee,</div>
|
|
250
|
+
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  SVFUtil::dyn_cast<IntraICFGNode>(controlNode)->getInst(),</div>
|
|
251
|
+
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  pos);</div>
|
|
252
|
+
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  }</div>
|
|
253
|
+
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  }</div>
|
|
254
|
+
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div>
|
|
255
|
+
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div>
|
|
256
|
+
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> }</div>
|
|
253
257
|
</div><!-- fragment --></div><!-- contents -->
|
|
254
258
|
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_a6efa510f946ea8befebbc94bed241395"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#a6efa510f946ea8befebbc94bed241395">SVF::CDGBuilder::dfsNodesBetweenPdomNodes</a></div><div class="ttdeci">void dfsNodesBetweenPdomNodes(const SVFBasicBlock *cur, const SVFBasicBlock *tgt, std::vector< const SVFBasicBlock * > &path, std::vector< const SVFBasicBlock * > &tgtNodes, SVFLoopAndDomInfo *ld)</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#l00034">CDGBuilder.cpp:34</a></div></div>
|
|
255
259
|
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html">SVF::SVFLoopAndDomInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00050">SVFValue.h:50</a></div></div>
|
|
@@ -257,7 +261,7 @@ $(function() {
|
|
|
257
261
|
<div class="ttc" id="aCDGBuilder_8h_html"><div class="ttname"><a href="CDGBuilder_8h.html">CDGBuilder.h</a></div></div>
|
|
258
262
|
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_aeaa9b2b4e802d9e6bed138eaf3186d09"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#aeaa9b2b4e802d9e6bed138eaf3186d09">SVF::SVFBasicBlock::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00582">SVFValue.h:582</a></div></div>
|
|
259
263
|
<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>
|
|
260
|
-
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_af65f6090142a61d13e1510c771baaeb1"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#af65f6090142a61d13e1510c771baaeb1">SVF::CDGBuilder::getBBSuccessorBranchID</a></div><div class="ttdeci">s64_t getBBSuccessorBranchID(const SVFBasicBlock *BB, const SVFBasicBlock *Succ)</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#
|
|
264
|
+
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_af65f6090142a61d13e1510c771baaeb1"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#af65f6090142a61d13e1510c771baaeb1">SVF::CDGBuilder::getBBSuccessorBranchID</a></div><div class="ttdeci">s64_t getBBSuccessorBranchID(const SVFBasicBlock *BB, const SVFBasicBlock *Succ)</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#l00086">CDGBuilder.cpp:86</a></div></div>
|
|
261
265
|
<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>
|
|
262
266
|
<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>
|
|
263
267
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a37cfa2aa4e7b98ef9dc8179f581a2362"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVF::SVFIR::getPAG</a></div><div class="ttdeci">static SVFIR * getPAG(bool buildFromFile=false)</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00114">SVFIR.h:114</a></div></div>
|
|
@@ -265,10 +269,10 @@ $(function() {
|
|
|
265
269
|
<div class="ttc" id="aclassSVF_1_1ICFG_html_a5f2c0aaba07d6fdd63058da0fb60ca8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">SVF::ICFG::getICFGNode</a></div><div class="ttdeci">ICFGNode * getICFGNode(NodeID id) const</div><div class="ttdoc">Get a ICFG node.</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00088">ICFG.h:88</a></div></div>
|
|
266
270
|
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a10707086ce21999f415c479706abbd38"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a10707086ce21999f415c479706abbd38">SVF::SVFBasicBlock::getTerminator</a></div><div class="ttdeci">const SVFInstruction * getTerminator() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00225">SVFValue.cpp:225</a></div></div>
|
|
267
271
|
<div class="ttc" id="aclassSVF_1_1IntraCFGEdge_html"><div class="ttname"><a href="classSVF_1_1IntraCFGEdge.html">SVF::IntraCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00113">ICFGEdge.h:113</a></div></div>
|
|
268
|
-
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_ab56c8f3ab29a907d420622dd8e933f0d"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#ab56c8f3ab29a907d420622dd8e933f0d">SVF::CDGBuilder::buildICFGNodeControlMap</a></div><div class="ttdeci">void buildICFGNodeControlMap()</div><div class="ttdoc">build map at icfg node level</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#
|
|
272
|
+
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_ab56c8f3ab29a907d420622dd8e933f0d"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#ab56c8f3ab29a907d420622dd8e933f0d">SVF::CDGBuilder::buildICFGNodeControlMap</a></div><div class="ttdeci">void buildICFGNodeControlMap()</div><div class="ttdoc">build map at icfg node level</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#l00185">CDGBuilder.cpp:185</a></div></div>
|
|
269
273
|
<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>
|
|
270
|
-
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_aeeb38d897babfeff1844c643dda8ae97"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#aeeb38d897babfeff1844c643dda8ae97">SVF::CDGBuilder::build</a></div><div class="ttdeci">void build()</div><div class="ttdoc">start here</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#
|
|
271
|
-
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_aa57921c1c3002e7e35cfb6b113cd8031"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#aa57921c1c3002e7e35cfb6b113cd8031">SVF::CDGBuilder::buildControlDependence</a></div><div class="ttdeci">void buildControlDependence(const SVFModule *svfgModule)</div><div class="ttdoc">build control dependence for each function</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#
|
|
274
|
+
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_aeeb38d897babfeff1844c643dda8ae97"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#aeeb38d897babfeff1844c643dda8ae97">SVF::CDGBuilder::build</a></div><div class="ttdeci">void build()</div><div class="ttdoc">start here</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#l00076">CDGBuilder.cpp:76</a></div></div>
|
|
275
|
+
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_aa57921c1c3002e7e35cfb6b113cd8031"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#aa57921c1c3002e7e35cfb6b113cd8031">SVF::CDGBuilder::buildControlDependence</a></div><div class="ttdeci">void buildControlDependence(const SVFModule *svfgModule)</div><div class="ttdoc">build control dependence for each function</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#l00123">CDGBuilder.cpp:123</a></div></div>
|
|
272
276
|
<div class="ttc" id="anamespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00052">SVFType.h:52</a></div></div>
|
|
273
277
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00309">SVFUtil.h:309</a></div></div>
|
|
274
278
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_abda052b73e869ed6d7c139ad1528da11"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00170">SVFIR.h:170</a></div></div>
|
|
@@ -284,7 +288,7 @@ $(function() {
|
|
|
284
288
|
<div class="ttc" id="aclassSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00620">SVFValue.h:620</a></div></div>
|
|
285
289
|
<div class="ttc" id="anamespaceSVF_html_ad781b0b14e89773e774072b280658ef3"><div class="ttname"><a href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">SVF::s64_t</a></div><div class="ttdeci">signed long long s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00054">SVFType.h:54</a></div></div>
|
|
286
290
|
<div class="ttc" id="anamespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00102">SVFType.h:102</a></div></div>
|
|
287
|
-
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_ac0b9dae9bae020608e293b1288bb988b"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#ac0b9dae9bae020608e293b1288bb988b">SVF::CDGBuilder::extractBBS</a></div><div class="ttdeci">static void extractBBS(const SVFFunction *func, Map< const SVFBasicBlock *, std::vector< const SVFBasicBlock * >> &res)</div><div class="ttdoc">extract basic block edges to be processed</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#
|
|
291
|
+
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_ac0b9dae9bae020608e293b1288bb988b"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#ac0b9dae9bae020608e293b1288bb988b">SVF::CDGBuilder::extractBBS</a></div><div class="ttdeci">static void extractBBS(const SVFFunction *func, Map< const SVFBasicBlock *, std::vector< const SVFBasicBlock * >> &res)</div><div class="ttdoc">extract basic block edges to be processed</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#l00168">CDGBuilder.cpp:168</a></div></div>
|
|
288
292
|
<!-- start footer part -->
|
|
289
293
|
<hr class="footer"/><address class="footer"><small>
|
|
290
294
|
Generated by  <a href="http://www.doxygen.org/index.html">
|
|
@@ -175,17 +175,17 @@ $(function() {
|
|
|
175
175
|
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_a0774da5d81fe9e454800c63f2ada4a00"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#a0774da5d81fe9e454800c63f2ada4a00">SVF::CDGBuilder::_nodeControlMap</a></div><div class="ttdeci">Map< const ICFGNode *, Map< const ICFGNode *, Set< s32_t > > > _nodeControlMap</div><div class="ttdoc">map an ICFG node to its controlling ICFG nodes (position, set of Nodes)</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8h_source.html#l00101">CDGBuilder.h:101</a></div></div>
|
|
176
176
|
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_ab24b985813e362f9470593e615c4c613"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#ab24b985813e362f9470593e615c4c613">SVF::CDGBuilder::_svfcontrolMap</a></div><div class="ttdeci">Map< const SVFBasicBlock *, Map< const SVFBasicBlock *, Set< s32_t > > > _svfcontrolMap</div><div class="ttdoc">map a basicblock to its controlling BBs (position, set of BBs)</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8h_source.html#l00099">CDGBuilder.h:99</a></div></div>
|
|
177
177
|
<div class="ttc" id="aclassSVF_1_1CDG_html"><div class="ttname"><a href="classSVF_1_1CDG.html">SVF::CDG</a></div><div class="ttdef"><b>Definition:</b> <a href="CDG_8h_source.html#l00125">CDG.h:125</a></div></div>
|
|
178
|
-
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_af65f6090142a61d13e1510c771baaeb1"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#af65f6090142a61d13e1510c771baaeb1">SVF::CDGBuilder::getBBSuccessorBranchID</a></div><div class="ttdeci">s64_t getBBSuccessorBranchID(const SVFBasicBlock *BB, const SVFBasicBlock *Succ)</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#
|
|
178
|
+
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_af65f6090142a61d13e1510c771baaeb1"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#af65f6090142a61d13e1510c771baaeb1">SVF::CDGBuilder::getBBSuccessorBranchID</a></div><div class="ttdeci">s64_t getBBSuccessorBranchID(const SVFBasicBlock *BB, const SVFBasicBlock *Succ)</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#l00086">CDGBuilder.cpp:86</a></div></div>
|
|
179
179
|
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_ae62cf8bbe09fcccbace46375f5b043f8"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#ae62cf8bbe09fcccbace46375f5b043f8">SVF::CDGBuilder::_nodeDependentOnMap</a></div><div class="ttdeci">Map< const ICFGNode *, Map< const ICFGNode *, Set< s32_t > > > _nodeDependentOnMap</div><div class="ttdoc">map an ICFG node to its dependent on ICFG nodes (position, set of Nodes)</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8h_source.html#l00102">CDGBuilder.h:102</a></div></div>
|
|
180
180
|
<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>
|
|
181
181
|
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_a6a7139139b2f0124e1729036490886db"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#a6a7139139b2f0124e1729036490886db">SVF::CDGBuilder::extractNodesBetweenPdomNodes</a></div><div class="ttdeci">void extractNodesBetweenPdomNodes(const SVFBasicBlock *succ, const SVFBasicBlock *LCA, std::vector< const SVFBasicBlock * > &tgtNodes)</div><div class="ttdoc">extract nodes between two nodes in pdom tree</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#l00064">CDGBuilder.cpp:64</a></div></div>
|
|
182
182
|
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_a243ef2e6fa014ab5814a2200f92cc93e"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#a243ef2e6fa014ab5814a2200f92cc93e">SVF::CDGBuilder::_svfdependentOnMap</a></div><div class="ttdeci">Map< const SVFBasicBlock *, Map< const SVFBasicBlock *, Set< s32_t > > > _svfdependentOnMap</div><div class="ttdoc">map a basicblock to its dependent on BBs (position, set of BBs)</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8h_source.html#l00100">CDGBuilder.h:100</a></div></div>
|
|
183
|
-
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_ab56c8f3ab29a907d420622dd8e933f0d"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#ab56c8f3ab29a907d420622dd8e933f0d">SVF::CDGBuilder::buildICFGNodeControlMap</a></div><div class="ttdeci">void buildICFGNodeControlMap()</div><div class="ttdoc">build map at icfg node level</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#
|
|
183
|
+
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_ab56c8f3ab29a907d420622dd8e933f0d"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#ab56c8f3ab29a907d420622dd8e933f0d">SVF::CDGBuilder::buildICFGNodeControlMap</a></div><div class="ttdeci">void buildICFGNodeControlMap()</div><div class="ttdoc">build map at icfg node level</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#l00185">CDGBuilder.cpp:185</a></div></div>
|
|
184
184
|
<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>
|
|
185
185
|
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html">SVF::CDGBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8h_source.html#l00038">CDGBuilder.h:38</a></div></div>
|
|
186
|
-
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_aeeb38d897babfeff1844c643dda8ae97"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#aeeb38d897babfeff1844c643dda8ae97">SVF::CDGBuilder::build</a></div><div class="ttdeci">void build()</div><div class="ttdoc">start here</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#
|
|
186
|
+
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_aeeb38d897babfeff1844c643dda8ae97"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#aeeb38d897babfeff1844c643dda8ae97">SVF::CDGBuilder::build</a></div><div class="ttdeci">void build()</div><div class="ttdoc">start here</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#l00076">CDGBuilder.cpp:76</a></div></div>
|
|
187
187
|
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_a55d97ecc3c08999d54f11ba051db3abf"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#a55d97ecc3c08999d54f11ba051db3abf">SVF::CDGBuilder::updateMap</a></div><div class="ttdeci">void updateMap(const SVFBasicBlock *pred, const SVFBasicBlock *bb, s32_t pos)</div><div class="ttdoc">update map</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8h_source.html#l00090">CDGBuilder.h:90</a></div></div>
|
|
188
|
-
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_aa57921c1c3002e7e35cfb6b113cd8031"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#aa57921c1c3002e7e35cfb6b113cd8031">SVF::CDGBuilder::buildControlDependence</a></div><div class="ttdeci">void buildControlDependence(const SVFModule *svfgModule)</div><div class="ttdoc">build control dependence for each function</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#
|
|
188
|
+
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_aa57921c1c3002e7e35cfb6b113cd8031"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#aa57921c1c3002e7e35cfb6b113cd8031">SVF::CDGBuilder::buildControlDependence</a></div><div class="ttdeci">void buildControlDependence(const SVFModule *svfgModule)</div><div class="ttdoc">build control dependence for each function</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#l00123">CDGBuilder.cpp:123</a></div></div>
|
|
189
189
|
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_abd60cdbb947fe63accc2fea3683b81e4"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#abd60cdbb947fe63accc2fea3683b81e4">SVF::CDGBuilder::_controlDG</a></div><div class="ttdeci">CDG * _controlDG</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8h_source.html#l00098">CDGBuilder.h:98</a></div></div>
|
|
190
190
|
<div class="ttc" id="anamespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00052">SVFType.h:52</a></div></div>
|
|
191
191
|
<div class="ttc" id="aCDG_8h_html"><div class="ttname"><a href="CDG_8h.html">CDG.h</a></div></div>
|
|
@@ -195,7 +195,7 @@ $(function() {
|
|
|
195
195
|
<div class="ttc" id="anamespaceSVF_html_ad781b0b14e89773e774072b280658ef3"><div class="ttname"><a href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">SVF::s64_t</a></div><div class="ttdeci">signed long long s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00054">SVFType.h:54</a></div></div>
|
|
196
196
|
<div class="ttc" id="anamespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00102">SVFType.h:102</a></div></div>
|
|
197
197
|
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_a7789807452c1bbb206fd6bb4e4f00b46"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#a7789807452c1bbb206fd6bb4e4f00b46">SVF::CDGBuilder::CDGBuilder</a></div><div class="ttdeci">CDGBuilder()</div><div class="ttdoc">constructor</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8h_source.html#l00043">CDGBuilder.h:43</a></div></div>
|
|
198
|
-
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_ac0b9dae9bae020608e293b1288bb988b"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#ac0b9dae9bae020608e293b1288bb988b">SVF::CDGBuilder::extractBBS</a></div><div class="ttdeci">static void extractBBS(const SVFFunction *func, Map< const SVFBasicBlock *, std::vector< const SVFBasicBlock * >> &res)</div><div class="ttdoc">extract basic block edges to be processed</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#
|
|
198
|
+
<div class="ttc" id="aclassSVF_1_1CDGBuilder_html_ac0b9dae9bae020608e293b1288bb988b"><div class="ttname"><a href="classSVF_1_1CDGBuilder.html#ac0b9dae9bae020608e293b1288bb988b">SVF::CDGBuilder::extractBBS</a></div><div class="ttdeci">static void extractBBS(const SVFFunction *func, Map< const SVFBasicBlock *, std::vector< const SVFBasicBlock * >> &res)</div><div class="ttdoc">extract basic block edges to be processed</div><div class="ttdef"><b>Definition:</b> <a href="CDGBuilder_8cpp_source.html#l00168">CDGBuilder.cpp:168</a></div></div>
|
|
199
199
|
<!-- start footer part -->
|
|
200
200
|
<hr class="footer"/><address class="footer"><small>
|
|
201
201
|
Generated by  <a href="http://www.doxygen.org/index.html">
|