svf-tools 1.0.910 → 1.0.911

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.
Files changed (39) hide show
  1. package/SVF-doxygen/html/AbstractInterpretation_8cpp.html +5 -5
  2. package/SVF-doxygen/html/AbstractInterpretation_8cpp_source.html +1151 -1131
  3. package/SVF-doxygen/html/AbstractInterpretation_8h_source.html +31 -31
  4. package/SVF-doxygen/html/BufOverflowChecker_8cpp_source.html +457 -450
  5. package/SVF-doxygen/html/BufOverflowChecker_8h_source.html +2 -2
  6. package/SVF-doxygen/html/SVFIR2AbsState_8h_source.html +2 -2
  7. package/SVF-doxygen/html/classSVF_1_1AEStat.html +116 -114
  8. package/SVF-doxygen/html/classSVF_1_1AbstractInterpretation-members.html +1 -1
  9. package/SVF-doxygen/html/classSVF_1_1AbstractInterpretation.html +1009 -991
  10. package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker-members.html +1 -1
  11. package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker.html +118 -115
  12. package/SVF-doxygen/html/classSVF_1_1SVFIR2AbsState-members.html +4 -4
  13. package/SVF-doxygen/html/classSVF_1_1SVFIR2AbsState.html +32 -32
  14. package/SVF-doxygen/html/functions.html +2 -2
  15. package/SVF-doxygen/html/functions_func_g.html +13 -13
  16. package/SVF-doxygen/html/functions_g.html +9 -9
  17. package/SVF-doxygen/html/functions_p.html +6 -6
  18. package/SVF-doxygen/html/functions_s.html +7 -7
  19. package/SVF-doxygen/html/functions_t.html +2 -2
  20. package/SVF-doxygen/html/functions_v.html +6 -6
  21. package/SVF-doxygen/html/functions_vars.html +2 -2
  22. package/SVF-doxygen/html/functions_w.html +9 -17
  23. package/SVF-doxygen/html/search/all_0.js +1 -1
  24. package/SVF-doxygen/html/search/all_10.js +3 -3
  25. package/SVF-doxygen/html/search/all_12.js +5 -5
  26. package/SVF-doxygen/html/search/all_13.js +4 -4
  27. package/SVF-doxygen/html/search/all_15.js +3 -3
  28. package/SVF-doxygen/html/search/all_16.js +1 -1
  29. package/SVF-doxygen/html/search/all_7.js +248 -248
  30. package/SVF-doxygen/html/search/functions_10.js +1 -1
  31. package/SVF-doxygen/html/search/functions_7.js +247 -247
  32. package/SVF-doxygen/html/search/variables_0.js +1 -1
  33. package/SVF-doxygen/html/search/variables_12.js +1 -1
  34. package/SVF-doxygen/html/search/variables_13.js +2 -2
  35. package/package.json +1 -1
  36. package/svf/include/AE/Svfexe/AbstractInterpretation.h +1 -1
  37. package/svf/include/AE/Svfexe/SVFIR2AbsState.h +1 -1
  38. package/svf/lib/AE/Svfexe/AbstractInterpretation.cpp +88 -68
  39. package/svf/lib/AE/Svfexe/BufOverflowChecker.cpp +37 -30
@@ -210,9 +210,9 @@ Protected Attributes</h2></td></tr>
210
210
  <tr class="separator:a618fc324a6c205d7e1b471bd850377a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
211
211
  <tr class="memitem:adf3fad75a4f96aefe5c25e3405509fbe"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#adf3fad75a4f96aefe5c25e3405509fbe">_callgraph</a></td></tr>
212
212
  <tr class="separator:adf3fad75a4f96aefe5c25e3405509fbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
213
- <tr class="memitem:af78f068a373ebb6a2f14dcde980a9dae"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1SVFIR2AbsState.html">SVFIR2AbsState</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a></td></tr>
214
- <tr class="memdesc:af78f068a373ebb6a2f14dcde980a9dae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Execution State, used to store the Interval Value of every <a class="el" href="namespaceSVF.html" title="for isBitcode">SVF</a> variable. <a href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">More...</a><br /></td></tr>
215
- <tr class="separator:af78f068a373ebb6a2f14dcde980a9dae"><td class="memSeparator" colspan="2">&#160;</td></tr>
213
+ <tr class="memitem:a9c592b91a1e3d72ada730387232a2fcf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1SVFIR2AbsState.html">SVFIR2AbsState</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a></td></tr>
214
+ <tr class="memdesc:a9c592b91a1e3d72ada730387232a2fcf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Execution State, used to store the Interval Value of every <a class="el" href="namespaceSVF.html" title="for isBitcode">SVF</a> variable. <a href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">More...</a><br /></td></tr>
215
+ <tr class="separator:a9c592b91a1e3d72ada730387232a2fcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
216
216
  <tr class="memitem:a00154ebaceda1be070b38803c1a82535"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1AbstractInterpretation.html#ac0bcb586dffbfadeb33f501cafbaa1c9">AEAPI</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#a00154ebaceda1be070b38803c1a82535">_api</a> {nullptr}</td></tr>
217
217
  <tr class="separator:a00154ebaceda1be070b38803c1a82535"><td class="memSeparator" colspan="2">&#160;</td></tr>
218
218
  <tr class="memitem:ab988e460fe92f0ba3c4cbee8e0c480a0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1ICFG.html">ICFG</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractInterpretation.html#ab988e460fe92f0ba3c4cbee8e0c480a0">_icfg</a></td></tr>
@@ -374,7 +374,7 @@ Friends</h2></td></tr>
374
374
  <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l00129">129</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
375
375
  <div class="fragment"><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;{</div>
376
376
  <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1AbstractInterpretation.html#a75e493e6b9db3e29428794432d293bc2">_stat</a>;</div>
377
- <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>;</div>
377
+ <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>;</div>
378
378
  <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it: <a class="code" href="classSVF_1_1AbstractInterpretation.html#af41aa555a5b607ae7700263ac72f8dbb">_funcToWTO</a>)</div>
379
379
  <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keyword">delete</span> it.second;</div>
380
380
  <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; </div>
@@ -423,38 +423,38 @@ Friends</h2></td></tr>
423
423
  </table>
424
424
  </div><div class="memdoc">
425
425
 
426
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01731">1731</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
427
- <div class="fragment"><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;{</div>
428
- <div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; std::vector&lt;const CallICFGNode *&gt; callstack = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9885b50cf28b65bebb488442085fab26">_callSiteStack</a>;</div>
429
- <div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; <a class="code" href="classSVF_1_1ValVar.html">SVF::ValVar</a> *arg_gnode = SVFUtil::cast&lt;ValVar&gt;(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(arg)));</div>
430
- <div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; <span class="keywordflow">if</span> (arg_gnode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">hasIncomingEdges</a>(SVFStmt::PEDGEK::Call))</div>
431
- <div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; {</div>
432
- <div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; <span class="keywordflow">while</span> (!callstack.empty())</div>
433
- <div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; {</div>
434
- <div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *cur_call = callstack.back();</div>
435
- <div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; callstack.pop_back();</div>
436
- <div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt: cur_call-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div>
437
- <div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; {</div>
438
- <div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> *callPE = SVFUtil::dyn_cast&lt;CallPE&gt;(stmt))</div>
439
- <div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; {</div>
440
- <div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; <span class="keywordflow">if</span> (callPE-&gt;getLHSVarID() == <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(arg))</div>
441
- <div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160; {</div>
442
- <div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;DummyObjVar&gt;(callPE-&gt;getRHSVar()) &amp;&amp;</div>
443
- <div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; !SVFUtil::isa&lt;DummyValVar&gt;(callPE-&gt;getRHSVar()))</div>
444
- <div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; {</div>
445
- <div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; <span class="keywordflow">if</span> (!visited.count(callPE-&gt;getRHSVar()-&gt;getValue()))</div>
446
- <div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; {</div>
447
- <div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; visited.insert(callPE-&gt;getRHSVar()-&gt;getValue());</div>
448
- <div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(callPE-&gt;getRHSVar()-&gt;getValue());</div>
449
- <div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160; <span class="keywordflow">break</span>;</div>
450
- <div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160; }</div>
451
- <div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160; }</div>
452
- <div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160; }</div>
453
- <div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; }</div>
454
- <div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; }</div>
455
- <div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; }</div>
456
- <div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160; }</div>
457
- <div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;}</div>
426
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01751">1751</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
427
+ <div class="fragment"><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160;{</div>
428
+ <div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; std::vector&lt;const CallICFGNode *&gt; callstack = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9885b50cf28b65bebb488442085fab26">_callSiteStack</a>;</div>
429
+ <div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160; <a class="code" href="classSVF_1_1ValVar.html">SVF::ValVar</a> *arg_gnode = SVFUtil::cast&lt;ValVar&gt;(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(arg)));</div>
430
+ <div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160; <span class="keywordflow">if</span> (arg_gnode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">hasIncomingEdges</a>(SVFStmt::PEDGEK::Call))</div>
431
+ <div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160; {</div>
432
+ <div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160; <span class="keywordflow">while</span> (!callstack.empty())</div>
433
+ <div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; {</div>
434
+ <div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *cur_call = callstack.back();</div>
435
+ <div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; callstack.pop_back();</div>
436
+ <div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt: cur_call-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div>
437
+ <div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160; {</div>
438
+ <div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> *callPE = SVFUtil::dyn_cast&lt;CallPE&gt;(stmt))</div>
439
+ <div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; {</div>
440
+ <div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; <span class="keywordflow">if</span> (callPE-&gt;getLHSVarID() == <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(arg))</div>
441
+ <div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; {</div>
442
+ <div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;DummyObjVar&gt;(callPE-&gt;getRHSVar()) &amp;&amp;</div>
443
+ <div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; !SVFUtil::isa&lt;DummyValVar&gt;(callPE-&gt;getRHSVar()))</div>
444
+ <div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; {</div>
445
+ <div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160; <span class="keywordflow">if</span> (!visited.count(callPE-&gt;getRHSVar()-&gt;getValue()))</div>
446
+ <div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; {</div>
447
+ <div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160; visited.insert(callPE-&gt;getRHSVar()-&gt;getValue());</div>
448
+ <div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(callPE-&gt;getRHSVar()-&gt;getValue());</div>
449
+ <div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; <span class="keywordflow">break</span>;</div>
450
+ <div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; }</div>
451
+ <div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160; }</div>
452
+ <div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; }</div>
453
+ <div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; }</div>
454
+ <div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; }</div>
455
+ <div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; }</div>
456
+ <div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; }</div>
457
+ <div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160;}</div>
458
458
  </div><!-- fragment -->
459
459
  </div>
460
460
  </div>
@@ -498,14 +498,14 @@ Friends</h2></td></tr>
498
498
  </table>
499
499
  </div><div class="memdoc">
500
500
 
501
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01702">1702</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
502
- <div class="fragment"><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;{</div>
503
- <div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; <span class="keywordflow">if</span> (!visited.count(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVar()-&gt;getValue()))</div>
504
- <div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; {</div>
505
- <div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; visited.insert(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVar()-&gt;getValue());</div>
506
- <div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVar()-&gt;getValue());</div>
507
- <div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; }</div>
508
- <div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160;}</div>
501
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01721">1721</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
502
+ <div class="fragment"><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;{</div>
503
+ <div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; <span class="keywordflow">if</span> (!visited.count(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVar()-&gt;getValue()))</div>
504
+ <div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; {</div>
505
+ <div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; visited.insert(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVar()-&gt;getValue());</div>
506
+ <div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVar()-&gt;getValue());</div>
507
+ <div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; }</div>
508
+ <div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160;}</div>
509
509
  </div><!-- fragment -->
510
510
  </div>
511
511
  </div>
@@ -549,25 +549,26 @@ Friends</h2></td></tr>
549
549
  </table>
550
550
  </div><div class="memdoc">
551
551
 
552
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01711">1711</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
553
- <div class="fragment"><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160;{</div>
554
- <div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(load-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>()))</div>
555
- <div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; {</div>
556
- <div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; <span class="keyword">const</span> <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> &amp;Addrs = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(load-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div>
557
- <div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> vaddr: Addrs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>())</div>
558
- <div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; {</div>
559
- <div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">getInternalID</a>(vaddr);</div>
560
- <div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; <span class="keywordflow">if</span> (<span class="keywordtype">id</span> == 0) <span class="comment">// nullptr has no memobj, skip</span></div>
561
- <div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160; <span class="keywordflow">continue</span>;</div>
562
- <div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> *val = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div>
563
- <div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; <span class="keywordflow">if</span> (!visited.count(val-&gt;getValue()))</div>
564
- <div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; {</div>
565
- <div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; visited.insert(val-&gt;getValue());</div>
566
- <div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(val-&gt;getValue());</div>
567
- <div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; }</div>
568
- <div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; }</div>
569
- <div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; }</div>
570
- <div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160;}</div>
552
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01730">1730</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
553
+ <div class="fragment"><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;{</div>
554
+ <div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(load-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>()))</div>
555
+ <div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; {</div>
556
+ <div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; <span class="keyword">const</span> <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> &amp;Addrs =</div>
557
+ <div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(load-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div>
558
+ <div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> vaddr: Addrs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>())</div>
559
+ <div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; {</div>
560
+ <div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">getInternalID</a>(vaddr);</div>
561
+ <div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; <span class="keywordflow">if</span> (<span class="keywordtype">id</span> == 0) <span class="comment">// nullptr has no memobj, skip</span></div>
562
+ <div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; <span class="keywordflow">continue</span>;</div>
563
+ <div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> *val = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<span class="keywordtype">id</span>);</div>
564
+ <div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; <span class="keywordflow">if</span> (!visited.count(val-&gt;getValue()))</div>
565
+ <div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; {</div>
566
+ <div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; visited.insert(val-&gt;getValue());</div>
567
+ <div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(val-&gt;getValue());</div>
568
+ <div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; }</div>
569
+ <div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; }</div>
570
+ <div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160; }</div>
571
+ <div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;}</div>
571
572
  </div><!-- fragment -->
572
573
  </div>
573
574
  </div>
@@ -611,30 +612,30 @@ Friends</h2></td></tr>
611
612
  </table>
612
613
  </div><div class="memdoc">
613
614
 
614
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01677">1677</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
615
- <div class="fragment"><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;{</div>
616
- <div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; <span class="keywordflow">if</span> (callnode-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#ae23a7540609879ac0379fc53b4e7eead">getRetICFGNode</a>()-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>().size() &gt; 0)</div>
617
- <div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; {</div>
618
- <div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> *ret = SVFUtil::dyn_cast&lt;RetPE&gt;(*callnode-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#ae23a7540609879ac0379fc53b4e7eead">getRetICFGNode</a>()-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>().begin());</div>
619
- <div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160; <a class="code" href="classSVF_1_1ValVar.html">SVF::ValVar</a> *ret_gnode = SVFUtil::dyn_cast&lt;ValVar&gt;(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(ret-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28">getRHSVar</a>()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()));</div>
620
- <div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160; <span class="keywordflow">if</span> (ret_gnode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">hasIncomingEdges</a>(SVFStmt::PEDGEK::Phi))</div>
621
- <div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; {</div>
622
- <div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a> &amp;stmt_set = ret_gnode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6">getIncomingEdges</a>(SVFStmt::PEDGEK::Phi);</div>
623
- <div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = stmt_set.begin(); it != stmt_set.end(); ++it)</div>
624
- <div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160; {</div>
625
- <div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt = *it;</div>
626
- <div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> *phi = SVFUtil::dyn_cast&lt;PhiStmt&gt;(stmt))</div>
627
- <div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; {</div>
628
- <div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; <span class="keywordflow">if</span> (!visited.count(phi-&gt;getOpVar(0)-&gt;getValue()))</div>
629
- <div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; {</div>
630
- <div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(phi-&gt;getOpVar(0)-&gt;getValue());</div>
631
- <div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; visited.insert(phi-&gt;getOpVar(0)-&gt;getValue());</div>
632
- <div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160; }</div>
633
- <div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160; }</div>
634
- <div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; }</div>
635
- <div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; }</div>
636
- <div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; }</div>
637
- <div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;}</div>
615
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01696">1696</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
616
+ <div class="fragment"><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160;{</div>
617
+ <div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; <span class="keywordflow">if</span> (callnode-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#ae23a7540609879ac0379fc53b4e7eead">getRetICFGNode</a>()-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>().size() &gt; 0)</div>
618
+ <div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; {</div>
619
+ <div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> *ret = SVFUtil::dyn_cast&lt;RetPE&gt;(*callnode-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#ae23a7540609879ac0379fc53b4e7eead">getRetICFGNode</a>()-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>().begin());</div>
620
+ <div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; <a class="code" href="classSVF_1_1ValVar.html">SVF::ValVar</a> *ret_gnode = SVFUtil::dyn_cast&lt;ValVar&gt;(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(ret-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28">getRHSVar</a>()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()));</div>
621
+ <div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; <span class="keywordflow">if</span> (ret_gnode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">hasIncomingEdges</a>(SVFStmt::PEDGEK::Phi))</div>
622
+ <div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160; {</div>
623
+ <div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a> &amp;stmt_set = ret_gnode-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6">getIncomingEdges</a>(SVFStmt::PEDGEK::Phi);</div>
624
+ <div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = stmt_set.begin(); it != stmt_set.end(); ++it)</div>
625
+ <div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; {</div>
626
+ <div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt = *it;</div>
627
+ <div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> *phi = SVFUtil::dyn_cast&lt;PhiStmt&gt;(stmt))</div>
628
+ <div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; {</div>
629
+ <div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; <span class="keywordflow">if</span> (!visited.count(phi-&gt;getOpVar(0)-&gt;getValue()))</div>
630
+ <div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; {</div>
631
+ <div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(phi-&gt;getOpVar(0)-&gt;getValue());</div>
632
+ <div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; visited.insert(phi-&gt;getOpVar(0)-&gt;getValue());</div>
633
+ <div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; }</div>
634
+ <div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; }</div>
635
+ <div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; }</div>
636
+ <div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; }</div>
637
+ <div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; }</div>
638
+ <div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;}</div>
638
639
  </div><!-- fragment -->
639
640
  </div>
640
641
  </div>
@@ -659,7 +660,7 @@ Friends</h2></td></tr>
659
660
  <div class="fragment"><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;{</div>
660
661
  <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="comment">// handle Global ICFGNode of SVFModule</span></div>
661
662
  <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a276182afcfe95235ebd2d452424e87e7">handleGlobalNode</a>();</div>
662
- <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>()[<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3b417ee79560fd00f4cf80906044c198">getBlkPtr</a>()] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
663
+ <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>()[<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3b417ee79560fd00f4cf80906044c198">getBlkPtr</a>()] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
663
664
  <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ad6e18f520f6b559f2304002792f6b701">getModule</a>()-&gt;<a class="code" href="classSVF_1_1SVFModule.html#afdb11f5fcbb6e7ed2689e3387bb78850">getSVFFunction</a>(<span class="stringliteral">&quot;main&quot;</span>))</div>
664
665
  <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; {</div>
665
666
  <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a2e2253149e2bf114825a4e838118e012">handleFunc</a>(fun);</div>
@@ -691,23 +692,23 @@ Friends</h2></td></tr>
691
692
  </table>
692
693
  </div><div class="memdoc">
693
694
 
694
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01255">1255</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
695
- <div class="fragment"><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;{</div>
696
- <div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractInterpretation.html#a219313e979d779221116c1bc45becc1b">_checkpoints</a>.size() == 0)</div>
697
- <div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; {</div>
698
- <div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; <span class="keywordflow">return</span>;</div>
699
- <div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; }</div>
700
- <div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; <span class="keywordflow">else</span></div>
701
- <div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; {</div>
702
- <div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a05dc00b2bd9a8176aae31b6cfffe725d">SVFUtil::sucMsg</a>(<span class="stringliteral">&quot;There exists checkpoints not checked!!\n&quot;</span>);</div>
703
- <div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* call: <a class="code" href="classSVF_1_1AbstractInterpretation.html#a219313e979d779221116c1bc45becc1b">_checkpoints</a>)</div>
704
- <div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; {</div>
705
- <div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a05dc00b2bd9a8176aae31b6cfffe725d">SVFUtil::sucMsg</a>(call-&gt;toString() + <span class="stringliteral">&quot;\n&quot;</span>);</div>
706
- <div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; }</div>
707
- <div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; assert(<span class="keyword">false</span>);</div>
708
- <div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; }</div>
709
- <div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; </div>
710
- <div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;}</div>
695
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01265">1265</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
696
+ <div class="fragment"><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;{</div>
697
+ <div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractInterpretation.html#a219313e979d779221116c1bc45becc1b">_checkpoints</a>.size() == 0)</div>
698
+ <div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; {</div>
699
+ <div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; <span class="keywordflow">return</span>;</div>
700
+ <div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; }</div>
701
+ <div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; <span class="keywordflow">else</span></div>
702
+ <div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; {</div>
703
+ <div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a05dc00b2bd9a8176aae31b6cfffe725d">SVFUtil::sucMsg</a>(<span class="stringliteral">&quot;There exists checkpoints not checked!!\n&quot;</span>);</div>
704
+ <div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* call: <a class="code" href="classSVF_1_1AbstractInterpretation.html#a219313e979d779221116c1bc45becc1b">_checkpoints</a>)</div>
705
+ <div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; {</div>
706
+ <div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a05dc00b2bd9a8176aae31b6cfffe725d">SVFUtil::sucMsg</a>(call-&gt;toString() + <span class="stringliteral">&quot;\n&quot;</span>);</div>
707
+ <div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; }</div>
708
+ <div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; assert(<span class="keyword">false</span>);</div>
709
+ <div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; }</div>
710
+ <div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; </div>
711
+ <div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;}</div>
711
712
  </div><!-- fragment -->
712
713
  </div>
713
714
  </div>
@@ -765,24 +766,24 @@ Friends</h2></td></tr>
765
766
  </table>
766
767
  </div><div class="memdoc">
767
768
 
768
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01236">1236</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
769
- <div class="fragment"><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;{</div>
770
- <div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="comment">// traverse every ICFGNode</span></div>
771
- <div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div>
772
- <div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; {</div>
773
- <div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* node = it-&gt;second;</div>
774
- <div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *call = SVFUtil::dyn_cast&lt;CallICFGNode&gt;(node))</div>
775
- <div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; {</div>
776
- <div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(call-&gt;getCallSite()))</div>
777
- <div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; {</div>
778
- <div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractInterpretation.html#a2a1e1b72ed740cef4c3e57e3e32c3f75">_checkpoint_names</a>.find(fun-&gt;getName()) != <a class="code" href="classSVF_1_1AbstractInterpretation.html#a2a1e1b72ed740cef4c3e57e3e32c3f75">_checkpoint_names</a>.end())</div>
779
- <div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; {</div>
780
- <div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a219313e979d779221116c1bc45becc1b">_checkpoints</a>.insert(call);</div>
781
- <div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; }</div>
782
- <div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; }</div>
783
- <div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; }</div>
784
- <div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; }</div>
785
- <div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;}</div>
769
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01246">1246</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
770
+ <div class="fragment"><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;{</div>
771
+ <div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; <span class="comment">// traverse every ICFGNode</span></div>
772
+ <div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++it)</div>
773
+ <div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; {</div>
774
+ <div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* node = it-&gt;second;</div>
775
+ <div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *call = SVFUtil::dyn_cast&lt;CallICFGNode&gt;(node))</div>
776
+ <div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; {</div>
777
+ <div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(call-&gt;getCallSite()))</div>
778
+ <div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; {</div>
779
+ <div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractInterpretation.html#a2a1e1b72ed740cef4c3e57e3e32c3f75">_checkpoint_names</a>.find(fun-&gt;getName()) != <a class="code" href="classSVF_1_1AbstractInterpretation.html#a2a1e1b72ed740cef4c3e57e3e32c3f75">_checkpoint_names</a>.end())</div>
780
+ <div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; {</div>
781
+ <div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a219313e979d779221116c1bc45becc1b">_checkpoints</a>.insert(call);</div>
782
+ <div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; }</div>
783
+ <div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; }</div>
784
+ <div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; }</div>
785
+ <div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; }</div>
786
+ <div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;}</div>
786
787
  </div><!-- fragment -->
787
788
  </div>
788
789
  </div>
@@ -813,10 +814,10 @@ Friends</h2></td></tr>
813
814
  <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l00622">622</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
814
815
  <div class="fragment"><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;{</div>
815
816
  <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *callfun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(callNode-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
816
- <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> preES = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>();</div>
817
+ <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> preES = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
817
818
  <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9885b50cf28b65bebb488442085fab26">_callSiteStack</a>.push_back(callNode);</div>
818
819
  <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; </div>
819
- <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[callNode] = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>();</div>
820
+ <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[callNode] = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
820
821
  <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; </div>
821
822
  <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a2e2253149e2bf114825a4e838118e012">handleFunc</a>(callfun);</div>
822
823
  <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9885b50cf28b65bebb488442085fab26">_callSiteStack</a>.pop_back();</div>
@@ -893,38 +894,40 @@ Friends</h2></td></tr>
893
894
  </dl>
894
895
  <dl class="section return"><dt>Returns</dt><dd>the byte size e.g. int32_t a[10] -&gt; return 40 </dd></dl>
895
896
 
896
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01286">1286</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
897
- <div class="fragment"><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;{</div>
898
- <div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>* objvar = SVFUtil::dyn_cast&lt;ObjVar&gt;(addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28">getRHSVar</a>()))</div>
899
- <div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; {</div>
900
- <div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; objvar-&gt;getType();</div>
901
- <div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <span class="keywordflow">if</span> (objvar-&gt;getMemObj()-&gt;isConstantByteSize())</div>
902
- <div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; {</div>
903
- <div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> sz = objvar-&gt;getMemObj()-&gt;getByteSizeOfObj();</div>
904
- <div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; <span class="keywordflow">return</span> sz;</div>
905
- <div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; }</div>
906
- <div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; </div>
907
- <div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; <span class="keywordflow">else</span></div>
908
- <div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; {</div>
909
- <div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; <span class="keyword">const</span> std::vector&lt;SVFValue*&gt;&amp; sizes = addr-&gt;<a class="code" href="classSVF_1_1AddrStmt.html#a7fe84b92317fb93914053cc48d313acc">getArrSize</a>();</div>
910
- <div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; <span class="comment">// Default element size is set to 1.</span></div>
911
- <div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elementSize = 1;</div>
912
- <div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> res = elementSize;</div>
913
- <div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* value: sizes)</div>
914
- <div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; {</div>
915
- <div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">inVarToValTable</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(value)))</div>
916
- <div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; {</div>
917
- <div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>()[<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(value)] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>());</div>
918
- <div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; }</div>
919
- <div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> itv = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>()[<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(value)];</div>
920
- <div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; res = res * itv.<a class="code" href="structSVF_1_1AbstractValue.html#aecd8d41379dd6496772537ad51d1cb02">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>() &gt; <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>()? <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(): res * itv.ub().getIntNumeral();</div>
921
- <div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; }</div>
922
- <div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a>)res;</div>
923
- <div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; }</div>
924
- <div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; }</div>
925
- <div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; assert (<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;Addr rhs value is not ObjVar&quot;</span>);</div>
926
- <div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; abort();</div>
927
- <div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;}</div>
897
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01296">1296</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
898
+ <div class="fragment"><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;{</div>
899
+ <div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a>* objvar = SVFUtil::dyn_cast&lt;ObjVar&gt;(addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28">getRHSVar</a>()))</div>
900
+ <div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; {</div>
901
+ <div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; objvar-&gt;getType();</div>
902
+ <div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; <span class="keywordflow">if</span> (objvar-&gt;getMemObj()-&gt;isConstantByteSize())</div>
903
+ <div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; {</div>
904
+ <div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> sz = objvar-&gt;getMemObj()-&gt;getByteSizeOfObj();</div>
905
+ <div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; <span class="keywordflow">return</span> sz;</div>
906
+ <div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; }</div>
907
+ <div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; </div>
908
+ <div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; <span class="keywordflow">else</span></div>
909
+ <div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; {</div>
910
+ <div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <span class="keyword">const</span> std::vector&lt;SVFValue*&gt;&amp; sizes = addr-&gt;<a class="code" href="classSVF_1_1AddrStmt.html#a7fe84b92317fb93914053cc48d313acc">getArrSize</a>();</div>
911
+ <div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; <span class="comment">// Default element size is set to 1.</span></div>
912
+ <div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elementSize = 1;</div>
913
+ <div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> res = elementSize;</div>
914
+ <div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* value: sizes)</div>
915
+ <div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; {</div>
916
+ <div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">inVarToValTable</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(value)))</div>
917
+ <div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; {</div>
918
+ <div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a></div>
919
+ <div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; -&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>()[<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(value)] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>());</div>
920
+ <div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; }</div>
921
+ <div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> itv =</div>
922
+ <div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>()[<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(value)];</div>
923
+ <div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; res = res * itv.<a class="code" href="structSVF_1_1AbstractValue.html#aecd8d41379dd6496772537ad51d1cb02">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>() &gt; <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>()? <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(): res * itv.ub().getIntNumeral();</div>
924
+ <div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; }</div>
925
+ <div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a>)res;</div>
926
+ <div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; }</div>
927
+ <div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; }</div>
928
+ <div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; assert (<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;Addr rhs value is not ObjVar&quot;</span>);</div>
929
+ <div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; abort();</div>
930
+ <div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;}</div>
928
931
  </div><!-- fragment -->
929
932
  </div>
930
933
  </div>
@@ -988,25 +991,25 @@ Friends</h2></td></tr>
988
991
  </dd>
989
992
  </dl>
990
993
 
991
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01602">1602</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
992
- <div class="fragment"><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160;{</div>
993
- <div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(<span class="keywordtype">id</span>))</div>
994
- <div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; {</div>
995
- <div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; <span class="keyword">const</span> <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a>&amp; addrs = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(<span class="keywordtype">id</span>);</div>
996
- <div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> addr: addrs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>())</div>
997
- <div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; {</div>
998
- <div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> addr_id = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">getInternalID</a>(addr);</div>
999
- <div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; <span class="keywordflow">if</span> (addr_id == 0) <span class="comment">// nullptr has no memobj, skip</span></div>
1000
- <div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; <span class="keywordflow">continue</span>;</div>
1001
- <div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; <span class="keywordflow">return</span> SVFUtil::dyn_cast&lt;ObjVar&gt;(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(addr_id))-&gt;getMemObj()-&gt;getType();</div>
1002
- <div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; }</div>
1003
- <div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; }</div>
1004
- <div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; <span class="keywordflow">else</span></div>
1005
- <div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; {</div>
1006
- <div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; <span class="comment">// do nothing if no record in addrs table.</span></div>
1007
- <div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; }</div>
1008
- <div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
1009
- <div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;}</div>
994
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01620">1620</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
995
+ <div class="fragment"><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160;{</div>
996
+ <div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(<span class="keywordtype">id</span>))</div>
997
+ <div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; {</div>
998
+ <div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; <span class="keyword">const</span> <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a>&amp; addrs = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(<span class="keywordtype">id</span>);</div>
999
+ <div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> addr: addrs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>())</div>
1000
+ <div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; {</div>
1001
+ <div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> addr_id = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">getInternalID</a>(addr);</div>
1002
+ <div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; <span class="keywordflow">if</span> (addr_id == 0) <span class="comment">// nullptr has no memobj, skip</span></div>
1003
+ <div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; <span class="keywordflow">continue</span>;</div>
1004
+ <div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; <span class="keywordflow">return</span> SVFUtil::dyn_cast&lt;ObjVar&gt;(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(addr_id))-&gt;getMemObj()-&gt;getType();</div>
1005
+ <div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; }</div>
1006
+ <div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; }</div>
1007
+ <div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; <span class="keywordflow">else</span></div>
1008
+ <div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160; {</div>
1009
+ <div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; <span class="comment">// do nothing if no record in addrs table.</span></div>
1010
+ <div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; }</div>
1011
+ <div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
1012
+ <div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;}</div>
1010
1013
  </div><!-- fragment -->
