svf-tools 1.0.796 → 1.0.798
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/AccessPath_8cpp_source.html +157 -153
- package/SVF-doxygen/html/AccessPath_8h_source.html +6 -6
- package/SVF-doxygen/html/SVFStatements_8h_source.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1AccessPath.html +151 -141
- package/SVF-doxygen/html/classSVF_1_1GepStmt.html +1 -1
- package/SVF-doxygen/html/globals_func_t.html +1 -1
- package/SVF-doxygen/html/globals_t.html +1 -1
- package/SVF-doxygen/html/search/all_13.js +1 -1
- package/SVF-doxygen/html/search/functions_13.js +1 -1
- package/SVF-doxygen/html/svf-ex_8cpp.html +109 -106
- package/SVF-doxygen/html/svf-ex_8cpp_source.html +108 -106
- package/package.json +1 -1
- package/svf/lib/MemoryModel/AccessPath.cpp +23 -2
- package/svf-llvm/tools/Example/svf-ex.cpp +7 -4
|
@@ -89,8 +89,8 @@ Functions</h2></td></tr>
|
|
|
89
89
|
<tr class="separator:a985b6c880c7922538046c6a1fa987829"><td class="memSeparator" colspan="2"> </td></tr>
|
|
90
90
|
<tr class="memitem:a8fa9e6583c354b1883a32b8abf98779f"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="svf-ex_8cpp.html#a8fa9e6583c354b1883a32b8abf98779f">traverseOnSVFStmt</a> (const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</td></tr>
|
|
91
91
|
<tr class="separator:a8fa9e6583c354b1883a32b8abf98779f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
92
|
-
<tr class="memitem:
|
|
93
|
-
<tr class="separator:
|
|
92
|
+
<tr class="memitem:a19f3fe331a1e7050a513672a91743b96"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="svf-ex_8cpp.html#a19f3fe331a1e7050a513672a91743b96">traverseOnICFG</a> (<a class="el" href="classSVF_1_1ICFG.html">ICFG</a> *icfg, const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *iNode)</td></tr>
|
|
93
|
+
<tr class="separator:a19f3fe331a1e7050a513672a91743b96"><td class="memSeparator" colspan="2"> </td></tr>
|
|
94
94
|
<tr class="memitem:ad58149e5445ad22ce478339e103ab42b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="svf-ex_8cpp.html#ad58149e5445ad22ce478339e103ab42b">traverseOnVFG</a> (const <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> *vfg, <a class="el" href="classSVF_1_1SVFValue.html">SVFValue</a> *val)</td></tr>
|
|
95
95
|
<tr class="separator:ad58149e5445ad22ce478339e103ab42b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
96
96
|
<tr class="memitem:a3c04138a5bfe5d72780bb7e82a18e627"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="svf-ex_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a> (int argc, char **argv)</td></tr>
|
|
@@ -171,54 +171,60 @@ Functions</h2></td></tr>
|
|
|
171
171
|
<p>Value-Flow Graph (VFG)</p>
|
|
172
172
|
<p>Sparse value-flow graph (SVFG)</p>
|
|
173
173
|
<p>Collect uses of an LLVM Value traverseOnVFG(svfg, value);</p>
|
|
174
|
-
<p>Collect all successor nodes on ICFG
|
|
174
|
+
<p>Collect all successor nodes on ICFG</p>
|
|
175
175
|
|
|
176
|
-
<p class="definition">Definition at line <a class="el" href="svf-ex_8cpp_source.html#
|
|
177
|
-
<div class="fragment"><div class="line"><a name="
|
|
178
|
-
<div class="line"><a name="
|
|
179
|
-
<div class="line"><a name="
|
|
180
|
-
<div class="line"><a name="
|
|
181
|
-
<div class="line"><a name="
|
|
182
|
-
<div class="line"><a name="
|
|
183
|
-
<div class="line"><a name="
|
|
184
|
-
<div class="line"><a name="
|
|
185
|
-
<div class="line"><a name="
|
|
186
|
-
<div class="line"><a name="
|
|
187
|
-
<div class="line"><a name="
|
|
176
|
+
<p class="definition">Definition at line <a class="el" href="svf-ex_8cpp_source.html#l00205">205</a> of file <a class="el" href="svf-ex_8cpp_source.html">svf-ex.cpp</a>.</p>
|
|
177
|
+
<div class="fragment"><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> {</div>
|
|
178
|
+
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  </div>
|
|
179
|
+
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  std::vector<std::string> moduleNameVec;</div>
|
|
180
|
+
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  moduleNameVec = <a class="code" href="classOptionBase.html#a4fb6c6e4a1754d702c6c1730f54457e5">OptionBase::parseOptions</a>(</div>
|
|
181
|
+
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  argc, argv, <span class="stringliteral">"Whole Program Points-to Analysis"</span>, <span class="stringliteral">"[options] <input-bitcode...>"</span></div>
|
|
182
|
+
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  );</div>
|
|
183
|
+
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  </div>
|
|
184
|
+
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">if</span> (Options::WriteAnder() == <span class="stringliteral">"ir_annotator"</span>)</div>
|
|
185
|
+
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div>
|
|
186
|
+
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  LLVMModuleSet::preProcessBCs(moduleNameVec);</div>
|
|
187
|
+
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div>
|
|
188
|
+
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  </div>
|
|
189
|
+
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = LLVMModuleSet::buildSVFModule(moduleNameVec);</div>
|
|
188
190
|
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  </div>
|
|
189
|
-
<div class="line"><a name="
|
|
190
|
-
<div class="line"><a name="
|
|
191
|
-
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> 
|
|
192
|
-
<div class="line"><a name="
|
|
193
|
-
<div class="line"><a name="
|
|
194
|
-
<div class="line"><a name="
|
|
195
|
-
<div class="line"><a name="
|
|
196
|
-
<div class="line"><a name="
|
|
197
|
-
<div class="line"><a name="
|
|
198
|
-
<div class="line"><a name="
|
|
199
|
-
<div class="line"><a name="
|
|
200
|
-
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span> 
|
|
201
|
-
<div class="line"><a name="
|
|
202
|
-
<div class="line"><a name="
|
|
203
|
-
<div class="line"><a name="
|
|
204
|
-
<div class="line"><a name="
|
|
205
|
-
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> 
|
|
206
|
-
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span> 
|
|
207
|
-
<div class="line"><a name="
|
|
208
|
-
<div class="line"><a name="
|
|
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="
|
|
214
|
-
<div class="line"><a name="
|
|
215
|
-
<div class="line"><a name="
|
|
216
|
-
<div class="line"><a name="
|
|
217
|
-
<div class="line"><a name="
|
|
191
|
+
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html">SVFIRBuilder</a> builder(svfModule);</div>
|
|
192
|
+
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = builder.build();</div>
|
|
193
|
+
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  </div>
|
|
194
|
+
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <a class="code" href="classSVF_1_1Andersen.html">Andersen</a>* ander = AndersenWaveDiff::createAndersenWaveDiff(pag);</div>
|
|
195
|
+
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  </div>
|
|
196
|
+
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  </div>
|
|
197
|
+
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  </div>
|
|
198
|
+
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* callgraph = ander-><a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>();</div>
|
|
199
|
+
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  </div>
|
|
200
|
+
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* icfg = pag-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>();</div>
|
|
201
|
+
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  icfg-><a class="code" href="classSVF_1_1ICFG.html#a999956500bbd605326531480546db9ba">dump</a>(<span class="stringliteral">"icfg"</span>);</div>
|
|
202
|
+
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  </div>
|
|
203
|
+
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <a class="code" href="classSVF_1_1VFG.html">VFG</a>* vfg = <span class="keyword">new</span> <a class="code" href="classSVF_1_1VFG.html">VFG</a>(callgraph);</div>
|
|
204
|
+
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  </div>
|
|
205
|
+
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="classSVF_1_1SVFGBuilder.html">SVFGBuilder</a> svfBuilder(<span class="keyword">true</span>);</div>
|
|
206
|
+
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="comment">//SVFG* svfg =</span></div>
|
|
207
|
+
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  svfBuilder.buildFullSVFG(ander);</div>
|
|
208
|
+
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  </div>
|
|
209
|
+
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  </div>
|
|
210
|
+
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  </div>
|
|
211
|
+
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &it : *icfg)</div>
|
|
212
|
+
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  {</div>
|
|
213
|
+
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* node = it.second;</div>
|
|
214
|
+
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <a class="code" href="svf-ex_8cpp.html#a19f3fe331a1e7050a513672a91743b96">traverseOnICFG</a>(icfg, node);</div>
|
|
215
|
+
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  }</div>
|
|
216
|
+
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  </div>
|
|
217
|
+
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="comment">// clean up memory</span></div>
|
|
218
|
+
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keyword">delete</span> vfg;</div>
|
|
219
|
+
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  AndersenWaveDiff::releaseAndersenWaveDiff();</div>
|
|
220
|
+
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  SVFIR::releaseSVFIR();</div>
|
|
218
221
|
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  </div>
|
|
219
|
-
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span> 
|
|
220
|
-
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <
|
|
221
|
-
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> 
|
|
222
|
+
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  LLVMModuleSet::getLLVMModuleSet()->dumpModulesToFile(<span class="stringliteral">".svf.bc"</span>);</div>
|
|
223
|
+
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">SVF::LLVMModuleSet::releaseLLVMModuleSet</a>();</div>
|
|
224
|
+
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  </div>
|
|
225
|
+
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  llvm::llvm_shutdown();</div>
|
|
226
|
+
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> 0;</div>
|
|
227
|
+
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> }</div>
|
|
222
228
|
</div><!-- fragment -->
|
|
223
229
|
</div>
|
|
224
230
|
</div>
|
|
@@ -274,8 +280,8 @@ Functions</h2></td></tr>
|
|
|
274
280
|
</div><!-- fragment -->
|
|
275
281
|
</div>
|
|
276
282
|
</div>
|
|
277
|
-
<a id="
|
|
278
|
-
<h2 class="memtitle"><span class="permalink"><a href="#
|
|
283
|
+
<a id="a19f3fe331a1e7050a513672a91743b96"></a>
|
|
284
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a19f3fe331a1e7050a513672a91743b96">◆ </a></span>traverseOnICFG()</h2>
|
|
279
285
|
|
|
280
286
|
<div class="memitem">
|
|
281
287
|
<div class="memproto">
|
|
@@ -289,8 +295,8 @@ Functions</h2></td></tr>
|
|
|
289
295
|
<tr>
|
|
290
296
|
<td class="paramkey"></td>
|
|
291
297
|
<td></td>
|
|
292
|
-
<td class="paramtype">const <a class="el" href="
|
|
293
|
-
<td class="paramname"><em>
|
|
298
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> * </td>
|
|
299
|
+
<td class="paramname"><em>iNode</em> </td>
|
|
294
300
|
</tr>
|
|
295
301
|
<tr>
|
|
296
302
|
<td></td>
|
|
@@ -304,28 +310,26 @@ Functions</h2></td></tr>
|
|
|
304
310
|
|
|
305
311
|
<p class="definition">Definition at line <a class="el" href="svf-ex_8cpp_source.html#l00141">141</a> of file <a class="el" href="svf-ex_8cpp_source.html">svf-ex.cpp</a>.</p>
|
|
306
312
|
<div class="fragment"><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> {</div>
|
|
307
|
-
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="
|
|
308
|
-
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="
|
|
309
|
-
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> 
|
|
310
|
-
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> 
|
|
311
|
-
<div class="line"><a name="
|
|
312
|
-
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> 
|
|
313
|
-
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> 
|
|
314
|
-
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="
|
|
315
|
-
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> 
|
|
316
|
-
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> 
|
|
317
|
-
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> 
|
|
318
|
-
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="
|
|
319
|
-
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <
|
|
320
|
-
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> 
|
|
321
|
-
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> 
|
|
322
|
-
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> 
|
|
323
|
-
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> 
|
|
324
|
-
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> 
|
|
325
|
-
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> 
|
|
326
|
-
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> 
|
|
327
|
-
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div>
|
|
328
|
-
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> }</div>
|
|
313
|
+
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const ICFGNode*></a> worklist;</div>
|
|
314
|
+
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const ICFGNode*></a> visited;</div>
|
|
315
|
+
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(iNode);</div>
|
|
316
|
+
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  </div>
|
|
317
|
+
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div>
|
|
318
|
+
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  {</div>
|
|
319
|
+
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* vNode = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div>
|
|
320
|
+
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1ICFGNode.html#ac16c5a3227a44d3b9f7c3209156d9df2">ICFGNode::const_iterator</a> it = vNode-><a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), eit =</div>
|
|
321
|
+
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  vNode-><a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); it != eit; ++it)</div>
|
|
322
|
+
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  {</div>
|
|
323
|
+
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = *it;</div>
|
|
324
|
+
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* succNode = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div>
|
|
325
|
+
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span> (visited.find(succNode) == visited.end())</div>
|
|
326
|
+
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div>
|
|
327
|
+
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  visited.insert(succNode);</div>
|
|
328
|
+
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(succNode);</div>
|
|
329
|
+
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div>
|
|
330
|
+
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div>
|
|
331
|
+
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div>
|
|
332
|
+
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> }</div>
|
|
329
333
|
</div><!-- fragment -->
|
|
330
334
|
</div>
|
|
331
335
|
</div>
|
|
@@ -438,37 +442,37 @@ Functions</h2></td></tr>
|
|
|
438
442
|
<p>Collect all LLVM Values</p>
|
|
439
443
|
<p>can only query VFGNode involving top-level pointers (starting with % or @ in LLVM IR) PAGNode* pNode = vfg->getLHSTopLevPtr(node); SVFValue* val = pNode->getValue();</p>
|
|
440
444
|
|
|
441
|
-
<p class="definition">Definition at line <a class="el" href="svf-ex_8cpp_source.html#
|
|
442
|
-
<div class="fragment"><div class="line"><a name="
|
|
443
|
-
<div class="line"><a name="
|
|
444
|
-
<div class="line"><a name="
|
|
445
|
-
<div class="line"><a name="
|
|
446
|
-
<div class="line"><a name="
|
|
447
|
-
<div class="line"><a name="
|
|
448
|
-
<div class="line"><a name="
|
|
449
|
-
<div class="line"><a name="
|
|
450
|
-
<div class="line"><a name="
|
|
451
|
-
<div class="line"><a name="
|
|
452
|
-
<div class="line"><a name="
|
|
453
|
-
<div class="line"><a name="
|
|
454
|
-
<div class="line"><a name="
|
|
455
|
-
<div class="line"><a name="
|
|
456
|
-
<div class="line"><a name="
|
|
457
|
-
<div class="line"><a name="
|
|
458
|
-
<div class="line"><a name="
|
|
459
|
-
<div class="line"><a name="
|
|
460
|
-
<div class="line"><a name="
|
|
461
|
-
<div class="line"><a name="
|
|
462
|
-
<div class="line"><a name="
|
|
463
|
-
<div class="line"><a name="
|
|
464
|
-
<div class="line"><a name="
|
|
465
|
-
<div class="line"><a name="
|
|
466
|
-
<div class="line"><a name="
|
|
467
|
-
<div class="line"><a name="
|
|
468
|
-
<div class="line"><a name="
|
|
469
|
-
<div class="line"><a name="
|
|
470
|
-
<div class="line"><a name="
|
|
471
|
-
<div class="line"><a name="
|
|
445
|
+
<p class="definition">Definition at line <a class="el" href="svf-ex_8cpp_source.html#l00168">168</a> of file <a class="el" href="svf-ex_8cpp_source.html">svf-ex.cpp</a>.</p>
|
|
446
|
+
<div class="fragment"><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> {</div>
|
|
447
|
+
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = SVFIR::getPAG();</div>
|
|
448
|
+
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  </div>
|
|
449
|
+
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* pNode = pag-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(pag-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(val));</div>
|
|
450
|
+
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* vNode = vfg-><a class="code" href="classSVF_1_1SVFG.html#a8e7a945f4266e8dc7dcfff2ad6494bfb">getDefSVFGNode</a>(pNode);</div>
|
|
451
|
+
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const VFGNode*></a> worklist;</div>
|
|
452
|
+
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const VFGNode*></a> visited;</div>
|
|
453
|
+
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(vNode);</div>
|
|
454
|
+
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  </div>
|
|
455
|
+
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div>
|
|
456
|
+
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  {</div>
|
|
457
|
+
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* vNode = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div>
|
|
458
|
+
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">VFGNode::const_iterator</a> it = vNode-><a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), eit =</div>
|
|
459
|
+
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  vNode-><a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); it != eit; ++it)</div>
|
|
460
|
+
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  {</div>
|
|
461
|
+
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="classSVF_1_1VFGEdge.html">VFGEdge</a>* edge = *it;</div>
|
|
462
|
+
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <a class="code" href="classSVF_1_1VFGNode.html">VFGNode</a>* succNode = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div>
|
|
463
|
+
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">if</span> (visited.find(succNode) == visited.end())</div>
|
|
464
|
+
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  {</div>
|
|
465
|
+
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  visited.insert(succNode);</div>
|
|
466
|
+
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(succNode);</div>
|
|
467
|
+
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div>
|
|
468
|
+
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div>
|
|
469
|
+
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div>
|
|
470
|
+
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  </div>
|
|
471
|
+
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const VFGNode*>::const_iterator</a> it = visited.begin(), eit = visited.end(); it!=eit; ++it)</div>
|
|
472
|
+
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  {</div>
|
|
473
|
+
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// const VFGNode* node = *it;</span></div>
|
|
474
|
+
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="comment"></span> }</div>
|
|
475
|
+
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> }</div>
|
|
472
476
|
</div><!-- fragment -->
|
|
473
477
|
</div>
|
|
474
478
|
</div>
|
|
@@ -492,13 +496,13 @@ Functions</h2></td></tr>
|
|
|
492
496
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a2f8e91c075d90be66412a079fe73e936"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a2f8e91c075d90be66412a079fe73e936">SVF::LLVMModuleSet::releaseLLVMModuleSet</a></div><div class="ttdeci">static void releaseLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00108">LLVMModule.h:108</a></div></div>
|
|
493
497
|
<div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a7c9b7e5fe37ae31ba84d167945ca57df"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">SVF::PointerAnalysis::getPTACallGraph</a></div><div class="ttdeci">PTACallGraph * getPTACallGraph() const</div><div class="ttdoc">Return call graph.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00174">PointerAnalysis.h:174</a></div></div>
|
|
494
498
|
<div class="ttc" id="aclassSVF_1_1RetPE_html"><div class="ttname"><a href="classSVF_1_1RetPE.html">SVF::RetPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00604">SVFStatements.h:604</a></div></div>
|
|
499
|
+
<div class="ttc" id="asvf-ex_8cpp_html_a19f3fe331a1e7050a513672a91743b96"><div class="ttname"><a href="svf-ex_8cpp.html#a19f3fe331a1e7050a513672a91743b96">traverseOnICFG</a></div><div class="ttdeci">void traverseOnICFG(ICFG *icfg, const ICFGNode *iNode)</div><div class="ttdef"><b>Definition:</b> <a href="svf-ex_8cpp_source.html#l00141">svf-ex.cpp:141</a></div></div>
|
|
495
500
|
<div class="ttc" id="aclassSVF_1_1CmpStmt_html"><div class="ttname"><a href="classSVF_1_1CmpStmt.html">SVF::CmpStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00870">SVFStatements.h:870</a></div></div>
|
|
496
501
|
<div class="ttc" id="aclassSVF_1_1VFG_html"><div class="ttname"><a href="classSVF_1_1VFG.html">SVF::VFG</a></div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00050">VFG.h:50</a></div></div>
|
|
497
502
|
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_aac5cc8767eb750bf121f1897788dee24"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#aac5cc8767eb750bf121f1897788dee24">SVF::SVFIR2ItvExeState::translateCmp</a></div><div class="ttdeci">void translateCmp(const CmpStmt *cmp)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00570">SVFIR2ItvExeState.cpp:570</a></div></div>
|
|
498
503
|
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_aa274b5b4e18c28ec8035ca1b073aacfc"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#aa274b5b4e18c28ec8035ca1b073aacfc">SVF::SVFIR2ItvExeState::translateGep</a></div><div class="ttdeci">void translateGep(const GepStmt *gep)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00851">SVFIR2ItvExeState.cpp:851</a></div></div>
|
|
499
504
|
<div class="ttc" id="aclassSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
|
|
500
505
|
<div class="ttc" id="aclassSVF_1_1SVFVar_html_ac2db6304ea5526fb446ae882983beeb0"><div class="ttname"><a href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">SVF::SVFVar::getValue</a></div><div class="ttdeci">const SVFValue * getValue() const</div><div class="ttdoc">Get/has methods of the components.</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00094">SVFVariables.h:94</a></div></div>
|
|
501
|
-
<div class="ttc" id="asvf-ex_8cpp_html_a8fa9e6583c354b1883a32b8abf98779f"><div class="ttname"><a href="svf-ex_8cpp.html#a8fa9e6583c354b1883a32b8abf98779f">traverseOnSVFStmt</a></div><div class="ttdeci">void traverseOnSVFStmt(const ICFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="svf-ex_8cpp_source.html#l00077">svf-ex.cpp:77</a></div></div>
|
|
502
506
|
<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>
|
|
503
507
|
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_ae00e5398cbeb9aa1cfc464da4250a91e"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#ae00e5398cbeb9aa1cfc464da4250a91e">SVF::SVFIR2ItvExeState::translatePhi</a></div><div class="ttdeci">void translatePhi(const PhiStmt *phi)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00911">SVFIR2ItvExeState.cpp:911</a></div></div>
|
|
504
508
|
<div class="ttc" id="aclassSVF_1_1CallPE_html"><div class="ttname"><a href="classSVF_1_1CallPE.html">SVF::CallPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00544">SVFStatements.h:544</a></div></div>
|
|
@@ -512,7 +516,6 @@ Functions</h2></td></tr>
|
|
|
512
516
|
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a449ee8f244120866037c7f6d2ee5fc13"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a449ee8f244120866037c7f6d2ee5fc13">SVF::SVFIR2ItvExeState::translateBinary</a></div><div class="ttdeci">void translateBinary(const BinaryOPStmt *binary)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00508">SVFIR2ItvExeState.cpp:508</a></div></div>
|
|
513
517
|
<div class="ttc" id="aclassSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00221">GenericGraph.h:221</a></div></div>
|
|
514
518
|
<div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a4dfb43679e9fa794ebad99b6584c32ec"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">SVF::PointerAnalysis::getPts</a></div><div class="ttdeci">virtual const PointsTo & getPts(NodeID ptr)=0</div><div class="ttdoc">Get points-to targets of a pointer. It needs to be implemented in child class.</div></div>
|
|
515
|
-
<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>
|
|
516
519
|
<div class="ttc" id="aclassSVF_1_1SVFIRBuilder_html"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html">SVF::SVFIRBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00046">SVFIRBuilder.h:46</a></div></div>
|
|
517
520
|
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_aed2e41879bae8389c49e69356b7aaac5"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#aed2e41879bae8389c49e69356b7aaac5">SVF::SVFIR2ItvExeState::translateStore</a></div><div class="ttdeci">void translateStore(const StoreStmt *store)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00800">SVFIR2ItvExeState.cpp:800</a></div></div>
|
|
518
521
|
<div class="ttc" id="aclassSVF_1_1SVFStmt_html"><div class="ttname"><a href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00051">SVFStatements.h:51</a></div></div>
|