1011
1014
  </div>
1012
1015
  </div>
@@ -1042,62 +1045,63 @@ Friends</h2></td></tr>
1042
1045
  </dl>
1043
1046
  <dl class="section return"><dt>Returns</dt><dd><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> of string length </dd></dl>
1044
1047
 
1045
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01451">1451</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
1046
- <div class="fragment"><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;{</div>
1047
- <div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a>&amp;es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>();</div>
1048
- <div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> dst_size = <a class="code" href="classSVF_1_1AbstractInterpretation.html#ac9e8bc430cd530e47811e28f5a9fe963">traceMemoryAllocationSize</a>(strValue);</div>
1049
- <div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> len = 0;</div>
1050
- <div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstid = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(strValue);</div>
1051
- <div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elemSize = 1;</div>
1052
- <div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(dstid))</div>
1053
- <div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; {</div>
1054
- <div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = 0; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> &lt; dst_size.<a class="code" href="structSVF_1_1AbstractValue.html#a6c979397d4efb5b37e3b2bf9feba5648">lb</a>().getIntNumeral(); <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>++)</div>
1055
- <div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; {</div>
1056
- <div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> expr0 = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a10a83572bf5dee369b54cda74f402073">getGepObjAddress</a>(dstid, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>);</div>
1057
- <div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> val(<a class="code" href="structSVF_1_1AbstractValue.html#af93f4b54b34e74579ad177ead629b53aa3a7df767184a0bf01de99351747f545a">AbstractValue::UnknownType</a>);</div>
1058
- <div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: expr0.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>())</div>
1059
- <div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; {</div>
1060
- <div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; val.join_with(es.<a class="code" href="classSVF_1_1AbstractState.html#aa057c4c27e613d239161c04daf3a46d0">load</a>(addr));</div>
1061
- <div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; }</div>
1062
- <div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; <span class="keywordflow">if</span> (val.isUnknown())</div>
1063
- <div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; {</div>
1064
- <div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)0, (<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>());</div>
1065
- <div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; }</div>
1066
- <div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; <span class="keywordflow">if</span> (val.is_numeral() &amp;&amp; (<span class="keywordtype">char</span>) val.getIntNumeral() == <span class="charliteral">&#39;\0&#39;</span>)</div>
1067
- <div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; {</div>
1068
- <div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; <span class="keywordflow">break</span>;</div>
1069
- <div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; }</div>
1070
- <div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; ++len;</div>
1071
- <div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; }</div>
1072
- <div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; <span class="keywordflow">if</span> (strValue-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a330084f9a3deb6e5acb52a8ee3eb7fe4">isArrayTy</a>())</div>
1073
- <div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; {</div>
1074
- <div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; elemSize = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(strValue-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>())-&gt;getTypeOfElement()-&gt;getByteSize();</div>
1075
- <div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; }</div>
1076
- <div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strValue-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">isPointerTy</a>())</div>
1077
- <div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; {</div>
1078
- <div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a2057e8e1c0aaf39e74f0a8fb2a1b580c">getPointeeElement</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(strValue)))</div>
1079
- <div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; {</div>
1080
- <div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; elemSize = elemType-&gt;getByteSize();</div>
1081
- <div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; }</div>
1082
- <div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; <span class="keywordflow">else</span></div>
1083
- <div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; {</div>
1084
- <div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; elemSize = 1;</div>
1085
- <div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; }</div>
1086
- <div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; }</div>
1087
- <div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; <span class="keywordflow">else</span></div>
1088
- <div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; {</div>
1089
- <div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;we cannot support this type&quot;</span>);</div>
1090
- <div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; }</div>
1091
- <div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; }</div>
1092
- <div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; <span class="keywordflow">if</span> (len == 0)</div>
1093
- <div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; {</div>
1094
- <div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)0, (<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>());</div>
1095
- <div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; }</div>
1096
- <div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; <span class="keywordflow">else</span></div>
1097
- <div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; {</div>
1098
- <div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(len * elemSize);</div>
1099
- <div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; }</div>
1100
- <div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;}</div>
1048
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01464">1464</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
1049
+ <div class="fragment"><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;{</div>
1050
+ <div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a>&amp;es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
1051
+ <div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> dst_size = <a class="code" href="classSVF_1_1AbstractInterpretation.html#ac9e8bc430cd530e47811e28f5a9fe963">traceMemoryAllocationSize</a>(strValue);</div>
1052
+ <div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> len = 0;</div>
1053
+ <div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstid = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(strValue);</div>
1054
+ <div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elemSize = 1;</div>
1055
+ <div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(dstid))</div>
1056
+ <div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; {</div>
1057
+ <div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = 0; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> &lt; dst_size.<a class="code" href="structSVF_1_1AbstractValue.html#a6c979397d4efb5b37e3b2bf9feba5648">lb</a>().getIntNumeral(); <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>++)</div>
1058
+ <div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; {</div>
1059
+ <div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> expr0 =</div>
1060
+ <div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a10a83572bf5dee369b54cda74f402073">getGepObjAddress</a>(dstid, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>);</div>
1061
+ <div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> val(<a class="code" href="structSVF_1_1AbstractValue.html#af93f4b54b34e74579ad177ead629b53aa3a7df767184a0bf01de99351747f545a">AbstractValue::UnknownType</a>);</div>
1062
+ <div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: expr0.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>())</div>
1063
+ <div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; {</div>
1064
+ <div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; val.join_with(es.<a class="code" href="classSVF_1_1AbstractState.html#aa057c4c27e613d239161c04daf3a46d0">load</a>(addr));</div>
1065
+ <div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; }</div>
1066
+ <div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; <span class="keywordflow">if</span> (val.isUnknown())</div>
1067
+ <div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; {</div>
1068
+ <div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)0, (<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>());</div>
1069
+ <div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; }</div>
1070
+ <div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; <span class="keywordflow">if</span> (val.is_numeral() &amp;&amp; (<span class="keywordtype">char</span>) val.getIntNumeral() == <span class="charliteral">&#39;\0&#39;</span>)</div>
1071
+ <div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; {</div>
1072
+ <div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; <span class="keywordflow">break</span>;</div>
1073
+ <div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; }</div>
1074
+ <div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; ++len;</div>
1075
+ <div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; }</div>
1076
+ <div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; <span class="keywordflow">if</span> (strValue-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a330084f9a3deb6e5acb52a8ee3eb7fe4">isArrayTy</a>())</div>
1077
+ <div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; {</div>
1078
+ <div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; elemSize = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(strValue-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>())-&gt;getTypeOfElement()-&gt;getByteSize();</div>
1079
+ <div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; }</div>
1080
+ <div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strValue-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">isPointerTy</a>())</div>
1081
+ <div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; {</div>
1082
+ <div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a2057e8e1c0aaf39e74f0a8fb2a1b580c">getPointeeElement</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(strValue)))</div>
1083
+ <div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; {</div>
1084
+ <div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; elemSize = elemType-&gt;getByteSize();</div>
1085
+ <div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; }</div>
1086
+ <div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; <span class="keywordflow">else</span></div>
1087
+ <div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; {</div>
1088
+ <div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; elemSize = 1;</div>
1089
+ <div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; }</div>
1090
+ <div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; }</div>
1091
+ <div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; <span class="keywordflow">else</span></div>
1092
+ <div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; {</div>
1093
+ <div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;we cannot support this type&quot;</span>);</div>
1094
+ <div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; }</div>
1095
+ <div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; }</div>
1096
+ <div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; <span class="keywordflow">if</span> (len == 0)</div>
1097
+ <div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; {</div>
1098
+ <div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)0, (<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>());</div>
1099
+ <div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; }</div>
1100
+ <div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; <span class="keywordflow">else</span></div>
1101
+ <div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; {</div>
1102
+ <div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(len * elemSize);</div>
1103
+ <div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; }</div>
1104
+ <div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160;}</div>
1101
1105
  </div><!-- fragment -->
1102
1106
  </div>
1103
1107
  </div>
@@ -1198,70 +1202,70 @@ Friends</h2></td></tr>
1198
1202
  </dd>
1199
1203
  </dl>
1200
1204
 
1201
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l00694">694</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
1202
- <div class="fragment"><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;{</div>
1203
- <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="comment">// Get execution states from in edges</span></div>
1204
- <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1AbstractInterpretation.html#a3a12a86670eef9cd22b1853c7c6fa208">propagateStateIfFeasible</a>(cycle-&gt;<a class="code" href="classSVF_1_1WTOCycle.html#ace60ecb07603681de5c3020d0d3c5079">head</a>()))</div>
1205
- <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; {</div>
1206
- <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="comment">// No ES on the in edges - Infeasible block</span></div>
1207
- <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">return</span>;</div>
1208
- <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; }</div>
1209
- <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> pre_es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#ac97c5979efd3049d18b6edb83f359a20">_preAbstractTrace</a>[cycle-&gt;<a class="code" href="classSVF_1_1WTOCycle.html#ace60ecb07603681de5c3020d0d3c5079">head</a>()];</div>
1210
- <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="comment">// set -widen-delay</span></div>
1211
- <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> widen_delay = <a class="code" href="classSVF_1_1Options.html#ab25f7ec430ba1d41597fc409b758b193">Options::WidenDelay</a>();</div>
1212
- <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordtype">bool</span> incresing = <span class="keyword">true</span>;</div>
1213
- <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; ; i++)</div>
1214
- <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; {</div>
1215
- <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* cycle_head = cycle-&gt;<a class="code" href="classSVF_1_1WTOCycle.html#ace60ecb07603681de5c3020d0d3c5079">head</a>();</div>
1216
- <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="comment">// handle cycle head</span></div>
1217
- <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a80d663262a8d909ef5756391cdd82246">handleWTONode</a>(cycle_head);</div>
1218
- <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">if</span> (i &lt; widen_delay)</div>
1219
- <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; {</div>
1220
- <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">if</span> (i&gt; 0 &amp;&amp; pre_es &gt;= <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[cycle_head])</div>
1221
- <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; {</div>
1222
- <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">break</span>;</div>
1223
- <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; }</div>
1224
- <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; pre_es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[cycle_head];</div>
1225
- <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; }</div>
1226
- <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">else</span></div>
1227
- <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; {</div>
1228
- <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordflow">if</span> (i &gt;= widen_delay)</div>
1229
- <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; {</div>
1230
- <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">if</span> (incresing)</div>
1231
- <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; {</div>
1232
- <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordtype">bool</span> is_fixpoint = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a1b8e1e0cc9803687a0eb951015ac59af">widenFixpointPass</a>(cycle_head, pre_es);</div>
1233
- <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keywordflow">if</span> (is_fixpoint)</div>
1234
- <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; {</div>
1235
- <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; incresing = <span class="keyword">false</span>;</div>
1236
- <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">continue</span>;</div>
1237
- <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; }</div>
1238
- <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; }</div>
1239
- <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!incresing)</div>
1240
- <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; {</div>
1241
- <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordtype">bool</span> is_fixpoint = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a8a4b07e6c999bea0b0e69dcab0346933">narrowFixpointPass</a>(cycle_head, pre_es);</div>
1242
- <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">if</span> (is_fixpoint)</div>
1243
- <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">break</span>;</div>
1244
- <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; }</div>
1245
- <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; }</div>
1246
- <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; }</div>
1247
- <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = cycle-&gt;<a class="code" href="classSVF_1_1WTOCycle.html#a807c883d1cfe98c791c903125742f95b">begin</a>(); it != cycle-&gt;<a class="code" href="classSVF_1_1WTOCycle.html#a03fd55dd34c48d22cefcaf6dc93f734a">end</a>(); ++it)</div>
1248
- <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; {</div>
1249
- <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1WTOComponent.html">ICFGWTOComp</a>* cur = *it;</div>
1250
- <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1WTONode.html">ICFGWTONode</a>* vertex = SVFUtil::dyn_cast&lt;ICFGWTONode&gt;(cur))</div>
1251
- <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; {</div>
1252
- <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a80d663262a8d909ef5756391cdd82246">handleWTONode</a>(vertex-&gt;node());</div>
1253
- <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; }</div>
1254
- <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1WTOCycle.html">ICFGWTOCycle</a>* cycle2 = SVFUtil::dyn_cast&lt;ICFGWTOCycle&gt;(cur))</div>
1255
- <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; {</div>
1256
- <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a71dff5d6a5b291014c0a65d3a6d7c8c1">handleCycle</a>(cycle2);</div>
1257
- <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; }</div>
1258
- <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keywordflow">else</span></div>
1259
- <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; {</div>
1260
- <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;unknown WTO type!&quot;</span>);</div>
1261
- <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; }</div>
1262
- <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; }</div>
1263
- <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; }</div>
1264
- <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;}</div>
1205
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l00695">695</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
1206
+ <div class="fragment"><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;{</div>
1207
+ <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="comment">// Get execution states from in edges</span></div>
1208
+ <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1AbstractInterpretation.html#a3a12a86670eef9cd22b1853c7c6fa208">propagateStateIfFeasible</a>(cycle-&gt;<a class="code" href="classSVF_1_1WTOCycle.html#ace60ecb07603681de5c3020d0d3c5079">head</a>()))</div>
1209
+ <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; {</div>
1210
+ <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="comment">// No ES on the in edges - Infeasible block</span></div>
1211
+ <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">return</span>;</div>
1212
+ <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; }</div>
1213
+ <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> pre_es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#ac97c5979efd3049d18b6edb83f359a20">_preAbstractTrace</a>[cycle-&gt;<a class="code" href="classSVF_1_1WTOCycle.html#ace60ecb07603681de5c3020d0d3c5079">head</a>()];</div>
1214
+ <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="comment">// set -widen-delay</span></div>
1215
+ <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> widen_delay = <a class="code" href="classSVF_1_1Options.html#ab25f7ec430ba1d41597fc409b758b193">Options::WidenDelay</a>();</div>
1216
+ <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordtype">bool</span> incresing = <span class="keyword">true</span>;</div>
1217
+ <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; ; i++)</div>
1218
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; {</div>
1219
+ <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* cycle_head = cycle-&gt;<a class="code" href="classSVF_1_1WTOCycle.html#ace60ecb07603681de5c3020d0d3c5079">head</a>();</div>
1220
+ <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="comment">// handle cycle head</span></div>
1221
+ <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a80d663262a8d909ef5756391cdd82246">handleWTONode</a>(cycle_head);</div>
1222
+ <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">if</span> (i &lt; widen_delay)</div>
1223
+ <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; {</div>
1224
+ <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">if</span> (i&gt; 0 &amp;&amp; pre_es &gt;= <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[cycle_head])</div>
1225
+ <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; {</div>
1226
+ <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">break</span>;</div>
1227
+ <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; }</div>
1228
+ <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; pre_es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[cycle_head];</div>
1229
+ <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div>
1230
+ <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">else</span></div>
1231
+ <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; {</div>
1232
+ <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">if</span> (i &gt;= widen_delay)</div>
1233
+ <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; {</div>
1234
+ <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">if</span> (incresing)</div>
1235
+ <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; {</div>
1236
+ <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keywordtype">bool</span> is_fixpoint = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a1b8e1e0cc9803687a0eb951015ac59af">widenFixpointPass</a>(cycle_head, pre_es);</div>
1237
+ <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">if</span> (is_fixpoint)</div>
1238
+ <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; {</div>
1239
+ <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; incresing = <span class="keyword">false</span>;</div>
1240
+ <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">continue</span>;</div>
1241
+ <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; }</div>
1242
+ <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; }</div>
1243
+ <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!incresing)</div>
1244
+ <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; {</div>
1245
+ <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordtype">bool</span> is_fixpoint = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a8a4b07e6c999bea0b0e69dcab0346933">narrowFixpointPass</a>(cycle_head, pre_es);</div>
1246
+ <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">if</span> (is_fixpoint)</div>
1247
+ <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keywordflow">break</span>;</div>
1248
+ <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; }</div>
1249
+ <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; }</div>
1250
+ <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; }</div>
1251
+ <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = cycle-&gt;<a class="code" href="classSVF_1_1WTOCycle.html#a807c883d1cfe98c791c903125742f95b">begin</a>(); it != cycle-&gt;<a class="code" href="classSVF_1_1WTOCycle.html#a03fd55dd34c48d22cefcaf6dc93f734a">end</a>(); ++it)</div>
1252
+ <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; {</div>
1253
+ <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1WTOComponent.html">ICFGWTOComp</a>* cur = *it;</div>
1254
+ <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1WTONode.html">ICFGWTONode</a>* vertex = SVFUtil::dyn_cast&lt;ICFGWTONode&gt;(cur))</div>
1255
+ <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; {</div>
1256
+ <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a80d663262a8d909ef5756391cdd82246">handleWTONode</a>(vertex-&gt;node());</div>
1257
+ <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; }</div>
1258
+ <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1WTOCycle.html">ICFGWTOCycle</a>* cycle2 = SVFUtil::dyn_cast&lt;ICFGWTOCycle&gt;(cur))</div>
1259
+ <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; {</div>
1260
+ <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a71dff5d6a5b291014c0a65d3a6d7c8c1">handleCycle</a>(cycle2);</div>
1261
+ <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; }</div>
1262
+ <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keywordflow">else</span></div>
1263
+ <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; {</div>
1264
+ <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;unknown WTO type!&quot;</span>);</div>
1265
+ <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; }</div>
1266
+ <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; }</div>
1267
+ <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; }</div>
1268
+ <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;}</div>
1265
1269
  </div><!-- fragment -->
1266
1270
  </div>
1267
1271
  </div>
@@ -1298,71 +1302,77 @@ Friends</h2></td></tr>
1298
1302
 
1299
1303
  <p>Reimplemented in <a class="el" href="classSVF_1_1BufOverflowChecker.html#a1ed3cb0a1a118d9e505b192841a58dde">SVF::BufOverflowChecker</a>.</p>
1300
1304
 
1301
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01170">1170</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
1302
- <div class="fragment"><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;{</div>
1303
- <div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(call-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
1304
- <div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; assert(fun &amp;&amp; <span class="stringliteral">&quot;SVFFunction* is nullptr&quot;</span>);</div>
1305
- <div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
1306
- <div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616da">ExtAPIType</a> extType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daad20658cd0f68b92583461b0b1f68d543">UNCLASSIFIED</a>;</div>
1307
- <div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="comment">// get type of mem api</span></div>
1308
- <div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &amp;annotation: fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a067bd6dbaf74a028d546fa56b095791b">getAnnotations</a>())</div>
1309
- <div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; {</div>
1310
- <div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">&quot;MEMCPY&quot;</span>) != std::string::npos)</div>
1311
- <div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; extType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa9cc269dadf9cff7d399c54d9570a6614">MEMCPY</a>;</div>
1312
- <div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">&quot;MEMSET&quot;</span>) != std::string::npos)</div>
1313
- <div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; extType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa5aec33226dc590ec951d0f12bf35f15f">MEMSET</a>;</div>
1314
- <div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">&quot;STRCPY&quot;</span>) != std::string::npos)</div>
1315
- <div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; extType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa93c9b2a9dc4bdfba5a7b23cfa5f80ccb">STRCPY</a>;</div>
1316
- <div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">&quot;STRCAT&quot;</span>) != std::string::npos)</div>
1317
- <div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; extType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daae8dad405c06383859d8db715fd455317">STRCAT</a>;</div>
1318
- <div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; }</div>
1319
- <div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daad20658cd0f68b92583461b0b1f68d543">UNCLASSIFIED</a>)</div>
1320
- <div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; {</div>
1321
- <div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>.find(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>()) != <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>.end())</div>
1322
- <div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; {</div>
1323
- <div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>()](cs);</div>
1324
- <div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; }</div>
1325
- <div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <span class="keywordflow">else</span></div>
1305
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01174">1174</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
1306
+ <div class="fragment"><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;{</div>
1307
+ <div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(call-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
1308
+ <div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; assert(fun &amp;&amp; <span class="stringliteral">&quot;SVFFunction* is nullptr&quot;</span>);</div>
1309
+ <div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
1310
+ <div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616da">ExtAPIType</a> extType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daad20658cd0f68b92583461b0b1f68d543">UNCLASSIFIED</a>;</div>
1311
+ <div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="comment">// get type of mem api</span></div>
1312
+ <div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &amp;annotation: fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a067bd6dbaf74a028d546fa56b095791b">getAnnotations</a>())</div>
1313
+ <div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; {</div>
1314
+ <div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">&quot;MEMCPY&quot;</span>) != std::string::npos)</div>
1315
+ <div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; extType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa9cc269dadf9cff7d399c54d9570a6614">MEMCPY</a>;</div>
1316
+ <div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">&quot;MEMSET&quot;</span>) != std::string::npos)</div>
1317
+ <div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; extType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa5aec33226dc590ec951d0f12bf35f15f">MEMSET</a>;</div>
1318
+ <div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">&quot;STRCPY&quot;</span>) != std::string::npos)</div>
1319
+ <div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; extType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa93c9b2a9dc4bdfba5a7b23cfa5f80ccb">STRCPY</a>;</div>
1320
+ <div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; <span class="keywordflow">if</span> (annotation.find(<span class="stringliteral">&quot;STRCAT&quot;</span>) != std::string::npos)</div>
1321
+ <div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; extType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daae8dad405c06383859d8db715fd455317">STRCAT</a>;</div>
1322
+ <div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; }</div>
1323
+ <div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daad20658cd0f68b92583461b0b1f68d543">UNCLASSIFIED</a>)</div>
1324
+ <div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; {</div>
1325
+ <div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>.find(fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>()) != <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>.end())</div>
1326
1326
  <div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; {</div>
1327
- <div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lhsId = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()).<a class="code" href="classSVF_1_1CallSite.html#ac2a0091dab3543a398da890b947e42ef">getInstruction</a>());</div>
1328
- <div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>().<a class="code" href="classSVF_1_1AbstractState.html#aa34516a95191c5ec56ce44a117e8b018">inVarToAddrsTable</a>(lhsId))</div>
1329
- <div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; {</div>
1330
- <div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; </div>
1331
- <div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; }</div>
1332
- <div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keywordflow">else</span></div>
1327
+ <div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>()](cs);</div>
1328
+ <div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; }</div>
1329
+ <div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <span class="keywordflow">else</span></div>
1330
+ <div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; {</div>
1331
+ <div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lhsId = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>()).<a class="code" href="classSVF_1_1CallSite.html#ac2a0091dab3543a398da890b947e42ef">getInstruction</a>());</div>
1332
+ <div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>().<a class="code" href="classSVF_1_1AbstractState.html#aa34516a95191c5ec56ce44a117e8b018">inVarToAddrsTable</a>(lhsId))</div>
1333
1333
  <div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; {</div>
1334
- <div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>()[lhsId] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>();</div>
1334
+ <div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; </div>
1335
1335
  <div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; }</div>
1336
- <div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <span class="keywordflow">return</span>;</div>
1337
- <div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; }</div>
1338
- <div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; }</div>
1339
- <div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; <span class="comment">// 1. memcpy functions like memcpy_chk, strncpy, annotate(&quot;MEMCPY&quot;), annotate(&quot;BUF_CHECK:Arg0, Arg2&quot;), annotate(&quot;BUF_CHECK:Arg1, Arg2&quot;)</span></div>
1340
- <div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa9cc269dadf9cff7d399c54d9570a6614">MEMCPY</a>)</div>
1341
- <div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; {</div>
1342
- <div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> len = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>()[<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(2))];</div>
1343
- <div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#adf02c5bf1b86f00163b114a78e03120c">handleMemcpy</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(0), cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(1), len, 0);</div>
1344
- <div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; }</div>
1345
- <div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa5aec33226dc590ec951d0f12bf35f15f">MEMSET</a>)</div>
1346
- <div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; {</div>
1347
- <div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; <span class="comment">// memset dst is arg0, elem is arg1, size is arg2</span></div>
1348
- <div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> len = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>()[<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(2))];</div>
1349
- <div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> elem = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>()[<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(1))];</div>
1350
- <div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a568e2247536de76694dabfc5a5052b57">handleMemset</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(0), elem, len);</div>
1351
- <div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; }</div>
1352
- <div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa93c9b2a9dc4bdfba5a7b23cfa5f80ccb">STRCPY</a>)</div>
1353
- <div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; {</div>
1354
- <div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#ac941d1eb9b1216c8334d0685a471b774">handleStrcpy</a>(call);</div>
1355
- <div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; }</div>
1356
- <div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daae8dad405c06383859d8db715fd455317">STRCAT</a>)</div>
1357
- <div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; {</div>
1358
- <div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#acba90e968cebacca3da78ac765df33ef">handleStrcat</a>(call);</div>
1359
- <div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; }</div>
1360
- <div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; <span class="keywordflow">else</span></div>
1361
- <div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; {</div>
1362
- <div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; </div>
1363
- <div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; }</div>
1364
- <div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="keywordflow">return</span>;</div>
1365
- <div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;}</div>
1336
+ <div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <span class="keywordflow">else</span></div>
1337
+ <div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; {</div>
1338
+ <div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>()[lhsId] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>();</div>
1339
+ <div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; }</div>
1340
+ <div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; <span class="keywordflow">return</span>;</div>
1341
+ <div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; }</div>
1342
+ <div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; }</div>
1343
+ <div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; <span class="comment">// 1. memcpy functions like memcpy_chk, strncpy, annotate(&quot;MEMCPY&quot;), annotate(&quot;BUF_CHECK:Arg0, Arg2&quot;), annotate(&quot;BUF_CHECK:Arg1, Arg2&quot;)</span></div>
1344
+ <div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa9cc269dadf9cff7d399c54d9570a6614">MEMCPY</a>)</div>
1345
+ <div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; {</div>
1346
+ <div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> len =</div>
1347
+ <div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a></div>
1348
+ <div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; -&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>()[<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(2))];</div>
1349
+ <div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#adf02c5bf1b86f00163b114a78e03120c">handleMemcpy</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(0), cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(1), len, 0);</div>
1350
+ <div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; }</div>
1351
+ <div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa5aec33226dc590ec951d0f12bf35f15f">MEMSET</a>)</div>
1352
+ <div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; {</div>
1353
+ <div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; <span class="comment">// memset dst is arg0, elem is arg1, size is arg2</span></div>
1354
+ <div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> len =</div>
1355
+ <div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a></div>
1356
+ <div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; -&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>()[<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(2))];</div>
1357
+ <div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> elem =</div>
1358
+ <div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a></div>
1359
+ <div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; -&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>()[<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(1))];</div>
1360
+ <div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a568e2247536de76694dabfc5a5052b57">handleMemset</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(0), elem, len);</div>
1361
+ <div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; }</div>
1362
+ <div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa93c9b2a9dc4bdfba5a7b23cfa5f80ccb">STRCPY</a>)</div>
1363
+ <div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; {</div>
1364
+ <div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#ac941d1eb9b1216c8334d0685a471b774">handleStrcpy</a>(call);</div>
1365
+ <div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; }</div>
1366
+ <div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (extType == <a class="code" href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daae8dad405c06383859d8db715fd455317">STRCAT</a>)</div>
1367
+ <div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; {</div>
1368
+ <div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#acba90e968cebacca3da78ac765df33ef">handleStrcat</a>(call);</div>
1369
+ <div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; }</div>
1370
+ <div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <span class="keywordflow">else</span></div>
1371
+ <div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; {</div>
1372
+ <div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; </div>
1373
+ <div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; }</div>
1374
+ <div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; <span class="keywordflow">return</span>;</div>
1375
+ <div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;}</div>
1366
1376
  </div><!-- fragment -->
1367
1377
  </div>
1368
1378
  </div>
@@ -1399,28 +1409,28 @@ Friends</h2></td></tr>
1399
1409
  </dd>
1400
1410
  </dl>
1401
1411
 
1402
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l00806">806</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
1403
- <div class="fragment"><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;{</div>
1404
- <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a75e493e6b9db3e29428794432d293bc2">_stat</a>-&gt;<a class="code" href="classSVF_1_1AEStat.html#a8c69d36465485cddc17eddfdeea551e0">getFunctionTrace</a>()++;</div>
1405
- <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <a class="code" href="classSVF_1_1ICFGWTO.html">ICFGWTO</a>* wto = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af41aa555a5b607ae7700263ac72f8dbb">_funcToWTO</a>[func];</div>
1406
- <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="comment">// set function entry ES</span></div>
1407
- <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = wto-&gt;<a class="code" href="classSVF_1_1WTO.html#a13e9082913aa4a14065687ccdd47642d">begin</a>(); it!= wto-&gt;<a class="code" href="classSVF_1_1WTO.html#a22b67a51964cb1d7882aab7e74b026f2">end</a>(); ++it)</div>
1408
- <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; {</div>
1409
- <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1WTOComponent.html">ICFGWTOComp</a>* cur = *it;</div>
1410
- <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1WTONode.html">ICFGWTONode</a>* vertex = SVFUtil::dyn_cast&lt;ICFGWTONode&gt;(cur))</div>
1411
- <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; {</div>
1412
- <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a80d663262a8d909ef5756391cdd82246">handleWTONode</a>(vertex-&gt;node());</div>
1413
- <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; }</div>
1414
- <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1WTOCycle.html">ICFGWTOCycle</a>* cycle = SVFUtil::dyn_cast&lt;ICFGWTOCycle&gt;(cur))</div>
1415
- <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; {</div>
1416
- <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a71dff5d6a5b291014c0a65d3a6d7c8c1">handleCycle</a>(cycle);</div>
1417
- <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; }</div>
1418
- <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keywordflow">else</span></div>
1419
- <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; {</div>
1420
- <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;unknown WTO type!&quot;</span>);</div>
1421
- <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; }</div>
1422
- <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; }</div>
1423
- <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;}</div>
1412
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l00807">807</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
1413
+ <div class="fragment"><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;{</div>
1414
+ <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a75e493e6b9db3e29428794432d293bc2">_stat</a>-&gt;<a class="code" href="classSVF_1_1AEStat.html#a8c69d36465485cddc17eddfdeea551e0">getFunctionTrace</a>()++;</div>
1415
+ <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <a class="code" href="classSVF_1_1ICFGWTO.html">ICFGWTO</a>* wto = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af41aa555a5b607ae7700263ac72f8dbb">_funcToWTO</a>[func];</div>
1416
+ <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="comment">// set function entry ES</span></div>
1417
+ <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = wto-&gt;<a class="code" href="classSVF_1_1WTO.html#a13e9082913aa4a14065687ccdd47642d">begin</a>(); it!= wto-&gt;<a class="code" href="classSVF_1_1WTO.html#a22b67a51964cb1d7882aab7e74b026f2">end</a>(); ++it)</div>
1418
+ <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; {</div>
1419
+ <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1WTOComponent.html">ICFGWTOComp</a>* cur = *it;</div>
1420
+ <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1WTONode.html">ICFGWTONode</a>* vertex = SVFUtil::dyn_cast&lt;ICFGWTONode&gt;(cur))</div>
1421
+ <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; {</div>
1422
+ <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a80d663262a8d909ef5756391cdd82246">handleWTONode</a>(vertex-&gt;node());</div>
1423
+ <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; }</div>
1424
+ <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1WTOCycle.html">ICFGWTOCycle</a>* cycle = SVFUtil::dyn_cast&lt;ICFGWTOCycle&gt;(cur))</div>
1425
+ <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; {</div>
1426
+ <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a71dff5d6a5b291014c0a65d3a6d7c8c1">handleCycle</a>(cycle);</div>
1427
+ <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; }</div>
1428
+ <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">else</span></div>
1429
+ <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; {</div>
1430
+ <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;unknown WTO type!&quot;</span>);</div>
1431
+ <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; }</div>
1432
+ <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; }</div>
1433
+ <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;}</div>
1424
1434
  </div><!-- fragment -->
1425
1435
  </div>
1426
1436
  </div>
@@ -1454,13 +1464,13 @@ Friends</h2></td></tr>
1454
1464
  <div class="fragment"><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;{</div>
1455
1465
  <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> es;</div>
1456
1466
  <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* node = <a class="code" href="classSVF_1_1AbstractInterpretation.html#ab988e460fe92f0ba3c4cbee8e0c480a0">_icfg</a>-&gt;<a class="code" href="classSVF_1_1ICFG.html#ae0b05ce161d62362642803158228e5d0">getGlobalICFGNode</a>();</div>
1457
- <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a7d0fdfbb8d5b38d29aaded6cf803150c">setEs</a>(es);</div>
1467
+ <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a7d0fdfbb8d5b38d29aaded6cf803150c">setEs</a>(es);</div>
1458
1468
  <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="comment">// Global Node, we just need to handle addr, load, store, copy and gep</span></div>
1459
1469
  <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt: node-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div>
1460
1470
  <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div>
1461
1471
  <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a896d04a02951947bc228bf97b2c00313">handleSVFStatement</a>(stmt);</div>
1462
1472
  <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div>
1463
- <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[node] = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>();</div>
1473
+ <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[node] = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
1464
1474
  <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;}</div>
1465
1475
  </div><!-- fragment -->
1466
1476
  </div>
@@ -1498,25 +1508,25 @@ Friends</h2></td></tr>
1498
1508
 
1499
1509
  <p>Reimplemented in <a class="el" href="classSVF_1_1BufOverflowChecker.html#afa6b30220b0b3261205a909def9ca44e">SVF::BufOverflowChecker</a>.</p>
1500
1510
 
1501
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l00673">673</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
1502
- <div class="fragment"><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;{</div>
1503
- <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a75e493e6b9db3e29428794432d293bc2">_stat</a>-&gt;<a class="code" href="classSVF_1_1AEStat.html#afaa47798ebfde513c709b46cac05294c">getICFGNodeTrace</a>()++;</div>
1504
- <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="comment">// handle SVF Stmt</span></div>
1505
- <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt: curICFGNode-&gt;getSVFStmts())</div>
1506
- <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; {</div>
1507
- <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a896d04a02951947bc228bf97b2c00313">handleSVFStatement</a>(stmt);</div>
1508
- <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; }</div>
1509
- <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="comment">// inlining the callee by calling handleFunc for the callee function</span></div>
1510
- <div class="line"><a name="l00682"></a><span class="lineno"> 682</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;(curICFGNode))</div>
1511
- <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; {</div>
1512
- <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#abbb4e49644121f6b038fd8fb4d7b0034">handleCallSite</a>(callnode);</div>
1513
- <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; }</div>
1514
- <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">else</span></div>
1515
- <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; {</div>
1516
- <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; </div>
1517
- <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; }</div>
1518
- <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a75e493e6b9db3e29428794432d293bc2">_stat</a>-&gt;<a class="code" href="classSVF_1_1AEStat.html#ae2cfe939670689a4ec5030c096a5f546">countStateSize</a>();</div>
1519
- <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;}</div>
1511
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l00674">674</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
1512
+ <div class="fragment"><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;{</div>
1513
+ <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a75e493e6b9db3e29428794432d293bc2">_stat</a>-&gt;<a class="code" href="classSVF_1_1AEStat.html#afaa47798ebfde513c709b46cac05294c">getICFGNodeTrace</a>()++;</div>
1514
+ <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="comment">// handle SVF Stmt</span></div>
1515
+ <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt: curICFGNode-&gt;getSVFStmts())</div>
1516
+ <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; {</div>
1517
+ <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a896d04a02951947bc228bf97b2c00313">handleSVFStatement</a>(stmt);</div>
1518
+ <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; }</div>
1519
+ <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="comment">// inlining the callee by calling handleFunc for the callee function</span></div>
1520
+ <div class="line"><a name="l00683"></a><span class="lineno"> 683</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;(curICFGNode))</div>
1521
+ <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; {</div>
1522
+ <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#abbb4e49644121f6b038fd8fb4d7b0034">handleCallSite</a>(callnode);</div>
1523
+ <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; }</div>
1524
+ <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">else</span></div>
1525
+ <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; {</div>
1526
+ <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; </div>
1527
+ <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; }</div>
1528
+ <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a75e493e6b9db3e29428794432d293bc2">_stat</a>-&gt;<a class="code" href="classSVF_1_1AEStat.html#ae2cfe939670689a4ec5030c096a5f546">countStateSize</a>();</div>
1529
+ <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;}</div>
1520
1530
  </div><!-- fragment -->
1521
1531
  </div>
1522
1532
  </div>
@@ -1572,62 +1582,65 @@ Friends</h2></td></tr>
1572
1582
  </dd>
1573
1583
  </dl>
1574
1584
 
1575
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01545">1545</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
1576
- <div class="fragment"><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;{</div>
1577
- <div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a>&amp;es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>();</div>
1578
- <div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> dstId = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(dst); <span class="comment">// pts(dstId) = {objid} objbar objtypeinfo-&gt;getType().</span></div>
1579
- <div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> srcId = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(src);</div>
1580
- <div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elemSize = 1;</div>
1581
- <div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; <span class="keywordflow">if</span> (dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a330084f9a3deb6e5acb52a8ee3eb7fe4">isArrayTy</a>())</div>
1582
- <div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; {</div>
1583
- <div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; elemSize = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>())-&gt;getTypeOfElement()-&gt;getByteSize();</div>
1584
- <div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; }</div>
1585
- <div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; <span class="comment">// memcpy(i32*, i32*, 40)</span></div>
1586
- <div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">isPointerTy</a>())</div>
1587
- <div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; {</div>
1588
- <div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a2057e8e1c0aaf39e74f0a8fb2a1b580c">getPointeeElement</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(dst)))</div>
1589
- <div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; {</div>
1590
- <div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; <span class="keywordflow">if</span> (elemType-&gt;isArrayTy())</div>
1591
- <div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; elemSize = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(elemType)-&gt;getTypeOfElement()-&gt;getByteSize();</div>
1592
- <div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; <span class="keywordflow">else</span></div>
1593
- <div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; elemSize = elemType-&gt;getByteSize();</div>
1594
- <div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; }</div>
1595
- <div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; <span class="keywordflow">else</span></div>
1596
- <div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; {</div>
1597
- <div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; elemSize = 1;</div>
1598
- <div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; }</div>
1585
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01560">1560</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
1586
+ <div class="fragment"><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;{</div>
1587
+ <div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a>&amp;es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
1588
+ <div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> dstId = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(dst); <span class="comment">// pts(dstId) = {objid} objbar objtypeinfo-&gt;getType().</span></div>
1589
+ <div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> srcId = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(src);</div>
1590
+ <div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elemSize = 1;</div>
1591
+ <div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; <span class="keywordflow">if</span> (dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a330084f9a3deb6e5acb52a8ee3eb7fe4">isArrayTy</a>())</div>
1592
+ <div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; {</div>
1593
+ <div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; elemSize = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>())-&gt;getTypeOfElement()-&gt;getByteSize();</div>
1599
1594
  <div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; }</div>
1600
- <div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; <span class="keywordflow">else</span></div>
1601
- <div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; {</div>
1602
- <div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;we cannot support this type&quot;</span>);</div>
1603
- <div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; }</div>
1604
- <div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> size = std::min((<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(), (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a>) len.<a class="code" href="structSVF_1_1AbstractValue.html#a6c979397d4efb5b37e3b2bf9feba5648">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>());</div>
1605
- <div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> range_val = size / elemSize;</div>
1606
- <div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(srcId) &amp;&amp; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(dstId))</div>
1607
- <div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; {</div>
1608
- <div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = 0; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> &lt; range_val; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>++)</div>
1609
- <div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; {</div>
1610
- <div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; <span class="comment">// dead loop for string and break if there&#39;s a \0. If no \0, it will throw err.</span></div>
1611
- <div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> expr_src = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a10a83572bf5dee369b54cda74f402073">getGepObjAddress</a>(srcId, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>);</div>
1612
- <div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> expr_dst = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a10a83572bf5dee369b54cda74f402073">getGepObjAddress</a>(dstId, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> + start_idx);</div>
1613
- <div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;dst: expr_dst.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>())</div>
1614
- <div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; {</div>
1615
- <div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;src: expr_src.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>())</div>
1616
- <div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; {</div>
1617
- <div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> objId = <a class="code" href="classSVF_1_1AbstractState.html#aaabe5850dbf1620c6058f5ac6cb169b6">AbstractState::getInternalID</a>(src);</div>
1618
- <div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; <span class="keywordflow">if</span> (es.<a class="code" href="classSVF_1_1AbstractState.html#aa2ac2ba25a9859232717ee22192feb35">inLocToValTable</a>(objId))</div>
1619
- <div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; {</div>
1620
- <div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; es.<a class="code" href="classSVF_1_1AbstractState.html#a1f935ea8ab16b04699284bf92bbbb23c">store</a>(dst, es.<a class="code" href="classSVF_1_1AbstractState.html#aa057c4c27e613d239161c04daf3a46d0">load</a>(src));</div>
1621
- <div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; }</div>
1622
- <div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (es.<a class="code" href="classSVF_1_1AbstractState.html#aff46e9d0fb20cedd54323c808d06f7cf">inLocToAddrsTable</a>(objId))</div>
1623
- <div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; {</div>
1624
- <div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; es.<a class="code" href="classSVF_1_1AbstractState.html#a1f935ea8ab16b04699284bf92bbbb23c">store</a>(dst, es.<a class="code" href="classSVF_1_1AbstractState.html#aa057c4c27e613d239161c04daf3a46d0">load</a>(src));</div>
1625
- <div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; }</div>
1626
- <div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; }</div>
1627
- <div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; }</div>
1628
- <div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160; }</div>
1629
- <div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; }</div>
1630
- <div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;}</div>
1595
+ <div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; <span class="comment">// memcpy(i32*, i32*, 40)</span></div>
1596
+ <div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">isPointerTy</a>())</div>
1597
+ <div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160; {</div>
1598
+ <div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a2057e8e1c0aaf39e74f0a8fb2a1b580c">getPointeeElement</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(dst)))</div>
1599
+ <div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; {</div>
1600
+ <div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; <span class="keywordflow">if</span> (elemType-&gt;isArrayTy())</div>
1601
+ <div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; elemSize = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(elemType)-&gt;getTypeOfElement()-&gt;getByteSize();</div>
1602
+ <div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; <span class="keywordflow">else</span></div>
1603
+ <div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; elemSize = elemType-&gt;getByteSize();</div>
1604
+ <div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; }</div>
1605
+ <div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; <span class="keywordflow">else</span></div>
1606
+ <div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; {</div>
1607
+ <div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; elemSize = 1;</div>
1608
+ <div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; }</div>
1609
+ <div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; }</div>
1610
+ <div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; <span class="keywordflow">else</span></div>
1611
+ <div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; {</div>
1612
+ <div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;we cannot support this type&quot;</span>);</div>
1613
+ <div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; }</div>
1614
+ <div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> size = std::min((<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(), (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a>) len.<a class="code" href="structSVF_1_1AbstractValue.html#a6c979397d4efb5b37e3b2bf9feba5648">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>());</div>
1615
+ <div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> range_val = size / elemSize;</div>
1616
+ <div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(srcId) &amp;&amp;</div>
1617
+ <div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(dstId))</div>
1618
+ <div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; {</div>
1619
+ <div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = 0; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> &lt; range_val; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>++)</div>
1620
+ <div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; {</div>
1621
+ <div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; <span class="comment">// dead loop for string and break if there&#39;s a \0. If no \0, it will throw err.</span></div>
1622
+ <div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> expr_src =</div>
1623
+ <div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a10a83572bf5dee369b54cda74f402073">getGepObjAddress</a>(srcId, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>);</div>
1624
+ <div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> expr_dst =</div>
1625
+ <div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a10a83572bf5dee369b54cda74f402073">getGepObjAddress</a>(dstId, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> + start_idx);</div>
1626
+ <div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;dst: expr_dst.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>())</div>
1627
+ <div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; {</div>
1628
+ <div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;src: expr_src.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>())</div>
1629
+ <div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160; {</div>
1630
+ <div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> objId = <a class="code" href="classSVF_1_1AbstractState.html#aaabe5850dbf1620c6058f5ac6cb169b6">AbstractState::getInternalID</a>(src);</div>
1631
+ <div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; <span class="keywordflow">if</span> (es.<a class="code" href="classSVF_1_1AbstractState.html#aa2ac2ba25a9859232717ee22192feb35">inLocToValTable</a>(objId))</div>
1632
+ <div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; {</div>
1633
+ <div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; es.<a class="code" href="classSVF_1_1AbstractState.html#a1f935ea8ab16b04699284bf92bbbb23c">store</a>(dst, es.<a class="code" href="classSVF_1_1AbstractState.html#aa057c4c27e613d239161c04daf3a46d0">load</a>(src));</div>
1634
+ <div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; }</div>
1635
+ <div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (es.<a class="code" href="classSVF_1_1AbstractState.html#aff46e9d0fb20cedd54323c808d06f7cf">inLocToAddrsTable</a>(objId))</div>
1636
+ <div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; {</div>
1637
+ <div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; es.<a class="code" href="classSVF_1_1AbstractState.html#a1f935ea8ab16b04699284bf92bbbb23c">store</a>(dst, es.<a class="code" href="classSVF_1_1AbstractState.html#aa057c4c27e613d239161c04daf3a46d0">load</a>(src));</div>
1638
+ <div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; }</div>
1639
+ <div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; }</div>
1640
+ <div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; }</div>
1641
+ <div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; }</div>
1642
+ <div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; }</div>
1643
+ <div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;}</div>
1631
1644
  </div><!-- fragment -->
1632
1645
  </div>
1633
1646
  </div>
@@ -1677,58 +1690,59 @@ Friends</h2></td></tr>
1677
1690
  </dd>
1678
1691
  </dl>
1679
1692
 
1680
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01622">1622</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
1681
- <div class="fragment"><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160;{</div>
1682
- <div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a>&amp;es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>();</div>
1683
- <div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> dstId = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(dst);</div>
1684
- <div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> size = std::min((<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(), (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a>) len.<a class="code" href="structSVF_1_1AbstractValue.html#a6c979397d4efb5b37e3b2bf9feba5648">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>());</div>
1685
- <div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elemSize = 1;</div>
1686
- <div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; <span class="keywordflow">if</span> (dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a330084f9a3deb6e5acb52a8ee3eb7fe4">isArrayTy</a>())</div>
1687
- <div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; {</div>
1688
- <div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; elemSize = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>())-&gt;getTypeOfElement()-&gt;getByteSize();</div>
1689
- <div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; }</div>
1690
- <div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">isPointerTy</a>())</div>
1691
- <div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; {</div>
1692
- <div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a2057e8e1c0aaf39e74f0a8fb2a1b580c">getPointeeElement</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(dst)))</div>
1693
- <div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; {</div>
1694
- <div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; elemSize = elemType-&gt;getByteSize();</div>
1695
- <div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; }</div>
1696
- <div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160; <span class="keywordflow">else</span></div>
1697
- <div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160; {</div>
1698
- <div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; elemSize = 1;</div>
1699
- <div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; }</div>
1700
- <div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; }</div>
1701
- <div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; <span class="keywordflow">else</span></div>
1702
- <div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; {</div>
1703
- <div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;we cannot support this type&quot;</span>);</div>
1704
- <div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; }</div>
1705
- <div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; </div>
1706
- <div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> range_val = size / elemSize;</div>
1707
- <div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = 0; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> &lt; range_val; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>++)</div>
1708
- <div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; {</div>
1709
- <div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; <span class="comment">// dead loop for string and break if there&#39;s a \0. If no \0, it will throw err.</span></div>
1710
- <div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(dstId))</div>
1693
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01640">1640</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
1694
+ <div class="fragment"><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160;{</div>
1695
+ <div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a>&amp;es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
1696
+ <div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> dstId = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(dst);</div>
1697
+ <div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> size = std::min((<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(), (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a>) len.<a class="code" href="structSVF_1_1AbstractValue.html#a6c979397d4efb5b37e3b2bf9feba5648">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>());</div>
1698
+ <div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elemSize = 1;</div>
1699
+ <div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; <span class="keywordflow">if</span> (dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a330084f9a3deb6e5acb52a8ee3eb7fe4">isArrayTy</a>())</div>
1700
+ <div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; {</div>
1701
+ <div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; elemSize = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>())-&gt;getTypeOfElement()-&gt;getByteSize();</div>
1702
+ <div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; }</div>
1703
+ <div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">isPointerTy</a>())</div>
1704
+ <div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; {</div>
1705
+ <div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemType = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a2057e8e1c0aaf39e74f0a8fb2a1b580c">getPointeeElement</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(dst)))</div>
1711
1706
  <div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; {</div>
1712
- <div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> lhs_gep = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a10a83572bf5dee369b54cda74f402073">getGepObjAddress</a>(dstId, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>);</div>
1713
- <div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: lhs_gep.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>())</div>
1714
- <div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160; {</div>
1715
- <div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> objId = <a class="code" href="classSVF_1_1AbstractState.html#aaabe5850dbf1620c6058f5ac6cb169b6">AbstractState::getInternalID</a>(addr);</div>
1716
- <div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; <span class="keywordflow">if</span> (es.<a class="code" href="classSVF_1_1AbstractState.html#aa2ac2ba25a9859232717ee22192feb35">inLocToValTable</a>(objId))</div>
1717
- <div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; {</div>
1718
- <div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> tmp = es.<a class="code" href="classSVF_1_1AbstractState.html#aa057c4c27e613d239161c04daf3a46d0">load</a>(addr);</div>
1719
- <div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; tmp.<a class="code" href="structSVF_1_1AbstractValue.html#a52a8a738896179a148581e1060a2ed66">join_with</a>(elem);</div>
1720
- <div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; es.<a class="code" href="classSVF_1_1AbstractState.html#a1f935ea8ab16b04699284bf92bbbb23c">store</a>(addr, tmp);</div>
1721
- <div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; }</div>
1722
- <div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; <span class="keywordflow">else</span></div>
1723
- <div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; {</div>
1724
- <div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; es.<a class="code" href="classSVF_1_1AbstractState.html#a1f935ea8ab16b04699284bf92bbbb23c">store</a>(addr, elem);</div>
1725
- <div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160; }</div>
1726
- <div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; }</div>
1727
- <div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; }</div>
1728
- <div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; <span class="keywordflow">else</span></div>
1729
- <div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; <span class="keywordflow">break</span>;</div>
1730
- <div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; }</div>
1731
- <div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;}</div>
1707
+ <div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; elemSize = elemType-&gt;getByteSize();</div>
1708
+ <div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; }</div>
1709
+ <div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160; <span class="keywordflow">else</span></div>
1710
+ <div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; {</div>
1711
+ <div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; elemSize = 1;</div>
1712
+ <div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; }</div>
1713
+ <div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; }</div>
1714
+ <div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; <span class="keywordflow">else</span></div>
1715
+ <div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; {</div>
1716
+ <div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;we cannot support this type&quot;</span>);</div>
1717
+ <div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; }</div>
1718
+ <div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; </div>
1719
+ <div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> range_val = size / elemSize;</div>
1720
+ <div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = 0; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> &lt; range_val; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>++)</div>
1721
+ <div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; {</div>
1722
+ <div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; <span class="comment">// dead loop for string and break if there&#39;s a \0. If no \0, it will throw err.</span></div>
1723
+ <div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(dstId))</div>
1724
+ <div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; {</div>
1725
+ <div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> lhs_gep =</div>
1726
+ <div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a10a83572bf5dee369b54cda74f402073">getGepObjAddress</a>(dstId, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>);</div>
1727
+ <div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: lhs_gep.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>())</div>
1728
+ <div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; {</div>
1729
+ <div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> objId = <a class="code" href="classSVF_1_1AbstractState.html#aaabe5850dbf1620c6058f5ac6cb169b6">AbstractState::getInternalID</a>(addr);</div>
1730
+ <div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160; <span class="keywordflow">if</span> (es.<a class="code" href="classSVF_1_1AbstractState.html#aa2ac2ba25a9859232717ee22192feb35">inLocToValTable</a>(objId))</div>
1731
+ <div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; {</div>
1732
+ <div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> tmp = es.<a class="code" href="classSVF_1_1AbstractState.html#aa057c4c27e613d239161c04daf3a46d0">load</a>(addr);</div>
1733
+ <div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; tmp.<a class="code" href="structSVF_1_1AbstractValue.html#a52a8a738896179a148581e1060a2ed66">join_with</a>(elem);</div>
1734
+ <div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; es.<a class="code" href="classSVF_1_1AbstractState.html#a1f935ea8ab16b04699284bf92bbbb23c">store</a>(addr, tmp);</div>
1735
+ <div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160; }</div>
1736
+ <div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160; <span class="keywordflow">else</span></div>
1737
+ <div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; {</div>
1738
+ <div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; es.<a class="code" href="classSVF_1_1AbstractState.html#a1f935ea8ab16b04699284bf92bbbb23c">store</a>(addr, elem);</div>
1739
+ <div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; }</div>
1740
+ <div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160; }</div>
1741
+ <div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; }</div>
1742
+ <div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; <span class="keywordflow">else</span></div>
1743
+ <div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; <span class="keywordflow">break</span>;</div>
1744
+ <div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; }</div>
1745
+ <div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;}</div>
1732
1746
  </div><!-- fragment -->
1733
1747
  </div>
1734
1748
  </div>
@@ -1762,41 +1776,42 @@ Friends</h2></td></tr>
1762
1776
  </dd>
1763
1777
  </dl>
1764
1778
 
1765
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01509">1509</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
1766
- <div class="fragment"><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160;{</div>
1767
- <div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; <span class="comment">// __strcat_chk, strcat, __wcscat_chk, wcscat, __strncat_chk, strncat, __wcsncat_chk, wcsncat</span></div>
1768
- <div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; <span class="comment">// to check it is strcat group or strncat group</span></div>
1769
- <div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(call-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
1770
- <div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; <span class="keyword">const</span> std::vector&lt;std::string&gt; strcatGroup = {<span class="stringliteral">&quot;__strcat_chk&quot;</span>, <span class="stringliteral">&quot;strcat&quot;</span>, <span class="stringliteral">&quot;__wcscat_chk&quot;</span>, <span class="stringliteral">&quot;wcscat&quot;</span>};</div>
1771
- <div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; <span class="keyword">const</span> std::vector&lt;std::string&gt; strncatGroup = {<span class="stringliteral">&quot;__strncat_chk&quot;</span>, <span class="stringliteral">&quot;strncat&quot;</span>, <span class="stringliteral">&quot;__wcsncat_chk&quot;</span>, <span class="stringliteral">&quot;wcsncat&quot;</span>};</div>
1772
- <div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; <span class="keywordflow">if</span> (std::find(strcatGroup.begin(), strcatGroup.end(), fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>()) != strcatGroup.end())</div>
1773
- <div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; {</div>
1774
- <div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
1775
- <div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg0Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(0);</div>
1776
- <div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg1Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(1);</div>
1777
- <div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> strLen0 = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bba3c0570d73acc743742a30af1b0b4">getStrlen</a>(arg0Val);</div>
1778
- <div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> strLen1 = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bba3c0570d73acc743742a30af1b0b4">getStrlen</a>(arg1Val);</div>
1779
- <div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> totalLen = strLen0 + strLen1;</div>
1780
- <div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#adf02c5bf1b86f00163b114a78e03120c">handleMemcpy</a>(arg0Val, arg1Val, strLen1, strLen0.<a class="code" href="structSVF_1_1AbstractValue.html#a6c979397d4efb5b37e3b2bf9feba5648">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>());</div>
1781
- <div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; <span class="comment">// do memcpy</span></div>
1782
- <div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; }</div>
1783
- <div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (std::find(strncatGroup.begin(), strncatGroup.end(), fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>()) != strncatGroup.end())</div>
1784
- <div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; {</div>
1785
- <div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
1786
- <div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg0Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(0);</div>
1787
- <div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg1Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(1);</div>
1788
- <div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg2Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(2);</div>
1789
- <div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> arg2Num = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>()[<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(arg2Val)];</div>
1790
- <div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> strLen0 = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bba3c0570d73acc743742a30af1b0b4">getStrlen</a>(arg0Val);</div>
1791
- <div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> totalLen = strLen0 + arg2Num;</div>
1792
- <div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#adf02c5bf1b86f00163b114a78e03120c">handleMemcpy</a>(arg0Val, arg1Val, arg2Num, strLen0.<a class="code" href="structSVF_1_1AbstractValue.html#a6c979397d4efb5b37e3b2bf9feba5648">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>());</div>
1793
- <div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; <span class="comment">// do memcpy</span></div>
1794
- <div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; }</div>
1795
- <div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; <span class="keywordflow">else</span></div>
1796
- <div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160; {</div>
1797
- <div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;unknown strcat function, please add it to strcatGroup or strncatGroup&quot;</span>);</div>
1798
- <div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; }</div>
1799
- <div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;}</div>
1779
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01523">1523</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
1780
+ <div class="fragment"><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160;{</div>
1781
+ <div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; <span class="comment">// __strcat_chk, strcat, __wcscat_chk, wcscat, __strncat_chk, strncat, __wcsncat_chk, wcsncat</span></div>
1782
+ <div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; <span class="comment">// to check it is strcat group or strncat group</span></div>
1783
+ <div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *fun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(call-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
1784
+ <div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; <span class="keyword">const</span> std::vector&lt;std::string&gt; strcatGroup = {<span class="stringliteral">&quot;__strcat_chk&quot;</span>, <span class="stringliteral">&quot;strcat&quot;</span>, <span class="stringliteral">&quot;__wcscat_chk&quot;</span>, <span class="stringliteral">&quot;wcscat&quot;</span>};</div>
1785
+ <div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; <span class="keyword">const</span> std::vector&lt;std::string&gt; strncatGroup = {<span class="stringliteral">&quot;__strncat_chk&quot;</span>, <span class="stringliteral">&quot;strncat&quot;</span>, <span class="stringliteral">&quot;__wcsncat_chk&quot;</span>, <span class="stringliteral">&quot;wcsncat&quot;</span>};</div>
1786
+ <div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; <span class="keywordflow">if</span> (std::find(strcatGroup.begin(), strcatGroup.end(), fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>()) != strcatGroup.end())</div>
1787
+ <div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; {</div>
1788
+ <div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
1789
+ <div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg0Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(0);</div>
1790
+ <div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg1Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(1);</div>
1791
+ <div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> strLen0 = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bba3c0570d73acc743742a30af1b0b4">getStrlen</a>(arg0Val);</div>
1792
+ <div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> strLen1 = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bba3c0570d73acc743742a30af1b0b4">getStrlen</a>(arg1Val);</div>
1793
+ <div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> totalLen = strLen0 + strLen1;</div>
1794
+ <div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#adf02c5bf1b86f00163b114a78e03120c">handleMemcpy</a>(arg0Val, arg1Val, strLen1, strLen0.<a class="code" href="structSVF_1_1AbstractValue.html#a6c979397d4efb5b37e3b2bf9feba5648">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>());</div>
1795
+ <div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; <span class="comment">// do memcpy</span></div>
1796
+ <div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160; }</div>
1797
+ <div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (std::find(strncatGroup.begin(), strncatGroup.end(), fun-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>()) != strncatGroup.end())</div>
1798
+ <div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; {</div>
1799
+ <div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
1800
+ <div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg0Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(0);</div>
1801
+ <div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg1Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(1);</div>
1802
+ <div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg2Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(2);</div>
1803
+ <div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> arg2Num =</div>
1804
+ <div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>()[<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(arg2Val)];</div>
1805
+ <div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> strLen0 = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bba3c0570d73acc743742a30af1b0b4">getStrlen</a>(arg0Val);</div>
1806
+ <div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> totalLen = strLen0 + arg2Num;</div>
1807
+ <div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#adf02c5bf1b86f00163b114a78e03120c">handleMemcpy</a>(arg0Val, arg1Val, arg2Num, strLen0.<a class="code" href="structSVF_1_1AbstractValue.html#a6c979397d4efb5b37e3b2bf9feba5648">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>());</div>
1808
+ <div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; <span class="comment">// do memcpy</span></div>
1809
+ <div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; }</div>
1810
+ <div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; <span class="keywordflow">else</span></div>
1811
+ <div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; {</div>
1812
+ <div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;unknown strcat function, please add it to strcatGroup or strncatGroup&quot;</span>);</div>
1813
+ <div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; }</div>
1814
+ <div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;}</div>
1800
1815
  </div><!-- fragment -->
1801
1816
  </div>
1802
1817
  </div>
@@ -1830,17 +1845,17 @@ Friends</h2></td></tr>
1830
1845
  </dd>
1831
1846
  </dl>
1832
1847
 
1833
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01274">1274</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
1834
- <div class="fragment"><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;{</div>
1835
- <div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; <span class="comment">// strcpy, __strcpy_chk, stpcpy , wcscpy, __wcscpy_chk</span></div>
1836
- <div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; <span class="comment">// get the dst and src</span></div>
1837
- <div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
1838
- <div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg0Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(0);</div>
1839
- <div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg1Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(1);</div>
1840
- <div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> strLen = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bba3c0570d73acc743742a30af1b0b4">getStrlen</a>(arg1Val);</div>
1841
- <div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <span class="comment">// no need to -1, since it has \0 as the last byte</span></div>
1842
- <div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#adf02c5bf1b86f00163b114a78e03120c">handleMemcpy</a>(arg0Val, arg1Val, strLen,strLen.<a class="code" href="structSVF_1_1AbstractValue.html#a6c979397d4efb5b37e3b2bf9feba5648">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>());</div>
1843
- <div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;}</div>
1848
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01284">1284</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
1849
+ <div class="fragment"><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;{</div>
1850
+ <div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; <span class="comment">// strcpy, __strcpy_chk, stpcpy , wcscpy, __wcscpy_chk</span></div>
1851
+ <div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; <span class="comment">// get the dst and src</span></div>
1852
+ <div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(call-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
1853
+ <div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg0Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(0);</div>
1854
+ <div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* arg1Val = cs.<a class="code" href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">getArgument</a>(1);</div>
1855
+ <div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> strLen = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bba3c0570d73acc743742a30af1b0b4">getStrlen</a>(arg1Val);</div>
1856
+ <div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; <span class="comment">// no need to -1, since it has \0 as the last byte</span></div>
1857
+ <div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#adf02c5bf1b86f00163b114a78e03120c">handleMemcpy</a>(arg0Val, arg1Val, strLen,strLen.<a class="code" href="structSVF_1_1AbstractValue.html#a6c979397d4efb5b37e3b2bf9feba5648">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>());</div>
1858
+ <div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;}</div>
1844
1859
  </div><!-- fragment -->
1845
1860
  </div>
1846
1861
  </div>
@@ -1877,63 +1892,63 @@ Friends</h2></td></tr>
1877
1892
 
1878
1893
  <p>Reimplemented in <a class="el" href="classSVF_1_1BufOverflowChecker.html#a0b79c3694a08100d2d8d1b8109998131">SVF::BufOverflowChecker</a>.</p>
1879
1894
 
1880
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l00829">829</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
1881
- <div class="fragment"><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160;{</div>
1882
- <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> *addr = SVFUtil::dyn_cast&lt;AddrStmt&gt;(stmt))</div>
1883
- <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; {</div>
1884
- <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a2cc9783b020cb3b019d2691ab38e243a">handleAddr</a>(addr);</div>
1885
- <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; }</div>
1886
- <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> *binary = SVFUtil::dyn_cast&lt;BinaryOPStmt&gt;(stmt))</div>
1887
- <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; {</div>
1888
- <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a82afa83da1b1b17140b5b9c0b7eca153">handleBinary</a>(binary);</div>
1889
- <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; }</div>
1890
- <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a> *cmp = SVFUtil::dyn_cast&lt;CmpStmt&gt;(stmt))</div>
1891
- <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; {</div>
1892
- <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#af13e2b1c28a16e046776187de62d3c20">handleCmp</a>(cmp);</div>
1893
- <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; }</div>
1894
- <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;UnaryOPStmt&gt;(stmt))</div>
1895
- <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; {</div>
1896
- <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; }</div>
1897
- <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;BranchStmt&gt;(stmt))</div>
1898
- <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; {</div>
1899
- <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="comment">// branch stmt is handled in hasBranchES</span></div>
1900
- <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; }</div>
1901
- <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *load = SVFUtil::dyn_cast&lt;LoadStmt&gt;(stmt))</div>
1902
- <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; {</div>
1903
- <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a1930df3df0fa3f955a30beb25204438c">handleLoad</a>(load);</div>
1904
- <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; }</div>
1905
- <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *store = SVFUtil::dyn_cast&lt;StoreStmt&gt;(stmt))</div>
1906
- <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; {</div>
1907
- <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a4d614da483954db61664603cf0cf72e0">handleStore</a>(store);</div>
1908
- <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; }</div>
1909
- <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast&lt;CopyStmt&gt;(stmt))</div>
1910
- <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; {</div>
1911
- <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#ae9cabdfecbc7773c1b15aafc4abf15e5">handleCopy</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>);</div>
1912
- <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; }</div>
1913
- <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> *gep = SVFUtil::dyn_cast&lt;GepStmt&gt;(stmt))</div>
1914
- <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; {</div>
1915
- <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa36938b22e2d3521f2af9d13c2697d83">handleGep</a>(gep);</div>
1916
- <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; }</div>
1917
- <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a> *select = SVFUtil::dyn_cast&lt;SelectStmt&gt;(stmt))</div>
1918
- <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; {</div>
1919
- <div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#acce4bce2322fe1cdcab369d906b9aee2">handleSelect</a>(select);</div>
1920
- <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; }</div>
1921
- <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> *phi = SVFUtil::dyn_cast&lt;PhiStmt&gt;(stmt))</div>
1922
- <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; {</div>
1923
- <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a44deea0e4cbc98bf999598d7862fe115">handlePhi</a>(phi);</div>
1924
- <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; }</div>
1925
- <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> *callPE = SVFUtil::dyn_cast&lt;CallPE&gt;(stmt))</div>
1926
- <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; {</div>
1927
- <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="comment">// To handle Call Edge</span></div>
1928
- <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a175a43f33d55e812ec61a349eb175157">handleCall</a>(callPE);</div>
1929
- <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; }</div>
1930
- <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> *retPE = SVFUtil::dyn_cast&lt;RetPE&gt;(stmt))</div>
1931
- <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; {</div>
1932
- <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a839a881ecff03f73102c1b48d9dbfb88">handleRet</a>(retPE);</div>
1933
- <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; }</div>
1934
- <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keywordflow">else</span></div>
1935
- <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;implement this part&quot;</span>);</div>
1936
- <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160;}</div>
1895
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l00830">830</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
1896
+ <div class="fragment"><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160;{</div>
1897
+ <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> *addr = SVFUtil::dyn_cast&lt;AddrStmt&gt;(stmt))</div>
1898
+ <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; {</div>
1899
+ <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a2cc9783b020cb3b019d2691ab38e243a">handleAddr</a>(addr);</div>
1900
+ <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; }</div>
1901
+ <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> *binary = SVFUtil::dyn_cast&lt;BinaryOPStmt&gt;(stmt))</div>
1902
+ <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; {</div>
1903
+ <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a82afa83da1b1b17140b5b9c0b7eca153">handleBinary</a>(binary);</div>
1904
+ <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; }</div>
1905
+ <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a> *cmp = SVFUtil::dyn_cast&lt;CmpStmt&gt;(stmt))</div>
1906
+ <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; {</div>
1907
+ <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#af13e2b1c28a16e046776187de62d3c20">handleCmp</a>(cmp);</div>
1908
+ <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; }</div>
1909
+ <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;UnaryOPStmt&gt;(stmt))</div>
1910
+ <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; {</div>
1911
+ <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; }</div>
1912
+ <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;BranchStmt&gt;(stmt))</div>
1913
+ <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; {</div>
1914
+ <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="comment">// branch stmt is handled in hasBranchES</span></div>
1915
+ <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; }</div>
1916
+ <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *load = SVFUtil::dyn_cast&lt;LoadStmt&gt;(stmt))</div>
1917
+ <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; {</div>
1918
+ <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a1930df3df0fa3f955a30beb25204438c">handleLoad</a>(load);</div>
1919
+ <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; }</div>
1920
+ <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *store = SVFUtil::dyn_cast&lt;StoreStmt&gt;(stmt))</div>
1921
+ <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; {</div>
1922
+ <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a4d614da483954db61664603cf0cf72e0">handleStore</a>(store);</div>
1923
+ <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; }</div>
1924
+ <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast&lt;CopyStmt&gt;(stmt))</div>
1925
+ <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; {</div>
1926
+ <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#ae9cabdfecbc7773c1b15aafc4abf15e5">handleCopy</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>);</div>
1927
+ <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; }</div>
1928
+ <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> *gep = SVFUtil::dyn_cast&lt;GepStmt&gt;(stmt))</div>
1929
+ <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; {</div>
1930
+ <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa36938b22e2d3521f2af9d13c2697d83">handleGep</a>(gep);</div>
1931
+ <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; }</div>
1932
+ <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a> *select = SVFUtil::dyn_cast&lt;SelectStmt&gt;(stmt))</div>
1933
+ <div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; {</div>
1934
+ <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#acce4bce2322fe1cdcab369d906b9aee2">handleSelect</a>(select);</div>
1935
+ <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; }</div>
1936
+ <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> *phi = SVFUtil::dyn_cast&lt;PhiStmt&gt;(stmt))</div>
1937
+ <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; {</div>
1938
+ <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a44deea0e4cbc98bf999598d7862fe115">handlePhi</a>(phi);</div>
1939
+ <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; }</div>
1940
+ <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> *callPE = SVFUtil::dyn_cast&lt;CallPE&gt;(stmt))</div>
1941
+ <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; {</div>
1942
+ <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="comment">// To handle Call Edge</span></div>
1943
+ <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a175a43f33d55e812ec61a349eb175157">handleCall</a>(callPE);</div>
1944
+ <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; }</div>
1945
+ <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> *retPE = SVFUtil::dyn_cast&lt;RetPE&gt;(stmt))</div>
1946
+ <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; {</div>
1947
+ <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a839a881ecff03f73102c1b48d9dbfb88">handleRet</a>(retPE);</div>
1948
+ <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; }</div>
1949
+ <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="keywordflow">else</span></div>
1950
+ <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;implement this part&quot;</span>);</div>
1951
+ <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160;}</div>
1937
1952
  </div><!-- fragment -->
1938
1953
  </div>
1939
1954
  </div>
@@ -1983,7 +1998,7 @@ Friends</h2></td></tr>
1983
1998
  <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; {</div>
1984
1999
  <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="comment">// Has ES on the in edges - Feasible block</span></div>
1985
2000
  <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="comment">// Get execution state from in edges</span></div>
1986
- <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a7d0fdfbb8d5b38d29aaded6cf803150c">setEs</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#ac97c5979efd3049d18b6edb83f359a20">_preAbstractTrace</a>[node]);</div>
2001
+ <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a7d0fdfbb8d5b38d29aaded6cf803150c">setEs</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#ac97c5979efd3049d18b6edb83f359a20">_preAbstractTrace</a>[node]);</div>
1987
2002
  <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div>
1988
2003
  <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; </div>
1989
2004
  <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; std::deque&lt;const ICFGNode*&gt; worklist;</div>
@@ -1996,7 +2011,7 @@ Friends</h2></td></tr>
1996
2011
  <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; }</div>
1997
2012
  <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; </div>
1998
2013
  <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#ac97c5979efd3049d18b6edb83f359a20">_preAbstractTrace</a>.erase(node);</div>
1999
- <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[node] = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>();</div>
2014
+ <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[node] = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
2000
2015
  <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;}</div>
2001
2016
  </div><!-- fragment -->
2002
2017
  </div>
@@ -2464,28 +2479,29 @@ Friends</h2></td></tr>
2464
2479
  <div class="fragment"><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160;{</div>
2465
2480
  <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> callsiteMaps = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0">getIndirectCallsites</a>();</div>
2466
2481
  <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> call_id = callsiteMaps.at(callNode);</div>
2467
- <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>().<a class="code" href="classSVF_1_1AbstractState.html#aa34516a95191c5ec56ce44a117e8b018">inVarToAddrsTable</a>(call_id))</div>
2482
+ <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>().<a class="code" href="classSVF_1_1AbstractState.html#aa34516a95191c5ec56ce44a117e8b018">inVarToAddrsTable</a>(call_id))</div>
2468
2483
  <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; {</div>
2469
2484
  <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">return</span>;</div>
2470
2485
  <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; }</div>
2471
- <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> Addrs = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(call_id); <span class="comment">//_svfir2ExeState-&gt;getEs()</span></div>
2472
- <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> addr = *Addrs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>().<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>();</div>
2473
- <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *func_var = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">getInternalID</a>(addr));</div>
2474
- <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *callfun = SVFUtil::dyn_cast&lt;SVFFunction&gt;(func_var-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>());</div>
2475
- <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">if</span> (callfun)</div>
2476
- <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; {</div>
2477
- <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> preES = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>();</div>
2478
- <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9885b50cf28b65bebb488442085fab26">_callSiteStack</a>.push_back(callNode);</div>
2479
- <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; </div>
2480
- <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[callNode] = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>();</div>
2481
- <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; </div>
2482
- <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a2e2253149e2bf114825a4e838118e012">handleFunc</a>(callfun);</div>
2483
- <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9885b50cf28b65bebb488442085fab26">_callSiteStack</a>.pop_back();</div>
2484
- <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="comment">// handle Ret node</span></div>
2485
- <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a> *retNode = callNode-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#ae23a7540609879ac0379fc53b4e7eead">getRetICFGNode</a>();</div>
2486
- <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[retNode] = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[callNode];</div>
2487
- <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; }</div>
2488
- <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;}</div>
2486
+ <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> Addrs =</div>
2487
+ <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(call_id); <span class="comment">//_svfir2ExeState-&gt;getEs()</span></div>
2488
+ <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> addr = *Addrs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>().<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>();</div>
2489
+ <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *func_var = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">getInternalID</a>(addr));</div>
2490
+ <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *callfun = SVFUtil::dyn_cast&lt;SVFFunction&gt;(func_var-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>());</div>
2491
+ <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">if</span> (callfun)</div>
2492
+ <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; {</div>
2493
+ <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> preES = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
2494
+ <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9885b50cf28b65bebb488442085fab26">_callSiteStack</a>.push_back(callNode);</div>
2495
+ <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; </div>
2496
+ <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[callNode] = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
2497
+ <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; </div>
2498
+ <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a2e2253149e2bf114825a4e838118e012">handleFunc</a>(callfun);</div>
2499
+ <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9885b50cf28b65bebb488442085fab26">_callSiteStack</a>.pop_back();</div>
2500
+ <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="comment">// handle Ret node</span></div>
2501
+ <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a> *retNode = callNode-&gt;<a class="code" href="classSVF_1_1CallICFGNode.html#ae23a7540609879ac0379fc53b4e7eead">getRetICFGNode</a>();</div>
2502
+ <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[retNode] = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[callNode];</div>
2503
+ <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; }</div>
2504
+ <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;}</div>
2489
2505
  </div><!-- fragment -->
2490
2506
  </div>
2491
2507
  </div>
@@ -2516,77 +2532,77 @@ Friends</h2></td></tr>
2516
2532
 
2517
2533
  <p>Reimplemented in <a class="el" href="classSVF_1_1BufOverflowChecker.html#af0e2276001df7d51c45b22d5d11ca09b">SVF::BufOverflowChecker</a>.</p>
2518
2534
 
2519
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01067">1067</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
2520
- <div class="fragment"><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;{</div>
2521
- <div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;<span class="preprocessor">#define SSE_FUNC_PROCESS(LLVM_NAME ,FUNC_NAME) \</span></div>
2522
- <div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;<span class="preprocessor"> auto sse_##FUNC_NAME = [this](const CallSite &amp;cs) { \</span></div>
2523
- <div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;<span class="preprocessor"> </span><span class="comment">/* run real ext function */</span><span class="preprocessor"> \</span></div>
2524
- <div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;<span class="preprocessor"> AbstractState&amp;es = _svfir2ExeState-&gt;getEs(); \</span></div>
2525
- <div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;<span class="preprocessor"> u32_t rhs_id = _svfir-&gt;getValueNode(cs.getArgument(0)); \</span></div>
2526
- <div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;<span class="preprocessor"> if (!es.inVarToValTable(rhs_id)) return; \</span></div>
2527
- <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;<span class="preprocessor"> u32_t rhs = _svfir2ExeState-&gt;getEs()[rhs_id].getInterval().lb().getIntNumeral(); \</span></div>
2528
- <div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;<span class="preprocessor"> s32_t res = FUNC_NAME(rhs); \</span></div>
2529
- <div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;<span class="preprocessor"> u32_t lhsId = _svfir-&gt;getValueNode(cs.getInstruction()); \</span></div>
2530
- <div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;<span class="preprocessor"> _svfir2ExeState-&gt;getEs()[lhsId] = IntervalValue(res); \</span></div>
2531
- <div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;<span class="preprocessor"> return; \</span></div>
2532
- <div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;<span class="preprocessor"> }; \</span></div>
2533
- <div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;<span class="preprocessor"> _func_map[#FUNC_NAME] = sse_##FUNC_NAME; \</span></div>
2534
- <div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;<span class="preprocessor"></span> </div>
2535
- <div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#abe92a0aebef4717d08c64655ac44c9af">isalnum</a>, <a class="code" href="extapi_8c.html#abe92a0aebef4717d08c64655ac44c9af">isalnum</a>);</div>
2536
- <div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#af947cbf1ae303e5297c9d68c68a6b9cb">isalpha</a>, <a class="code" href="extapi_8c.html#af947cbf1ae303e5297c9d68c68a6b9cb">isalpha</a>);</div>
2537
- <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#aaecd098576b00440124c44580144e8d5">isblank</a>, <a class="code" href="extapi_8c.html#aaecd098576b00440124c44580144e8d5">isblank</a>);</div>
2538
- <div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#a0008a4e8e7889734dc1d83297de07158">iscntrl</a>, <a class="code" href="extapi_8c.html#a0008a4e8e7889734dc1d83297de07158">iscntrl</a>);</div>
2539
- <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#a3fa45b35c8abf67a950b6d3d4063dede">isdigit</a>, <a class="code" href="extapi_8c.html#a3fa45b35c8abf67a950b6d3d4063dede">isdigit</a>);</div>
2540
- <div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#a49f40fd869fd0c90e4497fda08c89561">isgraph</a>, <a class="code" href="extapi_8c.html#a49f40fd869fd0c90e4497fda08c89561">isgraph</a>);</div>
2541
- <div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#a99355d8f0fb41ec43effb95189db0ed4">isprint</a>, <a class="code" href="extapi_8c.html#a99355d8f0fb41ec43effb95189db0ed4">isprint</a>);</div>
2542
- <div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#a9d60842d6ae065229ba810e6b01110da">ispunct</a>, <a class="code" href="extapi_8c.html#a9d60842d6ae065229ba810e6b01110da">ispunct</a>);</div>
2543
- <div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#a84b34b0058324ae5c0eae4956cf00cc5">isspace</a>, <a class="code" href="extapi_8c.html#a84b34b0058324ae5c0eae4956cf00cc5">isspace</a>);</div>
2544
- <div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#adadd6582d46775aab6a51e29d16d9f77">isupper</a>, <a class="code" href="extapi_8c.html#adadd6582d46775aab6a51e29d16d9f77">isupper</a>);</div>
2545
- <div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#adaf3aadefe3fc4fb07b6be0d7b880f53">isxdigit</a>, <a class="code" href="extapi_8c.html#adaf3aadefe3fc4fb07b6be0d7b880f53">isxdigit</a>);</div>
2546
- <div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="namespacellvm.html">llvm</a>.sin.f64, sin);</div>
2547
- <div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="namespacellvm.html">llvm</a>.cos.f64, cos);</div>
2548
- <div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="namespacellvm.html">llvm</a>.tan.f64, tan);</div>
2549
- <div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="namespacellvm.html">llvm</a>.log.f64, log);</div>
2550
- <div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(sinh, sinh);</div>
2551
- <div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(cosh, cosh);</div>
2552
- <div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(tanh, tanh);</div>
2553
- <div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; </div>
2554
- <div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keyword">auto</span> sse_svf_assert = [<span class="keyword">this</span>](<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> &amp;cs)</div>
2555
- <div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; {</div>
2556
- <div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callNode = SVFUtil::dyn_cast&lt;CallICFGNode&gt;(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
2557
- <div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a219313e979d779221116c1bc45becc1b">_checkpoints</a>.erase(callNode);</div>
2558
- <div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> arg0 = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(0));</div>
2559
- <div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a>&amp;es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>();</div>
2560
- <div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; es[arg0].getInterval().meet_with(<a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 1));</div>
2561
- <div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <span class="keywordflow">if</span> (es[arg0].getInterval().equals(<a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 1)))</div>
2562
- <div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; {</div>
2563
- <div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a05dc00b2bd9a8176aae31b6cfffe725d">SVFUtil::sucMsg</a>(<span class="stringliteral">&quot;The assertion is successfully verified!!\n&quot;</span>);</div>
2564
- <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; }</div>
2565
- <div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; <span class="keywordflow">else</span></div>
2566
- <div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; {</div>
2567
- <div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt;<span class="stringliteral">&quot;svf_assert Fail. &quot;</span> &lt;&lt; cs.getInstruction()-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
2568
- <div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; assert(<span class="keyword">false</span>);</div>
2569
- <div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; }</div>
2570
- <div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <span class="keywordflow">return</span>;</div>
2571
- <div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; };</div>
2572
- <div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">&quot;svf_assert&quot;</span>] = sse_svf_assert;</div>
2573
- <div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; </div>
2574
- <div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="keyword">auto</span> svf_print = [&amp;](<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> &amp;cs)</div>
2575
- <div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; {</div>
2576
- <div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; <span class="keywordflow">if</span> (cs.arg_size() &lt; 2) <span class="keywordflow">return</span>;</div>
2577
- <div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a>&amp;es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>();</div>
2578
- <div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> num_id = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(0));</div>
2579
- <div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> text = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a7dfd11b987d9ff9528277e23191ed95d">strRead</a>(cs.getArgument(1));</div>
2580
- <div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; assert(es.<a class="code" href="classSVF_1_1AbstractState.html#ab4d209d0739f2c45dbc2a7e61318e2e3">inVarToValTable</a>(num_id) &amp;&amp; <span class="stringliteral">&quot;print() should pass integer&quot;</span>);</div>
2581
- <div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> itv = es[num_id].getInterval();</div>
2582
- <div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;Text: &quot;</span> &lt;&lt; text &lt;&lt;<span class="stringliteral">&quot;, Value: &quot;</span> &lt;&lt; cs.getArgument(0)-&gt;<a class="code" href="classSVF_1_1AbstractState.html#a7c802c006225a50b1d83b5f78d0891fa">toString</a>() &lt;&lt; <span class="stringliteral">&quot;, PrintVal: &quot;</span> &lt;&lt; itv.<a class="code" href="classSVF_1_1IntervalValue.html#a5d73cc2aa0a6ed49e8301fa7b0cd5045">toString</a>() &lt;&lt; std::endl;</div>
2583
- <div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; <span class="keywordflow">return</span>;</div>
2584
- <div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; };</div>
2585
- <div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">&quot;svf_print&quot;</span>] = svf_print;</div>
2586
- <div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; </div>
2587
- <div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <span class="comment">// init _checkpoint_names</span></div>
2588
- <div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a2a1e1b72ed740cef4c3e57e3e32c3f75">_checkpoint_names</a>.insert(<span class="stringliteral">&quot;svf_assert&quot;</span>);</div>
2589
- <div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;};</div>
2535
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01070">1070</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
2536
+ <div class="fragment"><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;{</div>
2537
+ <div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;<span class="preprocessor">#define SSE_FUNC_PROCESS(LLVM_NAME ,FUNC_NAME) \</span></div>
2538
+ <div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;<span class="preprocessor"> auto sse_##FUNC_NAME = [this](const CallSite &amp;cs) { \</span></div>
2539
+ <div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;<span class="preprocessor"> </span><span class="comment">/* run real ext function */</span><span class="preprocessor"> \</span></div>
2540
+ <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;<span class="preprocessor"> AbstractState&amp;es = _svfir2AbsState-&gt;getAbsState(); \</span></div>
2541
+ <div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;<span class="preprocessor"> u32_t rhs_id = _svfir-&gt;getValueNode(cs.getArgument(0)); \</span></div>
2542
+ <div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;<span class="preprocessor"> if (!es.inVarToValTable(rhs_id)) return; \</span></div>
2543
+ <div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;<span class="preprocessor"> u32_t rhs = _svfir2AbsState-&gt;getAbsState()[rhs_id].getInterval().lb().getIntNumeral(); \</span></div>
2544
+ <div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;<span class="preprocessor"> s32_t res = FUNC_NAME(rhs); \</span></div>
2545
+ <div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;<span class="preprocessor"> u32_t lhsId = _svfir-&gt;getValueNode(cs.getInstruction()); \</span></div>
2546
+ <div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;<span class="preprocessor"> _svfir2AbsState-&gt;getAbsState()[lhsId] = IntervalValue(res); \</span></div>
2547
+ <div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;<span class="preprocessor"> return; \</span></div>
2548
+ <div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;<span class="preprocessor"> }; \</span></div>
2549
+ <div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;<span class="preprocessor"> _func_map[#FUNC_NAME] = sse_##FUNC_NAME;</span></div>
2550
+ <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; </div>
2551
+ <div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#abe92a0aebef4717d08c64655ac44c9af">isalnum</a>, <a class="code" href="extapi_8c.html#abe92a0aebef4717d08c64655ac44c9af">isalnum</a>);</div>
2552
+ <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#af947cbf1ae303e5297c9d68c68a6b9cb">isalpha</a>, <a class="code" href="extapi_8c.html#af947cbf1ae303e5297c9d68c68a6b9cb">isalpha</a>);</div>
2553
+ <div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#aaecd098576b00440124c44580144e8d5">isblank</a>, <a class="code" href="extapi_8c.html#aaecd098576b00440124c44580144e8d5">isblank</a>);</div>
2554
+ <div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#a0008a4e8e7889734dc1d83297de07158">iscntrl</a>, <a class="code" href="extapi_8c.html#a0008a4e8e7889734dc1d83297de07158">iscntrl</a>);</div>
2555
+ <div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#a3fa45b35c8abf67a950b6d3d4063dede">isdigit</a>, <a class="code" href="extapi_8c.html#a3fa45b35c8abf67a950b6d3d4063dede">isdigit</a>);</div>
2556
+ <div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#a49f40fd869fd0c90e4497fda08c89561">isgraph</a>, <a class="code" href="extapi_8c.html#a49f40fd869fd0c90e4497fda08c89561">isgraph</a>);</div>
2557
+ <div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#a99355d8f0fb41ec43effb95189db0ed4">isprint</a>, <a class="code" href="extapi_8c.html#a99355d8f0fb41ec43effb95189db0ed4">isprint</a>);</div>
2558
+ <div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#a9d60842d6ae065229ba810e6b01110da">ispunct</a>, <a class="code" href="extapi_8c.html#a9d60842d6ae065229ba810e6b01110da">ispunct</a>);</div>
2559
+ <div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#a84b34b0058324ae5c0eae4956cf00cc5">isspace</a>, <a class="code" href="extapi_8c.html#a84b34b0058324ae5c0eae4956cf00cc5">isspace</a>);</div>
2560
+ <div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#adadd6582d46775aab6a51e29d16d9f77">isupper</a>, <a class="code" href="extapi_8c.html#adadd6582d46775aab6a51e29d16d9f77">isupper</a>);</div>
2561
+ <div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="extapi_8c.html#adaf3aadefe3fc4fb07b6be0d7b880f53">isxdigit</a>, <a class="code" href="extapi_8c.html#adaf3aadefe3fc4fb07b6be0d7b880f53">isxdigit</a>);</div>
2562
+ <div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="namespacellvm.html">llvm</a>.sin.f64, sin);</div>
2563
+ <div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="namespacellvm.html">llvm</a>.cos.f64, cos);</div>
2564
+ <div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="namespacellvm.html">llvm</a>.tan.f64, tan);</div>
2565
+ <div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(<a class="code" href="namespacellvm.html">llvm</a>.log.f64, log);</div>
2566
+ <div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(sinh, sinh);</div>
2567
+ <div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(cosh, cosh);</div>
2568
+ <div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <a class="code" href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a>(tanh, tanh);</div>
2569
+ <div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; </div>
2570
+ <div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <span class="keyword">auto</span> sse_svf_assert = [<span class="keyword">this</span>](<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> &amp;cs)</div>
2571
+ <div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; {</div>
2572
+ <div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callNode = SVFUtil::dyn_cast&lt;CallICFGNode&gt;(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(cs.getInstruction()));</div>
2573
+ <div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a219313e979d779221116c1bc45becc1b">_checkpoints</a>.erase(callNode);</div>
2574
+ <div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> arg0 = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(0));</div>
2575
+ <div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a>&amp;es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
2576
+ <div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; es[arg0].getInterval().meet_with(<a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 1));</div>
2577
+ <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <span class="keywordflow">if</span> (es[arg0].getInterval().equals(<a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 1)))</div>
2578
+ <div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; {</div>
2579
+ <div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a05dc00b2bd9a8176aae31b6cfffe725d">SVFUtil::sucMsg</a>(<span class="stringliteral">&quot;The assertion is successfully verified!!\n&quot;</span>);</div>
2580
+ <div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; }</div>
2581
+ <div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; <span class="keywordflow">else</span></div>
2582
+ <div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; {</div>
2583
+ <div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt;<span class="stringliteral">&quot;svf_assert Fail. &quot;</span> &lt;&lt; cs.getInstruction()-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
2584
+ <div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; assert(<span class="keyword">false</span>);</div>
2585
+ <div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; }</div>
2586
+ <div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; <span class="keywordflow">return</span>;</div>
2587
+ <div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; };</div>
2588
+ <div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">&quot;svf_assert&quot;</span>] = sse_svf_assert;</div>
2589
+ <div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; </div>
2590
+ <div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <span class="keyword">auto</span> svf_print = [&amp;](<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> &amp;cs)</div>
2591
+ <div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; {</div>
2592
+ <div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="keywordflow">if</span> (cs.arg_size() &lt; 2) <span class="keywordflow">return</span>;</div>
2593
+ <div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a>&amp;es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
2594
+ <div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> num_id = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cs.getArgument(0));</div>
2595
+ <div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> text = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a7dfd11b987d9ff9528277e23191ed95d">strRead</a>(cs.getArgument(1));</div>
2596
+ <div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; assert(es.<a class="code" href="classSVF_1_1AbstractState.html#ab4d209d0739f2c45dbc2a7e61318e2e3">inVarToValTable</a>(num_id) &amp;&amp; <span class="stringliteral">&quot;print() should pass integer&quot;</span>);</div>
2597
+ <div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> itv = es[num_id].getInterval();</div>
2598
+ <div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;Text: &quot;</span> &lt;&lt; text &lt;&lt;<span class="stringliteral">&quot;, Value: &quot;</span> &lt;&lt; cs.getArgument(0)-&gt;<a class="code" href="classSVF_1_1AbstractState.html#a7c802c006225a50b1d83b5f78d0891fa">toString</a>() &lt;&lt; <span class="stringliteral">&quot;, PrintVal: &quot;</span> &lt;&lt; itv.<a class="code" href="classSVF_1_1IntervalValue.html#a5d73cc2aa0a6ed49e8301fa7b0cd5045">toString</a>() &lt;&lt; std::endl;</div>
2599
+ <div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="keywordflow">return</span>;</div>
2600
+ <div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; };</div>
2601
+ <div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">_func_map</a>[<span class="stringliteral">&quot;svf_print&quot;</span>] = svf_print;</div>
2602
+ <div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; </div>
2603
+ <div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="comment">// init _checkpoint_names</span></div>
2604
+ <div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a2a1e1b72ed740cef4c3e57e3e32c3f75">_checkpoint_names</a>.insert(<span class="stringliteral">&quot;svf_assert&quot;</span>);</div>
2605
+ <div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;};</div>
2590
2606
  </div><!-- fragment -->
2591
2607
  </div>
2592
2608
  </div>
@@ -2792,26 +2808,26 @@ Friends</h2></td></tr>
2792
2808
  </table>
2793
2809
  </div><div class="memdoc">
2794
2810
 
2795
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l00782">782</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
2796
- <div class="fragment"><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160;{</div>
2797
- <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="comment">// decreasing iterations</span></div>
2798
- <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> new_pre_es = pre_es.<a class="code" href="classSVF_1_1AbstractState.html#aa9f048614c0bdbe5e8562bfcc6288a97">narrowing</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[cycle_head]);</div>
2799
- <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> new_pre_vaddr_es = new_pre_es;</div>
2800
- <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a6292b9ebe6dd7e6857641210984bb815">narrowAddrs</a>(new_pre_es, <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[cycle_head]);</div>
2801
- <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">if</span> (new_pre_es &gt;= pre_es)</div>
2802
- <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; {</div>
2803
- <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="comment">// decreasing iterations - fixpoint reached</span></div>
2804
- <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; pre_es = new_pre_es;</div>
2805
- <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[cycle_head] = pre_es;</div>
2806
- <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2807
- <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; }</div>
2808
- <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordflow">else</span></div>
2809
- <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; {</div>
2810
- <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; pre_es = new_pre_es;</div>
2811
- <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[cycle_head] = pre_es;</div>
2812
- <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2813
- <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; }</div>
2814
- <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;}</div>
2811
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l00783">783</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
2812
+ <div class="fragment"><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;{</div>
2813
+ <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="comment">// decreasing iterations</span></div>
2814
+ <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> new_pre_es = pre_es.<a class="code" href="classSVF_1_1AbstractState.html#aa9f048614c0bdbe5e8562bfcc6288a97">narrowing</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[cycle_head]);</div>
2815
+ <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> new_pre_vaddr_es = new_pre_es;</div>
2816
+ <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a6292b9ebe6dd7e6857641210984bb815">narrowAddrs</a>(new_pre_es, <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[cycle_head]);</div>
2817
+ <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">if</span> (new_pre_es &gt;= pre_es)</div>
2818
+ <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; {</div>
2819
+ <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="comment">// decreasing iterations - fixpoint reached</span></div>
2820
+ <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; pre_es = new_pre_es;</div>
2821
+ <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[cycle_head] = pre_es;</div>
2822
+ <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2823
+ <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; }</div>
2824
+ <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">else</span></div>
2825
+ <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; {</div>
2826
+ <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; pre_es = new_pre_es;</div>
2827
+ <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[cycle_head] = pre_es;</div>
2828
+ <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2829
+ <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; }</div>
2830
+ <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160;}</div>
2815
2831
  </div><!-- fragment -->
2816
2832
  </div>
2817
2833
  </div>
@@ -2932,11 +2948,11 @@ Friends</h2></td></tr>
2932
2948
  <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">if</span> (!retPE-&gt;getLHSVar()-&gt;isPointer() &amp;&amp;</div>
2933
2949
  <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; !retPE-&gt;getLHSVar()-&gt;isConstDataOrAggDataButNotNullPtr())</div>
2934
2950
  <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; {</div>
2935
- <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>()[retPE-&gt;getLHSVarID()] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
2951
+ <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>()[retPE-&gt;getLHSVarID()] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
2936
2952
  <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; }</div>
2937
2953
  <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; }</div>
2938
2954
  <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; }</div>
2939
- <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[retNode] = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>();</div>
2955
+ <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[retNode] = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
2940
2956
  <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;}</div>
2941
2957
  </div><!-- fragment -->
2942
2958
  </div>
@@ -2975,7 +2991,7 @@ Friends</h2></td></tr>
2975
2991
  <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a> = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>();</div>
2976
2992
  <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#abc0d4715611b8f4a61e1da82658ef95f">_ander</a> = <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">AndersenWaveDiff::createAndersenWaveDiff</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>);</div>
2977
2993
  <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="comment">// init SVF Execution States</span></div>
2978
- <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFIR2AbsState.html">SVFIR2AbsState</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>);</div>
2994
+ <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFIR2AbsState.html">SVFIR2AbsState</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>);</div>
2979
2995
  <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; </div>
2980
2996
  <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="comment">// init SSE External API Handler</span></div>
2981
2997
  <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#adf3fad75a4f96aefe5c25e3405509fbe">_callgraph</a> = <a class="code" href="classSVF_1_1AbstractInterpretation.html#abc0d4715611b8f4a61e1da82658ef95f">_ander</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>();</div>
@@ -3034,32 +3050,32 @@ Friends</h2></td></tr>
3034
3050
  </dd>
3035
3051
  </dl>
3036
3052
 
3037
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l00888">888</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
3038
- <div class="fragment"><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160;{</div>
3039
- <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *callfun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(callNode-&gt;getCallSite());</div>
3040
- <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a> *retNode = callNode-&gt;getRetICFGNode();</div>
3041
- <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keywordflow">if</span> (retNode-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>().size() &gt; 0)</div>
3042
- <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; {</div>
3043
- <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> *retPE = SVFUtil::dyn_cast&lt;RetPE&gt;(*retNode-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>().begin()))</div>
3044
- <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; {</div>
3045
- <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> es;</div>
3046
- <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keywordflow">if</span> (!retPE-&gt;getLHSVar()-&gt;isPointer() &amp;&amp; !retPE-&gt;getLHSVar()-&gt;isConstDataOrAggDataButNotNullPtr())</div>
3047
- <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>()[retPE-&gt;getLHSVarID()] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
3048
- <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; }</div>
3049
- <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; }</div>
3050
- <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keywordflow">if</span> (!retNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().empty())</div>
3051
- <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; {</div>
3052
- <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="keywordflow">if</span> (retNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().size() == 1)</div>
3053
- <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; {</div>
3054
- <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; </div>
3055
- <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; }</div>
3056
- <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keywordflow">else</span></div>
3057
- <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; {</div>
3058
- <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keywordflow">return</span>;</div>
3059
- <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; }</div>
3060
- <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; }</div>
3061
- <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a2b0a2f7a662909d999634d0ec08cb29c">SkipRecursiveFunc</a>(callfun);</div>
3062
- <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160;}</div>
3053
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l00889">889</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
3054
+ <div class="fragment"><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160;{</div>
3055
+ <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *callfun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(callNode-&gt;getCallSite());</div>
3056
+ <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a> *retNode = callNode-&gt;getRetICFGNode();</div>
3057
+ <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordflow">if</span> (retNode-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>().size() &gt; 0)</div>
3058
+ <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; {</div>
3059
+ <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> *retPE = SVFUtil::dyn_cast&lt;RetPE&gt;(*retNode-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>().begin()))</div>
3060
+ <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; {</div>
3061
+ <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> es;</div>
3062
+ <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <span class="keywordflow">if</span> (!retPE-&gt;getLHSVar()-&gt;isPointer() &amp;&amp; !retPE-&gt;getLHSVar()-&gt;isConstDataOrAggDataButNotNullPtr())</div>
3063
+ <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>()[retPE-&gt;getLHSVarID()] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
3064
+ <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; }</div>
3065
+ <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; }</div>
3066
+ <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <span class="keywordflow">if</span> (!retNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().empty())</div>
3067
+ <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; {</div>
3068
+ <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keywordflow">if</span> (retNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().size() == 1)</div>
3069
+ <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; {</div>
3070
+ <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; </div>
3071
+ <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; }</div>
3072
+ <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <span class="keywordflow">else</span></div>
3073
+ <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; {</div>
3074
+ <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <span class="keywordflow">return</span>;</div>
3075
+ <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; }</div>
3076
+ <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; }</div>
3077
+ <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a2b0a2f7a662909d999634d0ec08cb29c">SkipRecursiveFunc</a>(callfun);</div>
3078
+ <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160;}</div>
3063
3079
  </div><!-- fragment -->
3064
3080
  </div>
3065
3081
  </div>
@@ -3094,40 +3110,40 @@ Friends</h2></td></tr>
3094
3110
  </dd>
3095
3111
  </dl>
3096
3112
 
3097
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l00915">915</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
3098
- <div class="fragment"><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160;{</div>
3099
- <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="comment">// handle Recursive Funcs, go throw every relevant funcs/blocks.</span></div>
3100
- <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="comment">// for every Call Argv, Ret , Global Vars, we make it as Top value</span></div>
3101
- <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const SVFBasicBlock *&gt;</a> blkWorkList;</div>
3102
- <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const ICFGNode *&gt;</a> instWorklist;</div>
3103
- <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> * bb: func-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a90e39f78f4908f8a8ef3948d9158791c">getReachableBBs</a>())</div>
3104
- <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; {</div>
3105
- <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst: bb-&gt;getInstructionList())</div>
3106
- <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; {</div>
3107
- <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* node = <a class="code" href="classSVF_1_1AbstractInterpretation.html#ab988e460fe92f0ba3c4cbee8e0c480a0">_icfg</a>-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(inst);</div>
3108
- <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt: node-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div>
3109
- <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; {</div>
3110
- <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *store = SVFUtil::dyn_cast&lt;StoreStmt&gt;(stmt))</div>
3111
- <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; {</div>
3112
- <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *rhsVar = store-&gt;getRHSVar();</div>
3113
- <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lhs = store-&gt;getLHSVarID();</div>
3114
- <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a>&amp;curES = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>();</div>
3115
- <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="keywordflow">if</span> (curES.<a class="code" href="classSVF_1_1AbstractState.html#aa34516a95191c5ec56ce44a117e8b018">inVarToAddrsTable</a>(lhs))</div>
3116
- <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; {</div>
3117
- <div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <span class="keywordflow">if</span> (!rhsVar-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>() &amp;&amp; !rhsVar-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a091ef22d4fc428985d604b03f287a941">isConstDataOrAggDataButNotNullPtr</a>())</div>
3118
- <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; {</div>
3119
- <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="keyword">const</span> <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> &amp;addrs =curES.<a class="code" href="classSVF_1_1AbstractState.html#a234d0b11624febec605bc028f093240b">getAddrs</a>(lhs);</div>
3120
- <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: addrs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>())</div>
3121
- <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; {</div>
3122
- <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; curES.<a class="code" href="classSVF_1_1AbstractState.html#a1f935ea8ab16b04699284bf92bbbb23c">store</a>(addr, <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>());</div>
3123
- <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; }</div>
3124
- <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; }</div>
3125
- <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; }</div>
3126
- <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; }</div>
3127
- <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; }</div>
3128
- <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; }</div>
3129
- <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; }</div>
3130
- <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160;}</div>
3113
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l00916">916</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
3114
+ <div class="fragment"><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;{</div>
3115
+ <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="comment">// handle Recursive Funcs, go throw every relevant funcs/blocks.</span></div>
3116
+ <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <span class="comment">// for every Call Argv, Ret , Global Vars, we make it as Top value</span></div>
3117
+ <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const SVFBasicBlock *&gt;</a> blkWorkList;</div>
3118
+ <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const ICFGNode *&gt;</a> instWorklist;</div>
3119
+ <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> * bb: func-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a90e39f78f4908f8a8ef3948d9158791c">getReachableBBs</a>())</div>
3120
+ <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; {</div>
3121
+ <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst: bb-&gt;getInstructionList())</div>
3122
+ <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; {</div>
3123
+ <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* node = <a class="code" href="classSVF_1_1AbstractInterpretation.html#ab988e460fe92f0ba3c4cbee8e0c480a0">_icfg</a>-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(inst);</div>
3124
+ <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt: node-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div>
3125
+ <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; {</div>
3126
+ <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *store = SVFUtil::dyn_cast&lt;StoreStmt&gt;(stmt))</div>
3127
+ <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; {</div>
3128
+ <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *rhsVar = store-&gt;getRHSVar();</div>
3129
+ <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lhs = store-&gt;getLHSVarID();</div>
3130
+ <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a>&amp;curES = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
3131
+ <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="keywordflow">if</span> (curES.<a class="code" href="classSVF_1_1AbstractState.html#aa34516a95191c5ec56ce44a117e8b018">inVarToAddrsTable</a>(lhs))</div>
3132
+ <div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; {</div>
3133
+ <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="keywordflow">if</span> (!rhsVar-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>() &amp;&amp; !rhsVar-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a091ef22d4fc428985d604b03f287a941">isConstDataOrAggDataButNotNullPtr</a>())</div>
3134
+ <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; {</div>
3135
+ <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="keyword">const</span> <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> &amp;addrs =curES.<a class="code" href="classSVF_1_1AbstractState.html#a234d0b11624febec605bc028f093240b">getAddrs</a>(lhs);</div>
3136
+ <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: addrs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>())</div>
3137
+ <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; {</div>
3138
+ <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; curES.<a class="code" href="classSVF_1_1AbstractState.html#a1f935ea8ab16b04699284bf92bbbb23c">store</a>(addr, <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>());</div>
3139
+ <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; }</div>
3140
+ <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; }</div>
3141
+ <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; }</div>
3142
+ <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; }</div>
3143
+ <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; }</div>
3144
+ <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; }</div>
3145
+ <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; }</div>
3146
+ <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160;}</div>
3131
3147
  </div><!-- fragment -->
3132
3148
  </div>
3133
3149
  </div>
@@ -3163,36 +3179,37 @@ Friends</h2></td></tr>
3163
3179
  </dl>
3164
3180
  <dl class="section return"><dt>Returns</dt><dd>the string </dd></dl>
3165
3181
 
3166
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01139">1139</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
3167
- <div class="fragment"><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;{</div>
3168
- <div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <span class="comment">// sse read string nodeID-&gt;string</span></div>
3169
- <div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a>&amp;es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">getEs</a>();</div>
3170
- <div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str0;</div>
3171
- <div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; </div>
3172
- <div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = 0; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> &lt; <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(); <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>++)</div>
3173
- <div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; {</div>
3174
- <div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; <span class="comment">// dead loop for string and break if there&#39;s a \0. If no \0, it will throw err.</span></div>
3175
- <div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="keywordflow">if</span> (!es.<a class="code" href="classSVF_1_1AbstractState.html#aa34516a95191c5ec56ce44a117e8b018">inVarToAddrsTable</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(rhs))) <span class="keywordflow">continue</span>;</div>
3176
- <div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> expr0 = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a10a83572bf5dee369b54cda74f402073">getGepObjAddress</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(rhs), <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>);</div>
3177
- <div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> val(<a class="code" href="structSVF_1_1AbstractValue.html#af93f4b54b34e74579ad177ead629b53aa3a7df767184a0bf01de99351747f545a">AbstractValue::UnknownType</a>);</div>
3178
- <div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: expr0.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>())</div>
3179
- <div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; {</div>
3180
- <div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; val.join_with(es.<a class="code" href="classSVF_1_1AbstractState.html#aa057c4c27e613d239161c04daf3a46d0">load</a>(addr));</div>
3181
- <div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; }</div>
3182
- <div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; <span class="keywordflow">if</span> (val.isUnknown())</div>
3183
- <div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; <span class="keywordflow">return</span> str0;</div>
3184
- <div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="keywordflow">if</span> (!val.is_numeral())</div>
3185
- <div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; {</div>
3186
- <div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; <span class="keywordflow">break</span>;</div>
3187
- <div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; }</div>
3188
- <div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="keywordflow">if</span> ((<span class="keywordtype">char</span>) val.getIntNumeral() == <span class="charliteral">&#39;\0&#39;</span>)</div>
3182
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01142">1142</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
3183
+ <div class="fragment"><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;{</div>
3184
+ <div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; <span class="comment">// sse read string nodeID-&gt;string</span></div>
3185
+ <div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a>&amp;es = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">getAbsState</a>();</div>
3186
+ <div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str0;</div>
3187
+ <div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; </div>
3188
+ <div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = 0; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> &lt; <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(); <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>++)</div>
3189
+ <div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; {</div>
3190
+ <div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <span class="comment">// dead loop for string and break if there&#39;s a \0. If no \0, it will throw err.</span></div>
3191
+ <div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; <span class="keywordflow">if</span> (!es.<a class="code" href="classSVF_1_1AbstractState.html#aa34516a95191c5ec56ce44a117e8b018">inVarToAddrsTable</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(rhs))) <span class="keywordflow">continue</span>;</div>
3192
+ <div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> expr0 =</div>
3193
+ <div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a10a83572bf5dee369b54cda74f402073">getGepObjAddress</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(rhs), <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>);</div>
3194
+ <div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> val(<a class="code" href="structSVF_1_1AbstractValue.html#af93f4b54b34e74579ad177ead629b53aa3a7df767184a0bf01de99351747f545a">AbstractValue::UnknownType</a>);</div>
3195
+ <div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: expr0.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>())</div>
3196
+ <div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; {</div>
3197
+ <div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; val.join_with(es.<a class="code" href="classSVF_1_1AbstractState.html#aa057c4c27e613d239161c04daf3a46d0">load</a>(addr));</div>
3198
+ <div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; }</div>
3199
+ <div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; <span class="keywordflow">if</span> (val.isUnknown())</div>
3200
+ <div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <span class="keywordflow">return</span> str0;</div>
3201
+ <div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="keywordflow">if</span> (!val.is_numeral())</div>
3189
3202
  <div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; {</div>
3190
3203
  <div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; <span class="keywordflow">break</span>;</div>
3191
3204
  <div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; }</div>
3192
- <div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; str0.push_back((<span class="keywordtype">char</span>) val.getInterval().getIntNumeral());</div>
3193
- <div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; }</div>
3194
- <div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="keywordflow">return</span> str0;</div>
3195
- <div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;}</div>
3205
+ <div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; <span class="keywordflow">if</span> ((<span class="keywordtype">char</span>) val.getIntNumeral() == <span class="charliteral">&#39;\0&#39;</span>)</div>
3206
+ <div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; {</div>
3207
+ <div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="keywordflow">break</span>;</div>
3208
+ <div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; }</div>
3209
+ <div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; str0.push_back((<span class="keywordtype">char</span>) val.getInterval().getIntNumeral());</div>
3210
+ <div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; }</div>
3211
+ <div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="keywordflow">return</span> str0;</div>
3212
+ <div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;}</div>
3196
3213
  </div><!-- fragment -->
3197
3214
  </div>
3198
3215
  </div>
@@ -3229,130 +3246,131 @@ Friends</h2></td></tr>
3229
3246
  <p>Usually called by a <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a> overflow check, or external API (like memcpy) overflow check Defitions of Terms: source node: malloc or gepStmt(array), sink node: gepStmt or external API (like memcpy) it tracks the value flow from sink to source, and accumulates offset then compare the accumulated offset and malloc size (or gepStmt array size)</p>
3230
3247
  <p>CallNode means Source Node</p>
3231
3248
 
3232
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01319">1319</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
3233
- <div class="fragment"><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;{</div>
3234
- <div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; <a class="code" href="classSVF_1_1FILOWorkList.html">SVF::FILOWorkList&lt;const SVFValue *&gt;</a> worklist;</div>
3235
- <div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const SVFValue *&gt;</a> visited;</div>
3236
- <div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; visited.insert(value);</div>
3237
- <div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const ICFGNode *, IntervalValue&gt;</a> gep_offsets;</div>
3238
- <div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(value);</div>
3239
- <div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> total_bytes(0);</div>
3240
- <div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#a071a624c91def82a4bbbf3806c7b7eea">empty</a>())</div>
3241
- <div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; {</div>
3242
- <div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; value = worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#a3fd9acb6d09fd142bfd402fdf8cac93b">pop</a>();</div>
3243
- <div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* ins = SVFUtil::dyn_cast&lt;SVFInstruction&gt;(value))</div>
3244
- <div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; {</div>
3245
- <div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* node = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(ins);</div>
3246
- <div class="line"><a name="l01339"></a><span class="lineno"> 1339</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))</div>
3247
- <div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; {</div>
3248
- <div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; <span class="comment">//to handle Ret PE</span></div>
3249
- <div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a29fe7c63c61a7aec8ae1477a061f5bf2">AccessMemoryViaRetNode</a>(callnode, worklist, visited);</div>
3250
- <div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; }</div>
3251
- <div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt: node-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div>
3252
- <div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; {</div>
3253
- <div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast&lt;CopyStmt&gt;(stmt))</div>
3254
- <div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; {</div>
3255
- <div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <span class="comment">// Copy Stmt, forward to lhs</span></div>
3256
- <div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a550c12360c2149ba0e55bdf4cf7b8dd0">AccessMemoryViaCopyStmt</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>, worklist, visited);</div>
3257
- <div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; }</div>
3258
- <div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *load = SVFUtil::dyn_cast&lt;LoadStmt&gt;(stmt))</div>
3259
- <div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; {</div>
3260
- <div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; <span class="comment">// Load Stmt, forward to the Var from last Store Stmt</span></div>
3261
- <div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#ac60581a57407fa4c65b1975f5be687b8">AccessMemoryViaLoadStmt</a>(load, worklist, visited);</div>
3262
- <div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; }</div>
3263
- <div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> *gep = SVFUtil::dyn_cast&lt;GepStmt&gt;(stmt))</div>
3264
- <div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160; {</div>
3265
- <div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; <span class="comment">// there are 3 type of gepStmt</span></div>
3266
- <div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; <span class="comment">// 1. ptr get offset</span></div>
3267
- <div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; <span class="comment">// 2. struct get field</span></div>
3268
- <div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; <span class="comment">// 3. array get element</span></div>
3269
- <div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; <span class="comment">// for array gep, there are two kind of overflow checking</span></div>
3270
- <div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; <span class="comment">// Arr [Struct.C * 10] arr, Struct.C {i32 a, i32 b}</span></div>
3271
- <div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; <span class="comment">// arr[11].a = **, it is &quot;lhs = gep *arr, 0 (ptr), 11 (arrIdx), 0 (ptr), 0(struct field)&quot;</span></div>
3272
- <div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; <span class="comment">// 1) in this case arrIdx 11 is overflow.</span></div>
3273
- <div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; <span class="comment">// Other case,</span></div>
3274
- <div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; <span class="comment">// Struct.C {i32 a, [i32*10] b, i32 c}, C.b[11] = 1</span></div>
3275
- <div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; <span class="comment">// it is &quot;lhs - gep *C, 0(ptr), 1(struct field), 0(ptr), 11(arrIdx)&quot;</span></div>
3276
- <div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; <span class="comment">// 2) in this case arrIdx 11 is larger than its getOffsetVar.Type Array([i32*10])</span></div>
3277
- <div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; </div>
3278
- <div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; <span class="comment">// therefore, if last getOffsetVar.Type is not the Array, just check the overall offset and its</span></div>
3279
- <div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; <span class="comment">// gep source type size (together with totalOffset along the value flow).</span></div>
3280
- <div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; <span class="comment">// Alloc Size: TBD, but totalOffset + current Gep offset</span></div>
3281
- <div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; </div>
3282
- <div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; <span class="comment">// otherwise, if last getOffsetVar.Type is the Array, check the last idx and array. (just offset,</span></div>
3283
- <div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; <span class="comment">// not with totalOffset during check)</span></div>
3284
- <div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; <span class="comment">// Alloc Size: getOffsetVar.TypeByteSize()</span></div>
3285
- <div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; </div>
3286
- <div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; <span class="comment">// make sure it has OffsetVarAndGepType Pair</span></div>
3287
- <div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; <span class="keywordflow">if</span> (gep-&gt;getOffsetVarAndGepTypePairVec().size() &gt; 0)</div>
3288
- <div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; {</div>
3289
- <div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; <span class="comment">// check if last OffsetVarAndGepType Pair is Array</span></div>
3290
- <div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* gepType = gep-&gt;getOffsetVarAndGepTypePairVec().back().second;</div>
3291
- <div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160; <span class="comment">// if its array</span></div>
3292
- <div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; <span class="keywordflow">if</span> (gepType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a330084f9a3deb6e5acb52a8ee3eb7fe4">isArrayTy</a>())</div>
3293
- <div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; {</div>
3294
- <div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> rhs_type_bytes = gepType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
3295
- <div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; <span class="comment">// if gepStmt&#39;s base var is Array, compares offset with the arraysize</span></div>
3296
- <div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(rhs_type_bytes);</div>
3297
- <div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; }</div>
3298
- <div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; <span class="keywordflow">else</span></div>
3299
- <div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; {</div>
3300
- <div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> byteOffset;</div>
3301
- <div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160; <span class="keywordflow">if</span> (gep-&gt;isConstantOffset())</div>
3302
- <div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; {</div>
3303
- <div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; byteOffset = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(gep-&gt;accumulateConstantByteOffset());</div>
3304
- <div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; }</div>
3305
- <div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; <span class="keywordflow">else</span></div>
3306
- <div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; {</div>
3307
- <div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> byteOffset = <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a21e927af79c73460ff5629cbd4961163">getByteOffset</a>(gep).<a class="code" href="structSVF_1_1AbstractValue.html#acbcec6f55d23e6cd278fe8572a68f393">getInterval</a>();</div>
3308
- <div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; }</div>
3309
- <div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; <span class="comment">// for variable offset, join with accumulate gep offset</span></div>
3310
- <div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; gep_offsets[gep-&gt;getICFGNode()] = byteOffset;</div>
3311
- <div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; total_bytes = total_bytes + byteOffset;</div>
3312
- <div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; }</div>
3313
- <div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; }</div>
3314
- <div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; <span class="keywordflow">if</span> (!visited.count(gep-&gt;getRHSVar()-&gt;getValue()))</div>
3315
- <div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; {</div>
3316
- <div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; visited.insert(gep-&gt;getRHSVar()-&gt;getValue());</div>
3317
- <div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(gep-&gt;getRHSVar()-&gt;getValue());</div>
3318
- <div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; }</div>
3319
- <div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; }</div>
3320
- <div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> *addr = SVFUtil::dyn_cast&lt;AddrStmt&gt;(stmt))</div>
3321
- <div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; {</div>
3322
- <div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160; <span class="comment">// addrStmt is source node.</span></div>
3323
- <div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> arr_type_size = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a0e8b546f608417e218c2fab5a5893135">getAllocaInstByteSize</a>(addr);</div>
3324
- <div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(arr_type_size) - total_bytes;</div>
3325
- <div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; }</div>
3326
- <div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; }</div>
3327
- <div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; }</div>
3328
- <div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVF::SVFGlobalValue</a>* gvalue = SVFUtil::dyn_cast&lt;SVF::SVFGlobalValue&gt;(value))</div>
3329
- <div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; {</div>
3330
- <div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> arr_type_size = 0;</div>
3331
- <div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svftype = gvalue-&gt;getType();</div>
3332
- <div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFPointerType&gt;(svftype))</div>
3333
- <div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; {</div>
3334
- <div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>* ptrArrType = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a2057e8e1c0aaf39e74f0a8fb2a1b580c">getPointeeElement</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(value))))</div>
3335
- <div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; arr_type_size = ptrArrType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
3336
- <div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; <span class="keywordflow">else</span></div>
3337
- <div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; arr_type_size = svftype-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
3338
- <div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; }</div>
3339
- <div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; <span class="keywordflow">else</span></div>
3340
- <div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; arr_type_size = svftype-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
3341
- <div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(arr_type_size) - total_bytes;</div>
3342
- <div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; }</div>
3343
- <div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVF::SVFArgument</a>* arg = SVFUtil::dyn_cast&lt;SVF::SVFArgument&gt;(value))</div>
3344
- <div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; {</div>
3345
- <div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; <span class="comment">// to handle call PE</span></div>
3346
- <div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a048e203517ac727e6fe0653e1f24052c">AccessMemoryViaCallArgs</a>(arg, worklist, visited);</div>
3347
- <div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; }</div>
3348
- <div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; <span class="keywordflow">else</span></div>
3349
- <div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; {</div>
3350
- <div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; <span class="comment">// maybe SVFConstant</span></div>
3351
- <div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0);</div>
3352
- <div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; }</div>
3353
- <div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; }</div>
3354
- <div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0);</div>
3355
- <div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;}</div>
3249
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l01331">1331</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
3250
+ <div class="fragment"><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;{</div>
3251
+ <div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; <a class="code" href="classSVF_1_1FILOWorkList.html">SVF::FILOWorkList&lt;const SVFValue *&gt;</a> worklist;</div>
3252
+ <div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const SVFValue *&gt;</a> visited;</div>
3253
+ <div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; visited.insert(value);</div>
3254
+ <div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const ICFGNode *, IntervalValue&gt;</a> gep_offsets;</div>
3255
+ <div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(value);</div>
3256
+ <div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> total_bytes(0);</div>
3257
+ <div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#a071a624c91def82a4bbbf3806c7b7eea">empty</a>())</div>
3258
+ <div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; {</div>
3259
+ <div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; value = worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#a3fd9acb6d09fd142bfd402fdf8cac93b">pop</a>();</div>
3260
+ <div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* ins = SVFUtil::dyn_cast&lt;SVFInstruction&gt;(value))</div>
3261
+ <div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; {</div>
3262
+ <div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* node = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>()-&gt;<a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(ins);</div>
3263
+ <div class="line"><a name="l01351"></a><span class="lineno"> 1351</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))</div>
3264
+ <div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; {</div>
3265
+ <div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; <span class="comment">//to handle Ret PE</span></div>
3266
+ <div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a29fe7c63c61a7aec8ae1477a061f5bf2">AccessMemoryViaRetNode</a>(callnode, worklist, visited);</div>
3267
+ <div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; }</div>
3268
+ <div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt: node-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div>
3269
+ <div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160; {</div>
3270
+ <div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast&lt;CopyStmt&gt;(stmt))</div>
3271
+ <div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; {</div>
3272
+ <div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; <span class="comment">// Copy Stmt, forward to lhs</span></div>
3273
+ <div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a550c12360c2149ba0e55bdf4cf7b8dd0">AccessMemoryViaCopyStmt</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>, worklist, visited);</div>
3274
+ <div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; }</div>
3275
+ <div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *load = SVFUtil::dyn_cast&lt;LoadStmt&gt;(stmt))</div>
3276
+ <div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; {</div>
3277
+ <div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; <span class="comment">// Load Stmt, forward to the Var from last Store Stmt</span></div>
3278
+ <div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#ac60581a57407fa4c65b1975f5be687b8">AccessMemoryViaLoadStmt</a>(load, worklist, visited);</div>
3279
+ <div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; }</div>
3280
+ <div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> *gep = SVFUtil::dyn_cast&lt;GepStmt&gt;(stmt))</div>
3281
+ <div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; {</div>
3282
+ <div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; <span class="comment">// there are 3 type of gepStmt</span></div>
3283
+ <div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; <span class="comment">// 1. ptr get offset</span></div>
3284
+ <div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; <span class="comment">// 2. struct get field</span></div>
3285
+ <div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; <span class="comment">// 3. array get element</span></div>
3286
+ <div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; <span class="comment">// for array gep, there are two kind of overflow checking</span></div>
3287
+ <div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; <span class="comment">// Arr [Struct.C * 10] arr, Struct.C {i32 a, i32 b}</span></div>
3288
+ <div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; <span class="comment">// arr[11].a = **, it is &quot;lhs = gep *arr, 0 (ptr), 11 (arrIdx), 0 (ptr), 0(struct field)&quot;</span></div>
3289
+ <div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; <span class="comment">// 1) in this case arrIdx 11 is overflow.</span></div>
3290
+ <div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; <span class="comment">// Other case,</span></div>
3291
+ <div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; <span class="comment">// Struct.C {i32 a, [i32*10] b, i32 c}, C.b[11] = 1</span></div>
3292
+ <div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; <span class="comment">// it is &quot;lhs - gep *C, 0(ptr), 1(struct field), 0(ptr), 11(arrIdx)&quot;</span></div>
3293
+ <div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; <span class="comment">// 2) in this case arrIdx 11 is larger than its getOffsetVar.Type Array([i32*10])</span></div>
3294
+ <div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; </div>
3295
+ <div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160; <span class="comment">// therefore, if last getOffsetVar.Type is not the Array, just check the overall offset and its</span></div>
3296
+ <div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160; <span class="comment">// gep source type size (together with totalOffset along the value flow).</span></div>
3297
+ <div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; <span class="comment">// Alloc Size: TBD, but totalOffset + current Gep offset</span></div>
3298
+ <div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; </div>
3299
+ <div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; <span class="comment">// otherwise, if last getOffsetVar.Type is the Array, check the last idx and array. (just offset,</span></div>
3300
+ <div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; <span class="comment">// not with totalOffset during check)</span></div>
3301
+ <div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; <span class="comment">// Alloc Size: getOffsetVar.TypeByteSize()</span></div>
3302
+ <div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; </div>
3303
+ <div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; <span class="comment">// make sure it has OffsetVarAndGepType Pair</span></div>
3304
+ <div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; <span class="keywordflow">if</span> (gep-&gt;getOffsetVarAndGepTypePairVec().size() &gt; 0)</div>
3305
+ <div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; {</div>
3306
+ <div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160; <span class="comment">// check if last OffsetVarAndGepType Pair is Array</span></div>
3307
+ <div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* gepType = gep-&gt;getOffsetVarAndGepTypePairVec().back().second;</div>
3308
+ <div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; <span class="comment">// if its array</span></div>
3309
+ <div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; <span class="keywordflow">if</span> (gepType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a330084f9a3deb6e5acb52a8ee3eb7fe4">isArrayTy</a>())</div>
3310
+ <div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; {</div>
3311
+ <div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> rhs_type_bytes = gepType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
3312
+ <div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; <span class="comment">// if gepStmt&#39;s base var is Array, compares offset with the arraysize</span></div>
3313
+ <div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(rhs_type_bytes);</div>
3314
+ <div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; }</div>
3315
+ <div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; <span class="keywordflow">else</span></div>
3316
+ <div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; {</div>
3317
+ <div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> byteOffset;</div>
3318
+ <div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; <span class="keywordflow">if</span> (gep-&gt;isConstantOffset())</div>
3319
+ <div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; {</div>
3320
+ <div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; byteOffset = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(gep-&gt;accumulateConstantByteOffset());</div>
3321
+ <div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; }</div>
3322
+ <div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; <span class="keywordflow">else</span></div>
3323
+ <div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; {</div>
3324
+ <div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> byteOffset =</div>
3325
+ <div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a21e927af79c73460ff5629cbd4961163">getByteOffset</a>(gep).<a class="code" href="structSVF_1_1AbstractValue.html#acbcec6f55d23e6cd278fe8572a68f393">getInterval</a>();</div>
3326
+ <div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; }</div>
3327
+ <div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160; <span class="comment">// for variable offset, join with accumulate gep offset</span></div>
3328
+ <div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; gep_offsets[gep-&gt;getICFGNode()] = byteOffset;</div>
3329
+ <div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; total_bytes = total_bytes + byteOffset;</div>
3330
+ <div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; }</div>
3331
+ <div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; }</div>
3332
+ <div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; <span class="keywordflow">if</span> (!visited.count(gep-&gt;getRHSVar()-&gt;getValue()))</div>
3333
+ <div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; {</div>
3334
+ <div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; visited.insert(gep-&gt;getRHSVar()-&gt;getValue());</div>
3335
+ <div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; worklist.<a class="code" href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">push</a>(gep-&gt;getRHSVar()-&gt;getValue());</div>
3336
+ <div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; }</div>
3337
+ <div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; }</div>
3338
+ <div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> *addr = SVFUtil::dyn_cast&lt;AddrStmt&gt;(stmt))</div>
3339
+ <div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; {</div>
3340
+ <div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; <span class="comment">// addrStmt is source node.</span></div>
3341
+ <div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> arr_type_size = <a class="code" href="classSVF_1_1AbstractInterpretation.html#a0e8b546f608417e218c2fab5a5893135">getAllocaInstByteSize</a>(addr);</div>
3342
+ <div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(arr_type_size) - total_bytes;</div>
3343
+ <div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; }</div>
3344
+ <div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; }</div>
3345
+ <div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; }</div>
3346
+ <div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFGlobalValue.html">SVF::SVFGlobalValue</a>* gvalue = SVFUtil::dyn_cast&lt;SVF::SVFGlobalValue&gt;(value))</div>
3347
+ <div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; {</div>
3348
+ <div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> arr_type_size = 0;</div>
3349
+ <div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svftype = gvalue-&gt;getType();</div>
3350
+ <div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFPointerType&gt;(svftype))</div>
3351
+ <div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; {</div>
3352
+ <div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>* ptrArrType = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a2057e8e1c0aaf39e74f0a8fb2a1b580c">getPointeeElement</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(value))))</div>
3353
+ <div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; arr_type_size = ptrArrType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
3354
+ <div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; <span class="keywordflow">else</span></div>
3355
+ <div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; arr_type_size = svftype-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
3356
+ <div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; }</div>
3357
+ <div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; <span class="keywordflow">else</span></div>
3358
+ <div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; arr_type_size = svftype-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
3359
+ <div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(arr_type_size) - total_bytes;</div>
3360
+ <div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; }</div>
3361
+ <div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVF::SVFArgument</a>* arg = SVFUtil::dyn_cast&lt;SVF::SVFArgument&gt;(value))</div>
3362
+ <div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; {</div>
3363
+ <div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; <span class="comment">// to handle call PE</span></div>
3364
+ <div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a048e203517ac727e6fe0653e1f24052c">AccessMemoryViaCallArgs</a>(arg, worklist, visited);</div>
3365
+ <div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; }</div>
3366
+ <div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <span class="keywordflow">else</span></div>
3367
+ <div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; {</div>
3368
+ <div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; <span class="comment">// maybe SVFConstant</span></div>
3369
+ <div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0);</div>
3370
+ <div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; }</div>
3371
+ <div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; }</div>
3372
+ <div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0);</div>
3373
+ <div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;}</div>
3356
3374
  </div><!-- fragment -->
3357
3375
  </div>
3358
3376
  </div>
@@ -3390,27 +3408,27 @@ Friends</h2></td></tr>
3390
3408
  </table>
3391
3409
  </div><div class="memdoc">
3392
3410
 
3393
- <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l00759">759</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
3394
- <div class="fragment"><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;{</div>
3395
- <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="comment">// increasing iterations</span></div>
3396
- <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> new_pre_es = pre_es.<a class="code" href="classSVF_1_1AbstractState.html#afd37c4419cfc79b6765fa243fcbea573">widening</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[cycle_head]);</div>
3397
- <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> new_pre_vaddr_es = new_pre_es;</div>
3398
- <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">_svfir2ExeState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#ad41b11a2a046f253353f5e888c0004ca">widenAddrs</a>(new_pre_es, <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[cycle_head]);</div>
3399
- <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; </div>
3400
- <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">if</span> (pre_es &gt;= new_pre_es)</div>
3401
- <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; {</div>
3402
- <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="comment">// increasing iterations - fixpoint reached</span></div>
3403
- <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; pre_es = new_pre_es;</div>
3404
- <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[cycle_head] = pre_es;</div>
3405
- <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
3406
- <div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; }</div>
3407
- <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">else</span></div>
3408
- <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; {</div>
3409
- <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; pre_es = new_pre_es;</div>
3410
- <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[cycle_head] = pre_es;</div>
3411
- <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3412
- <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; }</div>
3413
- <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160;}</div>
3411
+ <p class="definition">Definition at line <a class="el" href="AbstractInterpretation_8cpp_source.html#l00760">760</a> of file <a class="el" href="AbstractInterpretation_8cpp_source.html">AbstractInterpretation.cpp</a>.</p>
3412
+ <div class="fragment"><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;{</div>
3413
+ <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="comment">// increasing iterations</span></div>
3414
+ <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> new_pre_es = pre_es.<a class="code" href="classSVF_1_1AbstractState.html#afd37c4419cfc79b6765fa243fcbea573">widening</a>(<a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[cycle_head]);</div>
3415
+ <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <a class="code" href="classSVF_1_1AbstractState.html">AbstractState</a> new_pre_vaddr_es = new_pre_es;</div>
3416
+ <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">_svfir2AbsState</a>-&gt;<a class="code" href="classSVF_1_1SVFIR2AbsState.html#ad41b11a2a046f253353f5e888c0004ca">widenAddrs</a>(new_pre_es, <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[cycle_head]);</div>
3417
+ <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; </div>
3418
+ <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">if</span> (pre_es &gt;= new_pre_es)</div>
3419
+ <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; {</div>
3420
+ <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="comment">// increasing iterations - fixpoint reached</span></div>
3421
+ <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; pre_es = new_pre_es;</div>
3422
+ <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[cycle_head] = pre_es;</div>
3423
+ <div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
3424
+ <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; }</div>
3425
+ <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">else</span></div>
3426
+ <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; {</div>
3427
+ <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; pre_es = new_pre_es;</div>
3428
+ <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <a class="code" href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">_postAbstractTrace</a>[cycle_head] = pre_es;</div>
3429
+ <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
3430
+ <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; }</div>
3431
+ <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160;}</div>
3414
3432
  </div><!-- fragment -->
3415
3433
  </div>
3416
3434
  </div>
@@ -3922,8 +3940,8 @@ Friends</h2></td></tr>
3922
3940
 
3923
3941
  </div>
3924
3942
  </div>
3925
- <a id="af78f068a373ebb6a2f14dcde980a9dae"></a>
3926
- <h2 class="memtitle"><span class="permalink"><a href="#af78f068a373ebb6a2f14dcde980a9dae">&#9670;&nbsp;</a></span>_svfir2ExeState</h2>
3943
+ <a id="a9c592b91a1e3d72ada730387232a2fcf"></a>
3944
+ <h2 class="memtitle"><span class="permalink"><a href="#a9c592b91a1e3d72ada730387232a2fcf">&#9670;&nbsp;</a></span>_svfir2AbsState</h2>
3927
3945
 
3928
3946
  <div class="memitem">
3929
3947
  <div class="memproto">
@@ -3932,7 +3950,7 @@ Friends</h2></td></tr>
3932
3950
  <td class="mlabels-left">
3933
3951
  <table class="memname">
3934
3952
  <tr>
3935
- <td class="memname"><a class="el" href="classSVF_1_1SVFIR2AbsState.html">SVFIR2AbsState</a>* SVF::AbstractInterpretation::_svfir2ExeState</td>
3953
+ <td class="memname"><a class="el" href="classSVF_1_1SVFIR2AbsState.html">SVFIR2AbsState</a>* SVF::AbstractInterpretation::_svfir2AbsState</td>
3936
3954
  </tr>
3937
3955
  </table>
3938
3956
  </td>
@@ -3989,14 +4007,14 @@ Friends</h2></td></tr>
3989
4007
  <div class="ttc" id="aclassSVF_1_1ObjVar_html"><div class="ttname"><a href="classSVF_1_1ObjVar.html">SVF::ObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00315">SVFVariables.h:315</a></div></div>
3990
4008
  <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a738d1768c632f86d04599ec1aa53952a"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a738d1768c632f86d04599ec1aa53952a">SVF::AbstractInterpretation::markRecursiveFuns</a></div><div class="ttdeci">void markRecursiveFuns()</div><div class="ttdoc">mark recursive functions by detecting SCC in callgraph</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00138">AbstractInterpretation.cpp:138</a></div></div>
3991
4009
  <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a44deea0e4cbc98bf999598d7862fe115"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a44deea0e4cbc98bf999598d7862fe115">SVF::SVFIR2AbsState::handlePhi</a></div><div class="ttdeci">void handlePhi(const PhiStmt *phi)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8cpp_source.html#l01071">SVFIR2AbsState.cpp:1071</a></div></div>
3992
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a5bba3c0570d73acc743742a30af1b0b4"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a5bba3c0570d73acc743742a30af1b0b4">SVF::AbstractInterpretation::getStrlen</a></div><div class="ttdeci">AbstractValue getStrlen(const SVF::SVFValue *strValue)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01451">AbstractInterpretation.cpp:1451</a></div></div>
4010
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a5bba3c0570d73acc743742a30af1b0b4"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a5bba3c0570d73acc743742a30af1b0b4">SVF::AbstractInterpretation::getStrlen</a></div><div class="ttdeci">AbstractValue getStrlen(const SVF::SVFValue *strValue)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01464">AbstractInterpretation.cpp:1464</a></div></div>
3993
4011
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a9815a5b31ac7dc21239d08e5b9f61106"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVF::SVFUtil::getSVFCallSite</a></div><div class="ttdeci">CallSite getSVFCallSite(const SVFInstruction *inst)</div><div class="ttdoc">Return LLVM callsite given an instruction.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00196">SVFUtil.h:196</a></div></div>
3994
4012
  <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a6292b9ebe6dd7e6857641210984bb815"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a6292b9ebe6dd7e6857641210984bb815">SVF::SVFIR2AbsState::narrowAddrs</a></div><div class="ttdeci">void narrowAddrs(AbstractState &amp;lhs, const AbstractState &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8cpp_source.html#l00332">SVFIR2AbsState.cpp:332</a></div></div>
3995
4013
  <div class="ttc" id="anamespaceSVF_html_a41375daa7cc99317d0aa2a21dc643b88a53d18d0ea8b11173db3d2f60f838ffe1"><div class="ttname"><a href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88a53d18d0ea8b11173db3d2f60f838ffe1">SVF::AEKind::AbstractExecution</a></div><div class="ttdeci">@ AbstractExecution</div></div>
3996
4014
  <div class="ttc" id="aclassSVF_1_1ICFGNode_html_a6c68f52dd90728073fb79141df9b0661"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">SVF::ICFGNode::getSVFStmts</a></div><div class="ttdeci">const SVFStmtList &amp; getSVFStmts() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00127">ICFGNode.h:127</a></div></div>
3997
4015
  <div class="ttc" id="aclassSVF_1_1SelectStmt_html"><div class="ttname"><a href="classSVF_1_1SelectStmt.html">SVF::SelectStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00881">SVFStatements.h:881</a></div></div>
3998
4016
  <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#l00171">PointerAnalysis.h:171</a></div></div>
3999
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a2b0a2f7a662909d999634d0ec08cb29c"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a2b0a2f7a662909d999634d0ec08cb29c">SVF::AbstractInterpretation::SkipRecursiveFunc</a></div><div class="ttdeci">virtual void SkipRecursiveFunc(const SVFFunction *func)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00915">AbstractInterpretation.cpp:915</a></div></div>
4017
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a2b0a2f7a662909d999634d0ec08cb29c"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a2b0a2f7a662909d999634d0ec08cb29c">SVF::AbstractInterpretation::SkipRecursiveFunc</a></div><div class="ttdeci">virtual void SkipRecursiveFunc(const SVFFunction *func)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00916">AbstractInterpretation.cpp:916</a></div></div>
4000
4018
  <div class="ttc" id="aclassSVF_1_1IntervalValue_html_a144e17cec654e83654298b379ed4ce9f"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#a144e17cec654e83654298b379ed4ce9f">SVF::IntervalValue::meet_with</a></div><div class="ttdeci">void meet_with(const IntervalValue &amp;other)</div><div class="ttdoc">Return a intersected IntervalValue.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00446">IntervalValue.h:446</a></div></div>
4001
4019
  <div class="ttc" id="aclassSVF_1_1ICFG_html_a9addf6fec78687c835e60d06cc7bc604"><div class="ttname"><a href="classSVF_1_1ICFG.html#a9addf6fec78687c835e60d06cc7bc604">SVF::ICFG::getSubNodes</a></div><div class="ttdeci">const std::vector&lt; const ICFGNode * &gt; &amp; getSubNodes(const ICFGNode *node) const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00221">ICFG.h:221</a></div></div>
4002
4020
  <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#l00670">SVFStatements.h:670</a></div></div>
@@ -4009,11 +4027,10 @@ Friends</h2></td></tr>
4009
4027
  <div class="ttc" id="aclassSVF_1_1SVFValue_html_a11f2d9b6e969ede6fca2c204cc15b821"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">SVF::SVFValue::getType</a></div><div class="ttdeci">virtual const SVFType * getType() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00256">SVFValue.h:256</a></div></div>
4010
4028
  <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a3c1b3407928ab39c68300e9d8f225d46"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a3c1b3407928ab39c68300e9d8f225d46">SVF::AbstractInterpretation::CallGraphSCC</a></div><div class="ttdeci">SCCDetection&lt; PTACallGraph * &gt; CallGraphSCC</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00114">AbstractInterpretation.h:114</a></div></div>
4011
4029
  <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>
4012
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_af78f068a373ebb6a2f14dcde980a9dae"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#af78f068a373ebb6a2f14dcde980a9dae">SVF::AbstractInterpretation::_svfir2ExeState</a></div><div class="ttdeci">SVFIR2AbsState * _svfir2ExeState</div><div class="ttdoc">Execution State, used to store the Interval Value of every SVF variable.</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00345">AbstractInterpretation.h:345</a></div></div>
4013
4030
  <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>
4014
4031
  <div class="ttc" id="anamespaceSVF_html_a366625858f450a1ea5f985a3c83e0f14"><div class="ttname"><a href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">SVF::u64_t</a></div><div class="ttdeci">unsigned long long u64_t</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00048">GeneralType.h:48</a></div></div>
4015
4032
  <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>
4016
- <div class="ttc" id="aclassSVF_1_1AEStat_html_a798d07cc0a36ce0d9010ab86d1ec216f"><div class="ttname"><a href="classSVF_1_1AEStat.html#a798d07cc0a36ce0d9010ab86d1ec216f">SVF::AEStat::performStat</a></div><div class="ttdeci">void performStat() override</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01006">AbstractInterpretation.cpp:1006</a></div></div>
4033
+ <div class="ttc" id="aclassSVF_1_1AEStat_html_a798d07cc0a36ce0d9010ab86d1ec216f"><div class="ttname"><a href="classSVF_1_1AEStat.html#a798d07cc0a36ce0d9010ab86d1ec216f">SVF::AEStat::performStat</a></div><div class="ttdeci">void performStat() override</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01009">AbstractInterpretation.cpp:1009</a></div></div>
4017
4034
  <div class="ttc" id="aclassSVF_1_1AbstractState_html_aff46e9d0fb20cedd54323c808d06f7cf"><div class="ttname"><a href="classSVF_1_1AbstractState.html#aff46e9d0fb20cedd54323c808d06f7cf">SVF::AbstractState::inLocToAddrsTable</a></div><div class="ttdeci">bool inLocToAddrsTable(u32_t id) const</div><div class="ttdoc">whether the memory address stores memory addresses</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00227">AbstractState.h:227</a></div></div>
4018
4035
  <div class="ttc" id="aclassSVF_1_1SCCDetection_html_a123b5006a6da7053e5e357140da3c5a3"><div class="ttname"><a href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">SVF::SCCDetection::find</a></div><div class="ttdeci">void find(void)</div><div class="ttdef"><b>Definition:</b> <a href="SCC_8h_source.html#l00308">SCC.h:308</a></div></div>
4019
4036
  <div class="ttc" id="aclassSVF_1_1IntervalValue_html_a43f48c744f7bda0dc689b8f186449371"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#a43f48c744f7bda0dc689b8f186449371">SVF::IntervalValue::minus_infinity</a></div><div class="ttdeci">static NumericLiteral minus_infinity()</div><div class="ttdoc">Get minus infinity -oo.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00066">IntervalValue.h:66</a></div></div>
@@ -4028,7 +4045,7 @@ Friends</h2></td></tr>
4028
4045
  <div class="ttc" id="astructSVF_1_1AbstractValue_html_aecd8d41379dd6496772537ad51d1cb02"><div class="ttname"><a href="structSVF_1_1AbstractValue.html#aecd8d41379dd6496772537ad51d1cb02">SVF::AbstractValue::ub</a></div><div class="ttdeci">const NumericLiteral &amp; ub() const</div><div class="ttdef"><b>Definition:</b> <a href="AbstractValue_8h_source.html#l00204">AbstractValue.h:204</a></div></div>
4029
4046
  <div class="ttc" id="aclassSVF_1_1AbstractState_html_a234d0b11624febec605bc028f093240b"><div class="ttname"><a href="classSVF_1_1AbstractState.html#a234d0b11624febec605bc028f093240b">SVF::AbstractState::getAddrs</a></div><div class="ttdeci">AbstractValue &amp; getAddrs(u32_t id)</div><div class="ttdoc">get memory addresses of variable</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00187">AbstractState.h:187</a></div></div>
4030
4047
  <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#l00610">SVFStatements.h:610</a></div></div>
4031
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a568e2247536de76694dabfc5a5052b57"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a568e2247536de76694dabfc5a5052b57">SVF::AbstractInterpretation::handleMemset</a></div><div class="ttdeci">virtual void handleMemset(const SVFValue *dst, AbstractValue elem, AbstractValue len)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01622">AbstractInterpretation.cpp:1622</a></div></div>
4048
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a568e2247536de76694dabfc5a5052b57"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a568e2247536de76694dabfc5a5052b57">SVF::AbstractInterpretation::handleMemset</a></div><div class="ttdeci">virtual void handleMemset(const SVFValue *dst, AbstractValue elem, AbstractValue len)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01640">AbstractInterpretation.cpp:1640</a></div></div>
4032
4049
  <div class="ttc" id="acJSON_8h_html_a750b5d744c39a06bfb13e6eb010e35d0"><div class="ttname"><a href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a></div><div class="ttdeci">int index</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00170">cJSON.h:170</a></div></div>
4033
4050
  <div class="ttc" id="aclassSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00180">GenericGraph.h:180</a></div></div>
4034
4051
  <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a618fc324a6c205d7e1b471bd850377a9"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a618fc324a6c205d7e1b471bd850377a9">SVF::AbstractInterpretation::_svfir</a></div><div class="ttdeci">SVFIR * _svfir</div><div class="ttdoc">protected data members, also used in subclasses</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00342">AbstractInterpretation.h:342</a></div></div>
@@ -4042,7 +4059,7 @@ Friends</h2></td></tr>
4042
4059
  <div class="ttc" id="aclassSVF_1_1SVFFunction_html_a067bd6dbaf74a028d546fa56b095791b"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a067bd6dbaf74a028d546fa56b095791b">SVF::SVFFunction::getAnnotations</a></div><div class="ttdeci">const std::vector&lt; std::string &gt; &amp; getAnnotations() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00466">SVFValue.h:466</a></div></div>
4043
4060
  <div class="ttc" id="aAbstractInterpretation_8cpp_html_a6ded577f411d8dd34071fba96989f93a"><div class="ttname"><a href="AbstractInterpretation_8cpp.html#a6ded577f411d8dd34071fba96989f93a">SSE_FUNC_PROCESS</a></div><div class="ttdeci">#define SSE_FUNC_PROCESS(LLVM_NAME,FUNC_NAME)</div></div>
4044
4061
  <div class="ttc" id="aclassSVF_1_1AssignStmt_html_a4cec89489e82c60c287cae3327f3f01d"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">SVF::AssignStmt::getRHSVarID</a></div><div class="ttdeci">NodeID getRHSVarID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00298">SVFStatements.h:298</a></div></div>
4045
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a0e8b546f608417e218c2fab5a5893135"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a0e8b546f608417e218c2fab5a5893135">SVF::AbstractInterpretation::getAllocaInstByteSize</a></div><div class="ttdeci">u32_t getAllocaInstByteSize(const AddrStmt *addr)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01286">AbstractInterpretation.cpp:1286</a></div></div>
4062
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a0e8b546f608417e218c2fab5a5893135"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a0e8b546f608417e218c2fab5a5893135">SVF::AbstractInterpretation::getAllocaInstByteSize</a></div><div class="ttdeci">u32_t getAllocaInstByteSize(const AddrStmt *addr)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01296">AbstractInterpretation.cpp:1296</a></div></div>
4046
4063
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00241">SVFUtil.h:241</a></div></div>
4047
4064
  <div class="ttc" id="aclassSVF_1_1ValVar_html"><div class="ttname"><a href="classSVF_1_1ValVar.html">SVF::ValVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00262">SVFVariables.h:262</a></div></div>
4048
4065
  <div class="ttc" id="aclassSVF_1_1SVFStat_html_a730cc814fede3edb563aa9957c869e9e"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a730cc814fede3edb563aa9957c869e9e">SVF::SVFStat::startClk</a></div><div class="ttdeci">virtual void startClk()</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00058">SVFStat.h:58</a></div></div>
@@ -4061,15 +4078,14 @@ Friends</h2></td></tr>
4061
4078
  <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a4d614da483954db61664603cf0cf72e0"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a4d614da483954db61664603cf0cf72e0">SVF::SVFIR2AbsState::handleStore</a></div><div class="ttdeci">void handleStore(const StoreStmt *store)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8cpp_source.html#l00912">SVFIR2AbsState.cpp:912</a></div></div>
4062
4079
  <div class="ttc" id="aclassSVF_1_1Options_html_ab25f7ec430ba1d41597fc409b758b193"><div class="ttname"><a href="classSVF_1_1Options.html#ab25f7ec430ba1d41597fc409b758b193">SVF::Options::WidenDelay</a></div><div class="ttdeci">static const Option&lt; u32_t &gt; WidenDelay</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00265">Options.h:265</a></div></div>
4063
4080
  <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>
4064
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a7dfd11b987d9ff9528277e23191ed95d"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a7dfd11b987d9ff9528277e23191ed95d">SVF::AbstractInterpretation::strRead</a></div><div class="ttdeci">std::string strRead(const SVFValue *rhs)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01139">AbstractInterpretation.cpp:1139</a></div></div>
4081
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a7dfd11b987d9ff9528277e23191ed95d"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a7dfd11b987d9ff9528277e23191ed95d">SVF::AbstractInterpretation::strRead</a></div><div class="ttdeci">std::string strRead(const SVFValue *rhs)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01142">AbstractInterpretation.cpp:1142</a></div></div>
4065
4082
  <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a839a881ecff03f73102c1b48d9dbfb88"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a839a881ecff03f73102c1b48d9dbfb88">SVF::SVFIR2AbsState::handleRet</a></div><div class="ttdeci">void handleRet(const RetPE *retPE)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8cpp_source.html#l01099">SVFIR2AbsState.cpp:1099</a></div></div>
4066
4083
  <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a2a317e4263c4d8acbc5088a18a3849aa"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a2a317e4263c4d8acbc5088a18a3849aa">SVF::AbstractInterpretation::directCallFunPass</a></div><div class="ttdeci">virtual void directCallFunPass(const CallICFGNode *callNode)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00622">AbstractInterpretation.cpp:622</a></div></div>
4067
4084
  <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a21e927af79c73460ff5629cbd4961163"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a21e927af79c73460ff5629cbd4961163">SVF::SVFIR2AbsState::getByteOffset</a></div><div class="ttdeci">AbstractValue getByteOffset(const GepStmt *gep)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8cpp_source.html#l00415">SVFIR2AbsState.cpp:415</a></div></div>
4068
4085
  <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>
4069
- <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_afe8766165bfc4be1f9d5f5df25c954a3"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#afe8766165bfc4be1f9d5f5df25c954a3">SVF::SVFIR2AbsState::getEs</a></div><div class="ttdeci">AbstractState &amp; getEs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8h_source.html#l00054">SVFIR2AbsState.h:54</a></div></div>
4070
4086
  <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a13fdb4a6a6d09e3504fdad16b88616daa9cc269dadf9cff7d399c54d9570a6614"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa9cc269dadf9cff7d399c54d9570a6614">SVF::AbstractInterpretation::MEMCPY</a></div><div class="ttdeci">@ MEMCPY</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00113">AbstractInterpretation.h:113</a></div></div>
4071
4087
  <div class="ttc" id="aclassSVF_1_1SVFType_html"><div class="ttname"><a href="classSVF_1_1SVFType.html">SVF::SVFType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00156">SVFType.h:156</a></div></div>
4072
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a048e203517ac727e6fe0653e1f24052c"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a048e203517ac727e6fe0653e1f24052c">SVF::AbstractInterpretation::AccessMemoryViaCallArgs</a></div><div class="ttdeci">void AccessMemoryViaCallArgs(const SVF::SVFArgument *arg, SVF::FILOWorkList&lt; const SVFValue * &gt; &amp;worklist, Set&lt; const SVFValue * &gt; &amp;visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01731">AbstractInterpretation.cpp:1731</a></div></div>
4088
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a048e203517ac727e6fe0653e1f24052c"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a048e203517ac727e6fe0653e1f24052c">SVF::AbstractInterpretation::AccessMemoryViaCallArgs</a></div><div class="ttdeci">void AccessMemoryViaCallArgs(const SVF::SVFArgument *arg, SVF::FILOWorkList&lt; const SVFValue * &gt; &amp;worklist, Set&lt; const SVFValue * &gt; &amp;visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01751">AbstractInterpretation.cpp:1751</a></div></div>
4073
4089
  <div class="ttc" id="aclassSVF_1_1SVFVar_html_a747b2c92c81d32fcd357e80d2d8fe7cc"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a747b2c92c81d32fcd357e80d2d8fe7cc">SVF::SVFVar::hasIncomingEdges</a></div><div class="ttdeci">bool hasIncomingEdges(SVFStmt::PEDGEK kind) const</div><div class="ttdoc">Has incoming SVFIR statements (edges)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00158">SVFVariables.h:158</a></div></div>
4074
4090
  <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_af13e2b1c28a16e046776187de62d3c20"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#af13e2b1c28a16e046776187de62d3c20">SVF::SVFIR2AbsState::handleCmp</a></div><div class="ttdeci">void handleCmp(const CmpStmt *cmp)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8cpp_source.html#l00700">SVFIR2AbsState.cpp:700</a></div></div>
4075
4091
  <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_ac3f8e4602627135c6fb03ba843893d6a"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#ac3f8e4602627135c6fb03ba843893d6a">SVF::AbstractInterpretation::hasSwitchBranchES</a></div><div class="ttdeci">bool hasSwitchBranchES(const SVFVar *var, s64_t succ, AbstractState &amp;es)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00449">AbstractInterpretation.cpp:449</a></div></div>
@@ -4080,7 +4096,7 @@ Friends</h2></td></tr>
4080
4096
  <div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a0bddf297a2d8cd59ce9a232f0229f248"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0bddf297a2d8cd59ce9a232f0229f248">SVF::PointerAnalysis::getCallGraphSCC</a></div><div class="ttdeci">CallGraphSCC * getCallGraphSCC() const</div><div class="ttdoc">Return call graph SCC.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00176">PointerAnalysis.h:176</a></div></div>
4081
4097
  <div class="ttc" id="aextapi_8c_html_a9d60842d6ae065229ba810e6b01110da"><div class="ttname"><a href="extapi_8c.html#a9d60842d6ae065229ba810e6b01110da">ispunct</a></div><div class="ttdeci">int ispunct(int argument)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00872">extapi.c:872</a></div></div>
4082
4098
  <div class="ttc" id="aclassSVF_1_1FILOWorkList_html_afcf3fcda18e8d3e2bad70a51376c0ce1"><div class="ttname"><a href="classSVF_1_1FILOWorkList.html#afcf3fcda18e8d3e2bad70a51376c0ce1">SVF::FILOWorkList::push</a></div><div class="ttdeci">bool push(const Data &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00257">WorkList.h:257</a></div></div>
4083
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a550c12360c2149ba0e55bdf4cf7b8dd0"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a550c12360c2149ba0e55bdf4cf7b8dd0">SVF::AbstractInterpretation::AccessMemoryViaCopyStmt</a></div><div class="ttdeci">void AccessMemoryViaCopyStmt(const CopyStmt *copy, SVF::FILOWorkList&lt; const SVFValue * &gt; &amp;worklist, Set&lt; const SVFValue * &gt; &amp;visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01702">AbstractInterpretation.cpp:1702</a></div></div>
4099
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a550c12360c2149ba0e55bdf4cf7b8dd0"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a550c12360c2149ba0e55bdf4cf7b8dd0">SVF::AbstractInterpretation::AccessMemoryViaCopyStmt</a></div><div class="ttdeci">void AccessMemoryViaCopyStmt(const CopyStmt *copy, SVF::FILOWorkList&lt; const SVFValue * &gt; &amp;worklist, Set&lt; const SVFValue * &gt; &amp;visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01721">AbstractInterpretation.cpp:1721</a></div></div>
4084
4100
  <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a9b5e58476c372570551da971d22c5c02"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a9b5e58476c372570551da971d22c5c02">SVF::AbstractInterpretation::_recursiveFuns</a></div><div class="ttdeci">Set&lt; const SVFFunction * &gt; _recursiveFuns</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00358">AbstractInterpretation.h:358</a></div></div>
4085
4101
  <div class="ttc" id="aclassSVF_1_1AbstractState_html_afd37c4419cfc79b6765fa243fcbea573"><div class="ttname"><a href="classSVF_1_1AbstractState.html#afd37c4419cfc79b6765fa243fcbea573">SVF::AbstractState::widening</a></div><div class="ttdeci">AbstractState widening(const AbstractState &amp;other)</div><div class="ttdoc">domain widen with other, and return the widened domain</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8cpp_source.html#l00058">AbstractState.cpp:58</a></div></div>
4086
4102
  <div class="ttc" id="aclassSVF_1_1WTONode_html"><div class="ttname"><a href="classSVF_1_1WTONode.html">SVF::WTONode</a></div><div class="ttdef"><b>Definition:</b> <a href="WTO_8h_source.html#l00046">WTO.h:46</a></div></div>
@@ -4088,35 +4104,37 @@ Friends</h2></td></tr>
4088
4104
  <div class="ttc" id="aAbstractInterpretation_8cpp_html_a6baa35cec0782ac3179849752a732e5c"><div class="ttname"><a href="AbstractInterpretation_8cpp.html#a6baa35cec0782ac3179849752a732e5c">_reverse_predicate</a></div><div class="ttdeci">Map&lt; s32_t, s32_t &gt; _reverse_predicate</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00045">AbstractInterpretation.cpp:45</a></div></div>
4089
4105
  <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>
4090
4106
  <div class="ttc" id="aclassSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00045">SVFVariables.h:45</a></div></div>
4091
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a1b8e1e0cc9803687a0eb951015ac59af"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a1b8e1e0cc9803687a0eb951015ac59af">SVF::AbstractInterpretation::widenFixpointPass</a></div><div class="ttdeci">bool widenFixpointPass(const ICFGNode *cycle_head, AbstractState &amp;pre_es)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00759">AbstractInterpretation.cpp:759</a></div></div>
4092
- <div class="ttc" id="aclassSVF_1_1AEStat_html_ae2cfe939670689a4ec5030c096a5f546"><div class="ttname"><a href="classSVF_1_1AEStat.html#ae2cfe939670689a4ec5030c096a5f546">SVF::AEStat::countStateSize</a></div><div class="ttdeci">void countStateSize()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00951">AbstractInterpretation.cpp:951</a></div></div>
4107
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a1b8e1e0cc9803687a0eb951015ac59af"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a1b8e1e0cc9803687a0eb951015ac59af">SVF::AbstractInterpretation::widenFixpointPass</a></div><div class="ttdeci">bool widenFixpointPass(const ICFGNode *cycle_head, AbstractState &amp;pre_es)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00760">AbstractInterpretation.cpp:760</a></div></div>
4108
+ <div class="ttc" id="aclassSVF_1_1AEStat_html_ae2cfe939670689a4ec5030c096a5f546"><div class="ttname"><a href="classSVF_1_1AEStat.html#ae2cfe939670689a4ec5030c096a5f546">SVF::AEStat::countStateSize</a></div><div class="ttdeci">void countStateSize()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00952">AbstractInterpretation.cpp:952</a></div></div>
4109
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a9c592b91a1e3d72ada730387232a2fcf"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a9c592b91a1e3d72ada730387232a2fcf">SVF::AbstractInterpretation::_svfir2AbsState</a></div><div class="ttdeci">SVFIR2AbsState * _svfir2AbsState</div><div class="ttdoc">Execution State, used to store the Interval Value of every SVF variable.</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00345">AbstractInterpretation.h:345</a></div></div>
4093
4110
  <div class="ttc" id="aclassSVF_1_1ICFG_html_ae0b05ce161d62362642803158228e5d0"><div class="ttname"><a href="classSVF_1_1ICFG.html#ae0b05ce161d62362642803158228e5d0">SVF::ICFG::getGlobalICFGNode</a></div><div class="ttdeci">GlobalICFGNode * getGlobalICFGNode() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00211">ICFG.h:211</a></div></div>
4094
4111
  <div class="ttc" id="aclassSVF_1_1WTOCycle_html_a807c883d1cfe98c791c903125742f95b"><div class="ttname"><a href="classSVF_1_1WTOCycle.html#a807c883d1cfe98c791c903125742f95b">SVF::WTOCycle::begin</a></div><div class="ttdeci">Iterator begin() const</div><div class="ttdoc">Begin iterator over the components.</div><div class="ttdef"><b>Definition:</b> <a href="WTO_8h_source.html#l00418">WTO.h:418</a></div></div>
4095
4112
  <div class="ttc" id="aclassSVF_1_1IntraCFGEdge_html_a2657751b285cb6db8084da38b00dcab9"><div class="ttname"><a href="classSVF_1_1IntraCFGEdge.html#a2657751b285cb6db8084da38b00dcab9">SVF::IntraCFGEdge::getCondition</a></div><div class="ttdeci">const SVFValue * getCondition() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00140">ICFGEdge.h:140</a></div></div>
4096
4113
  <div class="ttc" id="aclassSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00489">SVFStatements.h:489</a></div></div>
4097
4114
  <div class="ttc" id="aclassSVF_1_1IntervalValue_html"><div class="ttname"><a href="classSVF_1_1IntervalValue.html">SVF::IntervalValue</a></div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00043">IntervalValue.h:43</a></div></div>
4098
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a6cac9b69d85111a5a26373ec848a3282"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a6cac9b69d85111a5a26373ec848a3282">SVF::AbstractInterpretation::handleExtAPI</a></div><div class="ttdeci">virtual void handleExtAPI(const CallICFGNode *call)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01170">AbstractInterpretation.cpp:1170</a></div></div>
4115
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a6cac9b69d85111a5a26373ec848a3282"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a6cac9b69d85111a5a26373ec848a3282">SVF::AbstractInterpretation::handleExtAPI</a></div><div class="ttdeci">virtual void handleExtAPI(const CallICFGNode *call)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01174">AbstractInterpretation.cpp:1174</a></div></div>
4099
4116
  <div class="ttc" id="aclassSVF_1_1AbstractState_html_aa057c4c27e613d239161c04daf3a46d0"><div class="ttname"><a href="classSVF_1_1AbstractState.html#aa057c4c27e613d239161c04daf3a46d0">SVF::AbstractState::load</a></div><div class="ttdeci">virtual AbstractValue &amp; load(u32_t addr)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00329">AbstractState.h:329</a></div></div>
4100
4117
  <div class="ttc" id="aclassSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00406">GenericGraph.h:406</a></div></div>
4101
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_adf02c5bf1b86f00163b114a78e03120c"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#adf02c5bf1b86f00163b114a78e03120c">SVF::AbstractInterpretation::handleMemcpy</a></div><div class="ttdeci">virtual void handleMemcpy(const SVFValue *dst, const SVFValue *src, AbstractValue len, u32_t start_idx)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01545">AbstractInterpretation.cpp:1545</a></div></div>
4118
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_adf02c5bf1b86f00163b114a78e03120c"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#adf02c5bf1b86f00163b114a78e03120c">SVF::AbstractInterpretation::handleMemcpy</a></div><div class="ttdeci">virtual void handleMemcpy(const SVFValue *dst, const SVFValue *src, AbstractValue len, u32_t start_idx)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01560">AbstractInterpretation.cpp:1560</a></div></div>
4102
4119
  <div class="ttc" id="aclassSVF_1_1AssignStmt_html_ad03d28d16754c9049dd4d0ad3b6c1e28"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28">SVF::AssignStmt::getRHSVar</a></div><div class="ttdeci">SVFVar * getRHSVar() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00290">SVFStatements.h:290</a></div></div>
4103
4120
  <div class="ttc" id="aextapi_8c_html_a99355d8f0fb41ec43effb95189db0ed4"><div class="ttname"><a href="extapi_8c.html#a99355d8f0fb41ec43effb95189db0ed4">isprint</a></div><div class="ttdeci">int isprint(int c)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00867">extapi.c:867</a></div></div>
4104
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a29fe7c63c61a7aec8ae1477a061f5bf2"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a29fe7c63c61a7aec8ae1477a061f5bf2">SVF::AbstractInterpretation::AccessMemoryViaRetNode</a></div><div class="ttdeci">void AccessMemoryViaRetNode(const CallICFGNode *callnode, SVF::FILOWorkList&lt; const SVFValue * &gt; &amp;worklist, Set&lt; const SVFValue * &gt; &amp;visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01677">AbstractInterpretation.cpp:1677</a></div></div>
4121
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a29fe7c63c61a7aec8ae1477a061f5bf2"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a29fe7c63c61a7aec8ae1477a061f5bf2">SVF::AbstractInterpretation::AccessMemoryViaRetNode</a></div><div class="ttdeci">void AccessMemoryViaRetNode(const CallICFGNode *callnode, SVF::FILOWorkList&lt; const SVFValue * &gt; &amp;worklist, Set&lt; const SVFValue * &gt; &amp;visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01696">AbstractInterpretation.cpp:1696</a></div></div>
4105
4122
  <div class="ttc" id="aclassSVF_1_1AbstractState_html"><div class="ttname"><a href="classSVF_1_1AbstractState.html">SVF::AbstractState</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00054">AbstractState.h:54</a></div></div>
4106
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_ac60581a57407fa4c65b1975f5be687b8"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#ac60581a57407fa4c65b1975f5be687b8">SVF::AbstractInterpretation::AccessMemoryViaLoadStmt</a></div><div class="ttdeci">void AccessMemoryViaLoadStmt(const LoadStmt *load, SVF::FILOWorkList&lt; const SVFValue * &gt; &amp;worklist, Set&lt; const SVFValue * &gt; &amp;visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01711">AbstractInterpretation.cpp:1711</a></div></div>
4107
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_ac9e8bc430cd530e47811e28f5a9fe963"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#ac9e8bc430cd530e47811e28f5a9fe963">SVF::AbstractInterpretation::traceMemoryAllocationSize</a></div><div class="ttdeci">AbstractValue traceMemoryAllocationSize(const SVFValue *value)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01319">AbstractInterpretation.cpp:1319</a></div></div>
4123
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_ac60581a57407fa4c65b1975f5be687b8"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#ac60581a57407fa4c65b1975f5be687b8">SVF::AbstractInterpretation::AccessMemoryViaLoadStmt</a></div><div class="ttdeci">void AccessMemoryViaLoadStmt(const LoadStmt *load, SVF::FILOWorkList&lt; const SVFValue * &gt; &amp;worklist, Set&lt; const SVFValue * &gt; &amp;visited)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01730">AbstractInterpretation.cpp:1730</a></div></div>
4124
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_ac9e8bc430cd530e47811e28f5a9fe963"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#ac9e8bc430cd530e47811e28f5a9fe963">SVF::AbstractInterpretation::traceMemoryAllocationSize</a></div><div class="ttdeci">AbstractValue traceMemoryAllocationSize(const SVFValue *value)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01331">AbstractInterpretation.cpp:1331</a></div></div>
4108
4125
  <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a0e2af184576d9673f535fe80deb944f6"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a0e2af184576d9673f535fe80deb944f6">SVF::AbstractInterpretation::isRecursiveCall</a></div><div class="ttdeci">virtual bool isRecursiveCall(const CallICFGNode *callNode)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00593">AbstractInterpretation.cpp:593</a></div></div>
4109
4126
  <div class="ttc" id="aextapi_8c_html_a0008a4e8e7889734dc1d83297de07158"><div class="ttname"><a href="extapi_8c.html#a0008a4e8e7889734dc1d83297de07158">iscntrl</a></div><div class="ttdeci">int iscntrl(int c)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00847">extapi.c:847</a></div></div>
4110
4127
  <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="GeneralType_8h_source.html#l00047">GeneralType.h:47</a></div></div>
4111
4128
  <div class="ttc" id="aclassSVF_1_1GepStmt_html"><div class="ttname"><a href="classSVF_1_1GepStmt.html">SVF::GepStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00526">SVFStatements.h:526</a></div></div>
4112
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_aae7c67e9c423599442be721b55cd7279"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#aae7c67e9c423599442be721b55cd7279">SVF::AbstractInterpretation::collectCheckPoint</a></div><div class="ttdeci">void collectCheckPoint()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01236">AbstractInterpretation.cpp:1236</a></div></div>
4129
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_aae7c67e9c423599442be721b55cd7279"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#aae7c67e9c423599442be721b55cd7279">SVF::AbstractInterpretation::collectCheckPoint</a></div><div class="ttdeci">void collectCheckPoint()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01246">AbstractInterpretation.cpp:1246</a></div></div>
4130
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a99b526db536fb241ff755a82a45123fa"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a99b526db536fb241ff755a82a45123fa">SVF::SVFIR2AbsState::getAbsState</a></div><div class="ttdeci">AbstractState &amp; getAbsState()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8h_source.html#l00054">SVFIR2AbsState.h:54</a></div></div>
4113
4131
  <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_adc6fd1004f4277cb4d6c8bb0dacf3208"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#adc6fd1004f4277cb4d6c8bb0dacf3208">SVF::AbstractInterpretation::AEStat</a></div><div class="ttdeci">friend class AEStat</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00109">AbstractInterpretation.h:109</a></div></div>
4114
4132
  <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>
4115
4133
  <div class="ttc" id="aclassSVF_1_1AEStat_html_a8c69d36465485cddc17eddfdeea551e0"><div class="ttname"><a href="classSVF_1_1AEStat.html#a8c69d36465485cddc17eddfdeea551e0">SVF::AEStat::getFunctionTrace</a></div><div class="ttdeci">u32_t &amp; getFunctionTrace()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00080">AbstractInterpretation.h:80</a></div></div>
4116
4134
  <div class="ttc" id="aextapi_8c_html_af947cbf1ae303e5297c9d68c68a6b9cb"><div class="ttname"><a href="extapi_8c.html#af947cbf1ae303e5297c9d68c68a6b9cb">isalpha</a></div><div class="ttdeci">int isalpha(int character)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00837">extapi.c:837</a></div></div>
4117
4135
  <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>
4118
4136
  <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a13fdb4a6a6d09e3504fdad16b88616da"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616da">SVF::AbstractInterpretation::ExtAPIType</a></div><div class="ttdeci">ExtAPIType</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00113">AbstractInterpretation.h:113</a></div></div>
4119
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_ab18fe64117c1692d94ce0e0ee44e940b"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#ab18fe64117c1692d94ce0e0ee44e940b">SVF::AbstractInterpretation::initExtFunMap</a></div><div class="ttdeci">virtual void initExtFunMap()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01067">AbstractInterpretation.cpp:1067</a></div></div>
4137
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_ab18fe64117c1692d94ce0e0ee44e940b"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#ab18fe64117c1692d94ce0e0ee44e940b">SVF::AbstractInterpretation::initExtFunMap</a></div><div class="ttdeci">virtual void initExtFunMap()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01070">AbstractInterpretation.cpp:1070</a></div></div>
4120
4138
  <div class="ttc" id="aclassSVF_1_1WTOCycle_html"><div class="ttname"><a href="classSVF_1_1WTOCycle.html">SVF::WTOCycle</a></div><div class="ttdef"><b>Definition:</b> <a href="WTO_8h_source.html#l00048">WTO.h:48</a></div></div>
4121
4139
  <div class="ttc" id="aclassSVF_1_1AEStat_html_afaa47798ebfde513c709b46cac05294c"><div class="ttname"><a href="classSVF_1_1AEStat.html#afaa47798ebfde513c709b46cac05294c">SVF::AEStat::getICFGNodeTrace</a></div><div class="ttdeci">u32_t &amp; getICFGNodeTrace()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00096">AbstractInterpretation.h:96</a></div></div>
4122
4140
  <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_aa3e62b9ef912def502b95992199f5d8c"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">SVF::SVFIR2AbsState::getAddrs</a></div><div class="ttdeci">AbstractValue &amp; getAddrs(u32_t id)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8h_source.html#l00113">SVFIR2AbsState.h:113</a></div></div>
@@ -4149,7 +4167,7 @@ Friends</h2></td></tr>
4149
4167
  <div class="ttc" id="aclassSVF_1_1AbstractState_html_a413cb1d009e2a080960bb2432e193d0c"><div class="ttname"><a href="classSVF_1_1AbstractState.html#a413cb1d009e2a080960bb2432e193d0c">SVF::AbstractState::joinWith</a></div><div class="ttdeci">void joinWith(const AbstractState &amp;other)</div><div class="ttdoc">domain join with other, important! other widen this.</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8cpp_source.html#l00120">AbstractState.cpp:120</a></div></div>
4150
4168
  <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_af41aa555a5b607ae7700263ac72f8dbb"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#af41aa555a5b607ae7700263ac72f8dbb">SVF::AbstractInterpretation::_funcToWTO</a></div><div class="ttdeci">Map&lt; const SVFFunction *, ICFGWTO * &gt; _funcToWTO</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00357">AbstractInterpretation.h:357</a></div></div>
4151
4169
  <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a0e36af6b826b9eacf183aebd0b8c5f1f"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a0e36af6b826b9eacf183aebd0b8c5f1f">SVF::AbstractInterpretation::recursiveCallPass</a></div><div class="ttdeci">virtual void recursiveCallPass(const CallICFGNode *callNode)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00599">AbstractInterpretation.cpp:599</a></div></div>
4152
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a896d04a02951947bc228bf97b2c00313"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a896d04a02951947bc228bf97b2c00313">SVF::AbstractInterpretation::handleSVFStatement</a></div><div class="ttdeci">virtual void handleSVFStatement(const SVFStmt *stmt)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00829">AbstractInterpretation.cpp:829</a></div></div>
4170
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a896d04a02951947bc228bf97b2c00313"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a896d04a02951947bc228bf97b2c00313">SVF::AbstractInterpretation::handleSVFStatement</a></div><div class="ttdeci">virtual void handleSVFStatement(const SVFStmt *stmt)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00830">AbstractInterpretation.cpp:830</a></div></div>
4153
4171
  <div class="ttc" id="acJSON_8cpp_html_a7669ee67a0563250c1efaa24d130e1ac"><div class="ttname"><a href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a></div><div class="ttdeci">copy</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l00414">cJSON.cpp:414</a></div></div>
4154
4172
  <div class="ttc" id="aclassSVF_1_1IntraCFGEdge_html_a106513578790247f9d96e34c8385b3d8"><div class="ttname"><a href="classSVF_1_1IntraCFGEdge.html#a106513578790247f9d96e34c8385b3d8">SVF::IntraCFGEdge::getSuccessorCondValue</a></div><div class="ttdeci">s64_t getSuccessorCondValue() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00145">ICFGEdge.h:145</a></div></div>
4155
4173
  <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a13fdb4a6a6d09e3504fdad16b88616daae8dad405c06383859d8db715fd455317"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daae8dad405c06383859d8db715fd455317">SVF::AbstractInterpretation::STRCAT</a></div><div class="ttdeci">@ STRCAT</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00113">AbstractInterpretation.h:113</a></div></div>
@@ -4159,10 +4177,10 @@ Friends</h2></td></tr>
4159
4177
  <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a2eb84610d9a9eca6565e4a8a1e1156d1"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a2eb84610d9a9eca6565e4a8a1e1156d1">SVF::AbstractInterpretation::isExtCall</a></div><div class="ttdeci">virtual bool isExtCall(const CallICFGNode *callNode)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00580">AbstractInterpretation.cpp:580</a></div></div>
4160
4178
  <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a2cc9783b020cb3b019d2691ab38e243a"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a2cc9783b020cb3b019d2691ab38e243a">SVF::SVFIR2AbsState::handleAddr</a></div><div class="ttdeci">void handleAddr(const AddrStmt *addr)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8cpp_source.html#l00613">SVFIR2AbsState.cpp:613</a></div></div>
4161
4179
  <div class="ttc" id="aclassSVF_1_1CallSite_html_ac2a0091dab3543a398da890b947e42ef"><div class="ttname"><a href="classSVF_1_1CallSite.html#ac2a0091dab3543a398da890b947e42ef">SVF::CallSite::getInstruction</a></div><div class="ttdeci">const SVFInstruction * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01128">SVFValue.h:1128</a></div></div>
4162
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a8a4b07e6c999bea0b0e69dcab0346933"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a8a4b07e6c999bea0b0e69dcab0346933">SVF::AbstractInterpretation::narrowFixpointPass</a></div><div class="ttdeci">bool narrowFixpointPass(const ICFGNode *cycle_head, AbstractState &amp;pre_es)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00782">AbstractInterpretation.cpp:782</a></div></div>
4180
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a8a4b07e6c999bea0b0e69dcab0346933"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a8a4b07e6c999bea0b0e69dcab0346933">SVF::AbstractInterpretation::narrowFixpointPass</a></div><div class="ttdeci">bool narrowFixpointPass(const ICFGNode *cycle_head, AbstractState &amp;pre_es)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00783">AbstractInterpretation.cpp:783</a></div></div>
4163
4181
  <div class="ttc" id="aclassSVF_1_1AssignStmt_html_a98f731be7be9bc8e7fd09f5c2204c840"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">SVF::AssignStmt::getLHSVarID</a></div><div class="ttdeci">NodeID getLHSVarID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00302">SVFStatements.h:302</a></div></div>
4164
4182
  <div class="ttc" id="aclassSVF_1_1AbstractState_html_aaabe5850dbf1620c6058f5ac6cb169b6"><div class="ttname"><a href="classSVF_1_1AbstractState.html#aaabe5850dbf1620c6058f5ac6cb169b6">SVF::AbstractState::getInternalID</a></div><div class="ttdeci">static u32_t getInternalID(u32_t idx)</div><div class="ttdoc">Return the internal index if idx is an address otherwise return the value of idx.</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00093">AbstractState.h:93</a></div></div>
4165
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a2e2253149e2bf114825a4e838118e012"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a2e2253149e2bf114825a4e838118e012">SVF::AbstractInterpretation::handleFunc</a></div><div class="ttdeci">virtual void handleFunc(const SVFFunction *func)</div><div class="ttdoc">handle user defined function, ext function is not included.</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00806">AbstractInterpretation.cpp:806</a></div></div>
4183
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a2e2253149e2bf114825a4e838118e012"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a2e2253149e2bf114825a4e838118e012">SVF::AbstractInterpretation::handleFunc</a></div><div class="ttdeci">virtual void handleFunc(const SVFFunction *func)</div><div class="ttdoc">handle user defined function, ext function is not included.</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00807">AbstractInterpretation.cpp:807</a></div></div>
4166
4184
  <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a13fdb4a6a6d09e3504fdad16b88616daa5aec33226dc590ec951d0f12bf35f15f"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a13fdb4a6a6d09e3504fdad16b88616daa5aec33226dc590ec951d0f12bf35f15f">SVF::AbstractInterpretation::MEMSET</a></div><div class="ttdeci">@ MEMSET</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00113">AbstractInterpretation.h:113</a></div></div>
4167
4185
  <div class="ttc" id="aclassSVF_1_1FILOWorkList_html_a3fd9acb6d09fd142bfd402fdf8cac93b"><div class="ttname"><a href="classSVF_1_1FILOWorkList.html#a3fd9acb6d09fd142bfd402fdf8cac93b">SVF::FILOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00272">WorkList.h:272</a></div></div>
4168
4186
  <div class="ttc" id="aclassSVF_1_1FILOWorkList_html"><div class="ttname"><a href="classSVF_1_1FILOWorkList.html">SVF::FILOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00042">AbstractInterpretation.h:42</a></div></div>
@@ -4171,7 +4189,7 @@ Friends</h2></td></tr>
4171
4189
  <div class="ttc" id="astructSVF_1_1AbstractValue_html_af93f4b54b34e74579ad177ead629b53aa3a7df767184a0bf01de99351747f545a"><div class="ttname"><a href="structSVF_1_1AbstractValue.html#af93f4b54b34e74579ad177ead629b53aa3a7df767184a0bf01de99351747f545a">SVF::AbstractValue::UnknownType</a></div><div class="ttdeci">@ UnknownType</div><div class="ttdef"><b>Definition:</b> <a href="AbstractValue_8h_source.html#l00035">AbstractValue.h:35</a></div></div>
4172
4190
  <div class="ttc" id="anamespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
4173
4191
  <div class="ttc" id="aclassSVF_1_1SVFType_html_a870b63af2bf9fe43cdf1df3d56b20f6c"><div class="ttname"><a href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">SVF::SVFType::isPointerTy</a></div><div class="ttdeci">bool isPointerTy() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00249">SVFType.h:249</a></div></div>
4174
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a9b179466955023f275b6692b59048846"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a9b179466955023f275b6692b59048846">SVF::AbstractInterpretation::handleICFGNode</a></div><div class="ttdeci">virtual void handleICFGNode(const ICFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00673">AbstractInterpretation.cpp:673</a></div></div>
4192
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a9b179466955023f275b6692b59048846"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a9b179466955023f275b6692b59048846">SVF::AbstractInterpretation::handleICFGNode</a></div><div class="ttdeci">virtual void handleICFGNode(const ICFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00674">AbstractInterpretation.cpp:674</a></div></div>
4175
4193
  <div class="ttc" id="aclassSVF_1_1SVFVar_html_a091ef22d4fc428985d604b03f287a941"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a091ef22d4fc428985d604b03f287a941">SVF::SVFVar::isConstDataOrAggDataButNotNullPtr</a></div><div class="ttdeci">bool isConstDataOrAggDataButNotNullPtr() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8cpp_source.html#l00204">SVFVariables.cpp:204</a></div></div>
4176
4194
  <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_ac97c5979efd3049d18b6edb83f359a20"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#ac97c5979efd3049d18b6edb83f359a20">SVF::AbstractInterpretation::_preAbstractTrace</a></div><div class="ttdeci">Map&lt; const ICFGNode *, AbstractState &gt; _preAbstractTrace</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00383">AbstractInterpretation.h:383</a></div></div>
4177
4195
  <div class="ttc" id="aclassSVF_1_1AndersenWaveDiff_html_a48ff6fc4badc79ad3204ae9bd95cc540"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">SVF::AndersenWaveDiff::createAndersenWaveDiff</a></div><div class="ttdeci">static AndersenWaveDiff * createAndersenWaveDiff(SVFIR *_pag)</div><div class="ttdoc">Create an singleton instance directly instead of invoking llvm pass manager.</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00395">Andersen.h:395</a></div></div>
@@ -4180,12 +4198,12 @@ Friends</h2></td></tr>
4180
4198
  <div class="ttc" id="aclassSVF_1_1MultiOpndStmt_html_a71a530eb9fa9f7e273e471b4a75a039e"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">SVF::MultiOpndStmt::getResID</a></div><div class="ttdeci">NodeID getResID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00289">SVFStatements.cpp:289</a></div></div>
4181
4199
  <div class="ttc" id="aclassSVF_1_1SVFVar_html_a76964ef7d4842a469d7720881499d8a6"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a76964ef7d4842a469d7720881499d8a6">SVF::SVFVar::getIncomingEdges</a></div><div class="ttdeci">SVFStmt::SVFStmtSetTy &amp; getIncomingEdges(SVFStmt::PEDGEK kind)</div><div class="ttdoc">Get incoming SVFIR statements (edges)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00148">SVFVariables.h:148</a></div></div>
4182
4200
  <div class="ttc" id="aclassSVF_1_1WTOCycle_html_ace60ecb07603681de5c3020d0d3c5079"><div class="ttname"><a href="classSVF_1_1WTOCycle.html#ace60ecb07603681de5c3020d0d3c5079">SVF::WTOCycle::head</a></div><div class="ttdeci">const NodeT * head() const</div><div class="ttdoc">Return the head of the cycle.</div><div class="ttdef"><b>Definition:</b> <a href="WTO_8h_source.html#l00412">WTO.h:412</a></div></div>
4183
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a71dff5d6a5b291014c0a65d3a6d7c8c1"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a71dff5d6a5b291014c0a65d3a6d7c8c1">SVF::AbstractInterpretation::handleCycle</a></div><div class="ttdeci">virtual void handleCycle(const ICFGWTOCycle *cycle)</div><div class="ttdoc">handle wto cycle (loop)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00694">AbstractInterpretation.cpp:694</a></div></div>
4184
- <div class="ttc" id="aclassSVF_1_1AEStat_html_a5b246c2175c44454236242dcf426f21f"><div class="ttname"><a href="classSVF_1_1AEStat.html#a5b246c2175c44454236242dcf426f21f">SVF::AEStat::finializeStat</a></div><div class="ttdeci">void finializeStat()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00965">AbstractInterpretation.cpp:965</a></div></div>
4201
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a71dff5d6a5b291014c0a65d3a6d7c8c1"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a71dff5d6a5b291014c0a65d3a6d7c8c1">SVF::AbstractInterpretation::handleCycle</a></div><div class="ttdeci">virtual void handleCycle(const ICFGWTOCycle *cycle)</div><div class="ttdoc">handle wto cycle (loop)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00695">AbstractInterpretation.cpp:695</a></div></div>
4202
+ <div class="ttc" id="aclassSVF_1_1AEStat_html_a5b246c2175c44454236242dcf426f21f"><div class="ttname"><a href="classSVF_1_1AEStat.html#a5b246c2175c44454236242dcf426f21f">SVF::AEStat::finializeStat</a></div><div class="ttdeci">void finializeStat()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00968">AbstractInterpretation.cpp:968</a></div></div>
4185
4203
  <div class="ttc" id="aextapi_8c_html_a84b34b0058324ae5c0eae4956cf00cc5"><div class="ttname"><a href="extapi_8c.html#a84b34b0058324ae5c0eae4956cf00cc5">isspace</a></div><div class="ttdeci">int isspace(char c)</div><div class="ttdef"><b>Definition:</b> <a href="extapi_8c_source.html#l00877">extapi.c:877</a></div></div>
4186
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a2057e8e1c0aaf39e74f0a8fb2a1b580c"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a2057e8e1c0aaf39e74f0a8fb2a1b580c">SVF::AbstractInterpretation::getPointeeElement</a></div><div class="ttdeci">const SVFType * getPointeeElement(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01602">AbstractInterpretation.cpp:1602</a></div></div>
4187
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_acea2c82e5b463db6f097e9a9641f601b"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#acea2c82e5b463db6f097e9a9641f601b">SVF::AbstractInterpretation::checkPointAllSet</a></div><div class="ttdeci">void checkPointAllSet()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01255">AbstractInterpretation.cpp:1255</a></div></div>
4188
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_acba90e968cebacca3da78ac765df33ef"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#acba90e968cebacca3da78ac765df33ef">SVF::AbstractInterpretation::handleStrcat</a></div><div class="ttdeci">virtual void handleStrcat(const CallICFGNode *call)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01509">AbstractInterpretation.cpp:1509</a></div></div>
4204
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a2057e8e1c0aaf39e74f0a8fb2a1b580c"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a2057e8e1c0aaf39e74f0a8fb2a1b580c">SVF::AbstractInterpretation::getPointeeElement</a></div><div class="ttdeci">const SVFType * getPointeeElement(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01620">AbstractInterpretation.cpp:1620</a></div></div>
4205
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_acea2c82e5b463db6f097e9a9641f601b"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#acea2c82e5b463db6f097e9a9641f601b">SVF::AbstractInterpretation::checkPointAllSet</a></div><div class="ttdeci">void checkPointAllSet()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01265">AbstractInterpretation.cpp:1265</a></div></div>
4206
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_acba90e968cebacca3da78ac765df33ef"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#acba90e968cebacca3da78ac765df33ef">SVF::AbstractInterpretation::handleStrcat</a></div><div class="ttdeci">virtual void handleStrcat(const CallICFGNode *call)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01523">AbstractInterpretation.cpp:1523</a></div></div>
4189
4207
  <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#l00631">SVFValue.h:631</a></div></div>
4190
4208
  <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="GeneralType_8h_source.html#l00049">GeneralType.h:49</a></div></div>
4191
4209
  <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&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00101">GeneralType.h:101</a></div></div>
@@ -4194,9 +4212,9 @@ Friends</h2></td></tr>
4194
4212
  <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_ae9cabdfecbc7773c1b15aafc4abf15e5"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#ae9cabdfecbc7773c1b15aafc4abf15e5">SVF::SVFIR2AbsState::handleCopy</a></div><div class="ttdeci">void handleCopy(const CopyStmt *copy)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8cpp_source.html#l00937">SVFIR2AbsState.cpp:937</a></div></div>
4195
4213
  <div class="ttc" id="aclassSVF_1_1SVFStat_html_a1b7f1e3381de87f75f06cddb9c6c1ec1"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a1b7f1e3381de87f75f06cddb9c6c1ec1">SVF::SVFStat::endClk</a></div><div class="ttdeci">virtual void endClk()</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00063">SVFStat.h:63</a></div></div>
4196
4214
  <div class="ttc" id="aclassSVF_1_1AbstractState_html_a7c802c006225a50b1d83b5f78d0891fa"><div class="ttname"><a href="classSVF_1_1AbstractState.html#a7c802c006225a50b1d83b5f78d0891fa">SVF::AbstractState::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00347">AbstractState.h:347</a></div></div>
4197
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_ac941d1eb9b1216c8334d0685a471b774"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#ac941d1eb9b1216c8334d0685a471b774">SVF::AbstractInterpretation::handleStrcpy</a></div><div class="ttdeci">virtual void handleStrcpy(const CallICFGNode *call)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01274">AbstractInterpretation.cpp:1274</a></div></div>
4215
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_ac941d1eb9b1216c8334d0685a471b774"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#ac941d1eb9b1216c8334d0685a471b774">SVF::AbstractInterpretation::handleStrcpy</a></div><div class="ttdeci">virtual void handleStrcpy(const CallICFGNode *call)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01284">AbstractInterpretation.cpp:1284</a></div></div>
4198
4216
  <div class="ttc" id="aclassSVF_1_1CallSite_html_a9e7c94ee7f689466111487e03b2cebcc"><div class="ttname"><a href="classSVF_1_1CallSite.html#a9e7c94ee7f689466111487e03b2cebcc">SVF::CallSite::getArgument</a></div><div class="ttdeci">const SVFValue * getArgument(u32_t ArgNo) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01132">SVFValue.h:1132</a></div></div>
4199
- <div class="ttc" id="aclassSVF_1_1AEStat_html_ae24590233a864e18a6b0948bef89201a"><div class="ttname"><a href="classSVF_1_1AEStat.html#ae24590233a864e18a6b0948bef89201a">SVF::AEStat::reportBug</a></div><div class="ttdeci">void reportBug()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01043">AbstractInterpretation.cpp:1043</a></div></div>
4217
+ <div class="ttc" id="aclassSVF_1_1AEStat_html_ae24590233a864e18a6b0948bef89201a"><div class="ttname"><a href="classSVF_1_1AEStat.html#ae24590233a864e18a6b0948bef89201a">SVF::AEStat::reportBug</a></div><div class="ttdeci">void reportBug()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l01046">AbstractInterpretation.cpp:1046</a></div></div>
4200
4218
  <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_ac37760566b534d89a61d789b00efb993"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">SVF::SVFIR2AbsState::getInternalID</a></div><div class="ttdeci">static u32_t getInternalID(u32_t idx)</div><div class="ttdoc">Return the internal index if idx is an address otherwise return the value of idx.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8h_source.html#l00170">SVFIR2AbsState.h:170</a></div></div>
4201
4219
  <div class="ttc" id="aclassSVF_1_1AbstractState_html_aa2ac2ba25a9859232717ee22192feb35"><div class="ttname"><a href="classSVF_1_1AbstractState.html#aa2ac2ba25a9859232717ee22192feb35">SVF::AbstractState::inLocToValTable</a></div><div class="ttdeci">virtual bool inLocToValTable(u32_t id) const</div><div class="ttdoc">whether the memory address stores abstract value</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00240">AbstractState.h:240</a></div></div>
4202
4220
  <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a175a43f33d55e812ec61a349eb175157"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a175a43f33d55e812ec61a349eb175157">SVF::SVFIR2AbsState::handleCall</a></div><div class="ttdeci">void handleCall(const CallPE *callPE)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8cpp_source.html#l01089">SVFIR2AbsState.cpp:1089</a></div></div>
@@ -4205,7 +4223,7 @@ Friends</h2></td></tr>
4205
4223
  <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_aa27d0ef684deec1f5385fdb0d4c64827"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#aa27d0ef684deec1f5385fdb0d4c64827">SVF::AbstractInterpretation::_func_map</a></div><div class="ttdeci">Map&lt; std::string, std::function&lt; void(const CallSite &amp;)&gt; &gt; _func_map</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00380">AbstractInterpretation.h:380</a></div></div>
4206
4224
  <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a5bcfbde64bd51082e8c587e0bc708377"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a5bcfbde64bd51082e8c587e0bc708377">SVF::AbstractInterpretation::_postAbstractTrace</a></div><div class="ttdeci">Map&lt; const ICFGNode *, AbstractState &gt; _postAbstractTrace</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00384">AbstractInterpretation.h:384</a></div></div>
4207
4225
  <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a01650b2a16e327408ce180b2d1bc9631"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a01650b2a16e327408ce180b2d1bc9631">SVF::AbstractInterpretation::hasCmpBranchES</a></div><div class="ttdeci">bool hasCmpBranchES(const CmpStmt *cmpStmt, s64_t succ, AbstractState &amp;es)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00228">AbstractInterpretation.cpp:228</a></div></div>
4208
- <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_af966130d5cb8d7db786c3ec056cc2dd4"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#af966130d5cb8d7db786c3ec056cc2dd4">SVF::AbstractInterpretation::SkipRecursiveCall</a></div><div class="ttdeci">virtual void SkipRecursiveCall(const CallICFGNode *callnode)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00888">AbstractInterpretation.cpp:888</a></div></div>
4226
+ <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_af966130d5cb8d7db786c3ec056cc2dd4"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#af966130d5cb8d7db786c3ec056cc2dd4">SVF::AbstractInterpretation::SkipRecursiveCall</a></div><div class="ttdeci">virtual void SkipRecursiveCall(const CallICFGNode *callnode)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8cpp_source.html#l00889">AbstractInterpretation.cpp:889</a></div></div>
4209
4227
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream &amp; errs()</div><div class="ttdoc">Overwrite llvm::errs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00056">SVFUtil.h:56</a></div></div>
4210
4228
  <div class="ttc" id="aclassSVF_1_1AddressValue_html_aed0b4789beda4980e4e215a65350f323"><div class="ttname"><a href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">SVF::AddressValue::begin</a></div><div class="ttdeci">AddrSet::const_iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="AddressValue_8h_source.html#l00092">AddressValue.h:92</a></div></div>
4211
4229
  <div class="ttc" id="aclassSVF_1_1AbstractInterpretation_html_a219313e979d779221116c1bc45becc1b"><div class="ttname"><a href="classSVF_1_1AbstractInterpretation.html#a219313e979d779221116c1bc45becc1b">SVF::AbstractInterpretation::_checkpoints</a></div><div class="ttdeci">Set&lt; const CallICFGNode * &gt; _checkpoints</div><div class="ttdef"><b>Definition:</b> <a href="AbstractInterpretation_8h_source.html#l00381">AbstractInterpretation.h:381</a></div></div>