svf-tools 1.0.341 → 1.0.342
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/BasicTypes_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +38 -36
- package/SVF-doxygen/html/html/ICFG_8h_source.html +18 -18
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Options_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Options_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFG_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +20 -20
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VFG_8h_source.html +4 -4
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +6 -5
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +15 -12
- package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +5 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +6 -5
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +4 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +4 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +3 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +46 -46
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +7 -3
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +5 -3
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +3 -3
- package/SVF-doxygen/html/html/functions_p.html +8 -11
- package/SVF-doxygen/html/html/functions_s.html +18 -15
- package/SVF-doxygen/html/html/functions_t.html +4 -4
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_p.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_s.html +3 -0
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +11 -11
- package/SVF-doxygen/html/html/search/all_10.js +0 -1
- package/SVF-doxygen/html/html/search/all_13.js +2 -1
- package/SVF-doxygen/html/html/search/all_14.js +5 -5
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +1 -1
- package/SVF-doxygen/html/html/search/variables_10.js +0 -1
- package/SVF-doxygen/html/html/search/variables_13.js +1 -0
- package/SVF-doxygen/html/html/search/variables_14.js +3 -3
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +17 -17
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
- package/include/Util/Options.h +1 -1
- package/lib/Graphs/ICFG.cpp +39 -27
- package/lib/MemoryModel/SVFStatements.cpp +53 -49
- package/lib/MemoryModel/SVFVariables.cpp +10 -10
- package/lib/Util/Options.cpp +3 -3
- package/lib/Util/SVFUtil.cpp +2 -0
- package/package.json +1 -1
|
@@ -486,8 +486,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
486
486
|
<li>Build <a class="el" href="classSVF_1_1ICFG.html">ICFG</a> 1) build <a class="el" href="classSVF_1_1ICFG.html">ICFG</a> nodes statements for top level pointers (PAGEdges) 2) connect <a class="el" href="classSVF_1_1ICFG.html">ICFG</a> edges between two statements (PAGEdges) </li>
|
|
487
487
|
</ul>
|
|
488
488
|
|
|
489
|
-
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#
|
|
490
|
-
<div class="fragment"><div class="line"><a name="
|
|
489
|
+
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00184">184</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
|
|
490
|
+
<div class="fragment"><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  : <a class="code" href="classSVF_1_1ICFG.html#a5df6061b65d021cd73c66592ec79f052">totalICFGNode</a>(0)</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">"\tCreate ICFG ...\n"</span>));</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="classSVF_1_1ICFG.html#a37ec47cd95cf25b18720c4267a9fd40c">globalBlockNode</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1GlobalBlockNode.html">GlobalBlockNode</a>(<a class="code" href="classSVF_1_1ICFG.html#a5df6061b65d021cd73c66592ec79f052">totalICFGNode</a>++);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <a class="code" href="classSVF_1_1ICFG.html#a15816a82d8c33a066009440dce6ee973">addICFGNode</a>(<a class="code" href="classSVF_1_1ICFG.html#a37ec47cd95cf25b18720c4267a9fd40c">globalBlockNode</a>);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00101">SVFUtil.cpp:101</a></div></div>
|
|
491
491
|
<div class="ttc" id="classSVF_1_1ICFG_html_a5df6061b65d021cd73c66592ec79f052"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5df6061b65d021cd73c66592ec79f052">SVF::ICFG::totalICFGNode</a></div><div class="ttdeci">NodeID totalICFGNode</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00064">ICFG.h:64</a></div></div>
|
|
492
492
|
<div class="ttc" id="classSVF_1_1GlobalBlockNode_html"><div class="ttname"><a href="classSVF_1_1GlobalBlockNode.html">SVF::GlobalBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00142">ICFGNode.h:142</a></div></div>
|
|
493
493
|
<div class="ttc" id="classSVF_1_1ICFG_html_a37ec47cd95cf25b18720c4267a9fd40c"><div class="ttname"><a href="classSVF_1_1ICFG.html#a37ec47cd95cf25b18720c4267a9fd40c">SVF::ICFG::globalBlockNode</a></div><div class="ttdeci">GlobalBlockNode * globalBlockNode</div><div class="ttdoc">unique basic block for all globals </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00072">ICFG.h:72</a></div></div>
|
|
@@ -569,11 +569,11 @@ Additional Inherited Members</h2></td></tr>
|
|
|
569
569
|
</div><div class="memdoc">
|
|
570
570
|
<p>Add interprocedural call edges between two nodes </p>
|
|
571
571
|
|
|
572
|
-
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#
|
|
573
|
-
<div class="fragment"><div class="line"><a name="
|
|
572
|
+
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00375">375</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
|
|
573
|
+
<div class="fragment"><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">hasInterICFGEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429a3486c9d9a182f2ba5d986fe74439ec2e">ICFGEdge::CallCF</a>))</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge->isCallCFGEdge() && <span class="stringliteral">"this should be a call CFG edge!"</span>);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a>* callEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a>(srcNode,dstNode,cs);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1ICFG.html#a462f590c2604184d69e4efe3d85a7b5b">addICFGEdge</a>(callEdge) ? callEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> }</div><div class="ttc" id="classSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00042">ICFGEdge.h:42</a></div></div>
|
|
574
574
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
575
575
|
<div class="ttc" id="classSVF_1_1CallCFGEdge_html"><div class="ttname"><a href="classSVF_1_1CallCFGEdge.html">SVF::CallCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00162">ICFGEdge.h:162</a></div></div>
|
|
576
|
-
<div class="ttc" id="classSVF_1_1ICFG_html_a86535e50d1feba706b19491d905baef1"><div class="ttname"><a href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">SVF::ICFG::hasInterICFGEdge</a></div><div class="ttdeci">ICFGEdge * hasInterICFGEdge(ICFGNode *src, ICFGNode *dst, ICFGEdge::ICFGEdgeK kind)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#
|
|
576
|
+
<div class="ttc" id="classSVF_1_1ICFG_html_a86535e50d1feba706b19491d905baef1"><div class="ttname"><a href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">SVF::ICFG::hasInterICFGEdge</a></div><div class="ttdeci">ICFGEdge * hasInterICFGEdge(ICFGNode *src, ICFGNode *dst, ICFGEdge::ICFGEdgeK kind)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00280">ICFG.cpp:280</a></div></div>
|
|
577
577
|
<div class="ttc" id="classSVF_1_1ICFGEdge_html_a395c34788e98950bc43e8cb44313e429a3486c9d9a182f2ba5d986fe74439ec2e"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429a3486c9d9a182f2ba5d986fe74439ec2e">SVF::ICFGEdge::CallCF</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00052">ICFGEdge.h:52</a></div></div>
|
|
578
578
|
<div class="ttc" id="classSVF_1_1ICFG_html_a462f590c2604184d69e4efe3d85a7b5b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a462f590c2604184d69e4efe3d85a7b5b">SVF::ICFG::addICFGEdge</a></div><div class="ttdeci">bool addICFGEdge(ICFGEdge *edge)</div><div class="ttdoc">Add ICFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00148">ICFG.h:148</a></div></div>
|
|
579
579
|
</div><!-- fragment -->
|
|
@@ -659,14 +659,14 @@ Additional Inherited Members</h2></td></tr>
|
|
|
659
659
|
</div><div class="memdoc">
|
|
660
660
|
<p>Add conditional intraprocedural edges between two nodes </p>
|
|
661
661
|
|
|
662
|
-
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#
|
|
663
|
-
<div class="fragment"><div class="line"><a name="
|
|
662
|
+
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00355">355</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
|
|
663
|
+
<div class="fragment"><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <a class="code" href="classSVF_1_1ICFG.html#a70421a19a494eb6131a9ae72ef1a64d6">checkIntraEdgeParents</a>(srcNode, dstNode);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1ICFG.html#aa662baae5682ef6ec5084fa4147c9709">hasIntraICFGEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429acb8fba7c61b08ec952f1b65643d7a84b">ICFGEdge::IntraCF</a>))</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge->isIntraCFGEdge() && <span class="stringliteral">"this should be an intra CFG edge!"</span>);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>* intraEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>(srcNode,dstNode);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  intraEdge-><a class="code" href="classSVF_1_1IntraCFGEdge.html#a97402e3c122618d5be189dce1b58cd8f">setBranchCondtion</a>(condition,branchID);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1ICFG.html#a462f590c2604184d69e4efe3d85a7b5b">addICFGEdge</a>(intraEdge) ? intraEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> }</div><div class="ttc" id="classSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00042">ICFGEdge.h:42</a></div></div>
|
|
664
664
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
665
665
|
<div class="ttc" id="classSVF_1_1IntraCFGEdge_html_a97402e3c122618d5be189dce1b58cd8f"><div class="ttname"><a href="classSVF_1_1IntraCFGEdge.html#a97402e3c122618d5be189dce1b58cd8f">SVF::IntraCFGEdge::setBranchCondtion</a></div><div class="ttdeci">void setBranchCondtion(const Value *pNode, NodeID branchID)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00146">ICFGEdge.h:146</a></div></div>
|
|
666
666
|
<div class="ttc" id="classSVF_1_1IntraCFGEdge_html"><div class="ttname"><a href="classSVF_1_1IntraCFGEdge.html">SVF::IntraCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00111">ICFGEdge.h:111</a></div></div>
|
|
667
667
|
<div class="ttc" id="classSVF_1_1ICFGEdge_html_a395c34788e98950bc43e8cb44313e429acb8fba7c61b08ec952f1b65643d7a84b"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429acb8fba7c61b08ec952f1b65643d7a84b">SVF::ICFGEdge::IntraCF</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00051">ICFGEdge.h:51</a></div></div>
|
|
668
668
|
<div class="ttc" id="classSVF_1_1ICFG_html_a462f590c2604184d69e4efe3d85a7b5b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a462f590c2604184d69e4efe3d85a7b5b">SVF::ICFG::addICFGEdge</a></div><div class="ttdeci">bool addICFGEdge(ICFGEdge *edge)</div><div class="ttdoc">Add ICFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00148">ICFG.h:148</a></div></div>
|
|
669
|
-
<div class="ttc" id="classSVF_1_1ICFG_html_aa662baae5682ef6ec5084fa4147c9709"><div class="ttname"><a href="classSVF_1_1ICFG.html#aa662baae5682ef6ec5084fa4147c9709">SVF::ICFG::hasIntraICFGEdge</a></div><div class="ttdeci">ICFGEdge * hasIntraICFGEdge(ICFGNode *src, ICFGNode *dst, ICFGEdge::ICFGEdgeK kind)</div><div class="ttdoc">Whether we has a SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#
|
|
669
|
+
<div class="ttc" id="classSVF_1_1ICFG_html_aa662baae5682ef6ec5084fa4147c9709"><div class="ttname"><a href="classSVF_1_1ICFG.html#aa662baae5682ef6ec5084fa4147c9709">SVF::ICFG::hasIntraICFGEdge</a></div><div class="ttdeci">ICFGEdge * hasIntraICFGEdge(ICFGNode *src, ICFGNode *dst, ICFGEdge::ICFGEdgeK kind)</div><div class="ttdoc">Whether we has a SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00263">ICFG.cpp:263</a></div></div>
|
|
670
670
|
<div class="ttc" id="classSVF_1_1ICFG_html_a70421a19a494eb6131a9ae72ef1a64d6"><div class="ttname"><a href="classSVF_1_1ICFG.html#a70421a19a494eb6131a9ae72ef1a64d6">SVF::ICFG::checkIntraEdgeParents</a></div><div class="ttdeci">void checkIntraEdgeParents(const ICFGNode *srcNode, const ICFGNode *dstNode)</div><div class="ttdoc">sanitize Intra edges, verify that both nodes belong to the same function. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00137">ICFG.h:137</a></div></div>
|
|
671
671
|
</div><!-- fragment -->
|
|
672
672
|
</div>
|
|
@@ -863,13 +863,13 @@ Additional Inherited Members</h2></td></tr>
|
|
|
863
863
|
<p>Add control-flow edges for top level pointers. </p>
|
|
864
864
|
<p>Add intraprocedural edges between two nodes </p>
|
|
865
865
|
|
|
866
|
-
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#
|
|
867
|
-
<div class="fragment"><div class="line"><a name="
|
|
866
|
+
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00337">337</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
|
|
867
|
+
<div class="fragment"><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="classSVF_1_1ICFG.html#a70421a19a494eb6131a9ae72ef1a64d6">checkIntraEdgeParents</a>(srcNode, dstNode);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1ICFG.html#aa662baae5682ef6ec5084fa4147c9709">hasIntraICFGEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429acb8fba7c61b08ec952f1b65643d7a84b">ICFGEdge::IntraCF</a>))</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge->isIntraCFGEdge() && <span class="stringliteral">"this should be an intra CFG edge!"</span>);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>* intraEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a>(srcNode,dstNode);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1ICFG.html#a462f590c2604184d69e4efe3d85a7b5b">addICFGEdge</a>(intraEdge) ? intraEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  }</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> }</div><div class="ttc" id="classSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00042">ICFGEdge.h:42</a></div></div>
|
|
868
868
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
869
869
|
<div class="ttc" id="classSVF_1_1IntraCFGEdge_html"><div class="ttname"><a href="classSVF_1_1IntraCFGEdge.html">SVF::IntraCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00111">ICFGEdge.h:111</a></div></div>
|
|
870
870
|
<div class="ttc" id="classSVF_1_1ICFGEdge_html_a395c34788e98950bc43e8cb44313e429acb8fba7c61b08ec952f1b65643d7a84b"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429acb8fba7c61b08ec952f1b65643d7a84b">SVF::ICFGEdge::IntraCF</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00051">ICFGEdge.h:51</a></div></div>
|
|
871
871
|
<div class="ttc" id="classSVF_1_1ICFG_html_a462f590c2604184d69e4efe3d85a7b5b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a462f590c2604184d69e4efe3d85a7b5b">SVF::ICFG::addICFGEdge</a></div><div class="ttdeci">bool addICFGEdge(ICFGEdge *edge)</div><div class="ttdoc">Add ICFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00148">ICFG.h:148</a></div></div>
|
|
872
|
-
<div class="ttc" id="classSVF_1_1ICFG_html_aa662baae5682ef6ec5084fa4147c9709"><div class="ttname"><a href="classSVF_1_1ICFG.html#aa662baae5682ef6ec5084fa4147c9709">SVF::ICFG::hasIntraICFGEdge</a></div><div class="ttdeci">ICFGEdge * hasIntraICFGEdge(ICFGNode *src, ICFGNode *dst, ICFGEdge::ICFGEdgeK kind)</div><div class="ttdoc">Whether we has a SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#
|
|
872
|
+
<div class="ttc" id="classSVF_1_1ICFG_html_aa662baae5682ef6ec5084fa4147c9709"><div class="ttname"><a href="classSVF_1_1ICFG.html#aa662baae5682ef6ec5084fa4147c9709">SVF::ICFG::hasIntraICFGEdge</a></div><div class="ttdeci">ICFGEdge * hasIntraICFGEdge(ICFGNode *src, ICFGNode *dst, ICFGEdge::ICFGEdgeK kind)</div><div class="ttdoc">Whether we has a SVFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00263">ICFG.cpp:263</a></div></div>
|
|
873
873
|
<div class="ttc" id="classSVF_1_1ICFG_html_a70421a19a494eb6131a9ae72ef1a64d6"><div class="ttname"><a href="classSVF_1_1ICFG.html#a70421a19a494eb6131a9ae72ef1a64d6">SVF::ICFG::checkIntraEdgeParents</a></div><div class="ttdeci">void checkIntraEdgeParents(const ICFGNode *srcNode, const ICFGNode *dstNode)</div><div class="ttdoc">sanitize Intra edges, verify that both nodes belong to the same function. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00137">ICFG.h:137</a></div></div>
|
|
874
874
|
</div><!-- fragment -->
|
|
875
875
|
</div>
|
|
@@ -915,11 +915,11 @@ Additional Inherited Members</h2></td></tr>
|
|
|
915
915
|
</div><div class="memdoc">
|
|
916
916
|
<p>Add interprocedural return edges between two nodes </p>
|
|
917
917
|
|
|
918
|
-
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#
|
|
919
|
-
<div class="fragment"><div class="line"><a name="
|
|
918
|
+
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00392">392</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
|
|
919
|
+
<div class="fragment"><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* edge = <a class="code" href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">hasInterICFGEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541">ICFGEdge::RetCF</a>))</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge->isRetCFGEdge() && <span class="stringliteral">"this should be a return CFG edge!"</span>);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  }</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <a class="code" href="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a>* retEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a>(srcNode,dstNode,cs);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">return</span> (<a class="code" href="classSVF_1_1ICFG.html#a462f590c2604184d69e4efe3d85a7b5b">addICFGEdge</a>(retEdge) ? retEdge : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  }</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> }</div><div class="ttc" id="classSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00042">ICFGEdge.h:42</a></div></div>
|
|
920
920
|
<div class="ttc" id="classSVF_1_1ICFGEdge_html_a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429ad2370a77f6cc112b8c26efbcc36bf541">SVF::ICFGEdge::RetCF</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00053">ICFGEdge.h:53</a></div></div>
|
|
921
921
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
922
|
-
<div class="ttc" id="classSVF_1_1ICFG_html_a86535e50d1feba706b19491d905baef1"><div class="ttname"><a href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">SVF::ICFG::hasInterICFGEdge</a></div><div class="ttdeci">ICFGEdge * hasInterICFGEdge(ICFGNode *src, ICFGNode *dst, ICFGEdge::ICFGEdgeK kind)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#
|
|
922
|
+
<div class="ttc" id="classSVF_1_1ICFG_html_a86535e50d1feba706b19491d905baef1"><div class="ttname"><a href="classSVF_1_1ICFG.html#a86535e50d1feba706b19491d905baef1">SVF::ICFG::hasInterICFGEdge</a></div><div class="ttdeci">ICFGEdge * hasInterICFGEdge(ICFGNode *src, ICFGNode *dst, ICFGEdge::ICFGEdgeK kind)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00280">ICFG.cpp:280</a></div></div>
|
|
923
923
|
<div class="ttc" id="classSVF_1_1ICFG_html_a462f590c2604184d69e4efe3d85a7b5b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a462f590c2604184d69e4efe3d85a7b5b">SVF::ICFG::addICFGEdge</a></div><div class="ttdeci">bool addICFGEdge(ICFGEdge *edge)</div><div class="ttdoc">Add ICFG edge. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00148">ICFG.h:148</a></div></div>
|
|
924
924
|
<div class="ttc" id="classSVF_1_1RetCFGEdge_html"><div class="ttname"><a href="classSVF_1_1RetCFGEdge.html">SVF::RetCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00199">ICFGEdge.h:199</a></div></div>
|
|
925
925
|
</div><!-- fragment -->
|
|
@@ -950,7 +950,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
950
950
|
</div><div class="memdoc">
|
|
951
951
|
|
|
952
952
|
<p class="definition">Definition at line <a class="el" href="ICFG_8h_source.html#l00258">258</a> of file <a class="el" href="ICFG_8h_source.html">ICFG.h</a>.</p>
|
|
953
|
-
<div class="fragment"><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  CallBlockNode* callBlockNode = <a class="code" href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">getCallBlockNode</a>(cs);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  RetBlockNode* sNode = <span class="keyword">new</span> RetBlockNode(<a class="code" href="classSVF_1_1ICFG.html#a5df6061b65d021cd73c66592ec79f052">totalICFGNode</a>++, cs, callBlockNode);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  callBlockNode->setRetBlockNode(sNode);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="classSVF_1_1ICFG.html#a15816a82d8c33a066009440dce6ee973">addICFGNode</a>(sNode);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <a class="code" href="classSVF_1_1ICFG.html#a0e43308038663c10667177238b23ab3e">CSToRetNodeMap</a>[cs] = sNode;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">return</span> sNode;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div><div class="ttc" id="classSVF_1_1ICFG_html_a7d10e8a815c836a070d35850f817a18c"><div class="ttname"><a href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">SVF::ICFG::getCallBlockNode</a></div><div class="ttdeci">CallBlockNode * getCallBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#
|
|
953
|
+
<div class="fragment"><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  CallBlockNode* callBlockNode = <a class="code" href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">getCallBlockNode</a>(cs);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  RetBlockNode* sNode = <span class="keyword">new</span> RetBlockNode(<a class="code" href="classSVF_1_1ICFG.html#a5df6061b65d021cd73c66592ec79f052">totalICFGNode</a>++, cs, callBlockNode);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  callBlockNode->setRetBlockNode(sNode);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="classSVF_1_1ICFG.html#a15816a82d8c33a066009440dce6ee973">addICFGNode</a>(sNode);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <a class="code" href="classSVF_1_1ICFG.html#a0e43308038663c10667177238b23ab3e">CSToRetNodeMap</a>[cs] = sNode;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">return</span> sNode;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div><div class="ttc" id="classSVF_1_1ICFG_html_a7d10e8a815c836a070d35850f817a18c"><div class="ttname"><a href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">SVF::ICFG::getCallBlockNode</a></div><div class="ttdeci">CallBlockNode * getCallBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00209">ICFG.cpp:209</a></div></div>
|
|
954
954
|
<div class="ttc" id="classSVF_1_1ICFG_html_a5df6061b65d021cd73c66592ec79f052"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5df6061b65d021cd73c66592ec79f052">SVF::ICFG::totalICFGNode</a></div><div class="ttdeci">NodeID totalICFGNode</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00064">ICFG.h:64</a></div></div>
|
|
955
955
|
<div class="ttc" id="classSVF_1_1ICFG_html_a15816a82d8c33a066009440dce6ee973"><div class="ttname"><a href="classSVF_1_1ICFG.html#a15816a82d8c33a066009440dce6ee973">SVF::ICFG::addICFGNode</a></div><div class="ttdeci">virtual void addICFGNode(ICFGNode *node)</div><div class="ttdoc">Add a ICFG node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00157">ICFG.h:157</a></div></div>
|
|
956
956
|
<div class="ttc" id="classSVF_1_1ICFG_html_a0e43308038663c10667177238b23ab3e"><div class="ttname"><a href="classSVF_1_1ICFG.html#a0e43308038663c10667177238b23ab3e">SVF::ICFG::CSToRetNodeMap</a></div><div class="ttdeci">CSToRetNodeMapTy CSToRetNodeMap</div><div class="ttdoc">map a callsite to its RetBlockNode </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00070">ICFG.h:70</a></div></div>
|
|
@@ -1027,8 +1027,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1027
1027
|
<p>Dump graph into dot file. </p>
|
|
1028
1028
|
<p>Dump <a class="el" href="classSVF_1_1ICFG.html">ICFG</a> </p>
|
|
1029
1029
|
|
|
1030
|
-
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#
|
|
1031
|
-
<div class="fragment"><div class="line"><a name="
|
|
1030
|
+
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00410">410</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
|
|
1031
|
+
<div class="fragment"><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <a class="code" href="classllvm_1_1GraphPrinter.html#a53b3809728c30389a594076097884b82">GraphPrinter::WriteGraphToFile</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>(), file, <span class="keyword">this</span>, simple);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
1032
1032
|
<div class="ttc" id="classllvm_1_1GraphPrinter_html_a53b3809728c30389a594076097884b82"><div class="ttname"><a href="classllvm_1_1GraphPrinter.html#a53b3809728c30389a594076097884b82">llvm::GraphPrinter::WriteGraphToFile</a></div><div class="ttdeci">static void WriteGraphToFile(llvm::raw_ostream &O, const std::string &GraphName, const GraphType &GT, bool simple=false)</div><div class="ttdef"><b>Definition:</b> <a href="GraphPrinter_8h_source.html#l00057">GraphPrinter.h:57</a></div></div>
|
|
1033
1033
|
</div><!-- fragment -->
|
|
1034
1034
|
</div>
|
|
@@ -1052,12 +1052,12 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1052
1052
|
<p>Get a basic block <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a>. </p>
|
|
1053
1053
|
<p>Get a basic block <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> TODO:: need to fix the assertions </p>
|
|
1054
1054
|
|
|
1055
|
-
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#
|
|
1056
|
-
<div class="fragment"><div class="line"><a name="
|
|
1057
|
-
<div class="ttc" id="classSVF_1_1ICFG_html_a7d10e8a815c836a070d35850f817a18c"><div class="ttname"><a href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">SVF::ICFG::getCallBlockNode</a></div><div class="ttdeci">CallBlockNode * getCallBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#
|
|
1055
|
+
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00193">193</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
|
|
1056
|
+
<div class="fragment"><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* node;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVFUtil::isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  node = <a class="code" href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">getCallBlockNode</a>(inst);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">SVFUtil::isIntrinsicInst</a>(inst))</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  node = <a class="code" href="classSVF_1_1ICFG.html#a485fcd76a8a864c9b686e68a3ca66dfc">getIntraBlockNode</a>(inst);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="comment">// assert (false && "associating an intrinsic instruction with an ICFGNode!");</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  node = <a class="code" href="classSVF_1_1ICFG.html#a485fcd76a8a864c9b686e68a3ca66dfc">getIntraBlockNode</a>(inst);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a> (node!=<span class="keyword">nullptr</span> && <span class="stringliteral">"no ICFGNode for this instruction?"</span>);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">return</span> node;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab7f58caf27c30a1d414e06f60ca84d80"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">SVF::SVFUtil::isIntrinsicInst</a></div><div class="ttdeci">bool isIntrinsicInst(const Instruction *inst)</div><div class="ttdoc">Return true if it is an intrinsic instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00180">SVFUtil.h:180</a></div></div>
|
|
1057
|
+
<div class="ttc" id="classSVF_1_1ICFG_html_a7d10e8a815c836a070d35850f817a18c"><div class="ttname"><a href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">SVF::ICFG::getCallBlockNode</a></div><div class="ttdeci">CallBlockNode * getCallBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00209">ICFG.cpp:209</a></div></div>
|
|
1058
1058
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1059
1059
|
<div class="ttc" id="classSVF_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>
|
|
1060
|
-
<div class="ttc" id="classSVF_1_1ICFG_html_a485fcd76a8a864c9b686e68a3ca66dfc"><div class="ttname"><a href="classSVF_1_1ICFG.html#a485fcd76a8a864c9b686e68a3ca66dfc">SVF::ICFG::getIntraBlockNode</a></div><div class="ttdeci">IntraBlockNode * getIntraBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#
|
|
1060
|
+
<div class="ttc" id="classSVF_1_1ICFG_html_a485fcd76a8a864c9b686e68a3ca66dfc"><div class="ttname"><a href="classSVF_1_1ICFG.html#a485fcd76a8a864c9b686e68a3ca66dfc">SVF::ICFG::getIntraBlockNode</a></div><div class="ttdeci">IntraBlockNode * getIntraBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00233">ICFG.cpp:233</a></div></div>
|
|
1061
1061
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8d8216a92140d982303f83ea424ddc91"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVF::SVFUtil::isNonInstricCallSite</a></div><div class="ttdeci">bool isNonInstricCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a callsite in the application code, excluding llvm intrinsic calls...</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00206">SVFUtil.h:206</a></div></div>
|
|
1062
1062
|
</div><!-- fragment -->
|
|
1063
1063
|
</div>
|
|
@@ -1078,8 +1078,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1078
1078
|
</table>
|
|
1079
1079
|
</div><div class="memdoc">
|
|
1080
1080
|
|
|
1081
|
-
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#
|
|
1082
|
-
<div class="fragment"><div class="line"><a name="
|
|
1081
|
+
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00209">209</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
|
|
1082
|
+
<div class="fragment"><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVFUtil::isCallSite</a>(inst) ==<span class="keyword">false</span>)</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << *inst << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVFUtil::isCallSite</a>(inst) && <span class="stringliteral">"not a call instruction?"</span>);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVFUtil::isNonInstricCallSite</a>(inst) && <span class="stringliteral">"associating an intrinsic debug instruction with an ICFGNode!"</span>);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* node = <a class="code" href="classSVF_1_1ICFG.html#a288c5cc9fb6595d367f23d1c0c05a57a">getCallICFGNode</a>(inst);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span>(node==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  node = <a class="code" href="classSVF_1_1ICFG.html#ac069357c3f5140fcb0d6163c944638fd">addCallICFGNode</a>(inst);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a> (node!=<span class="keyword">nullptr</span> && <span class="stringliteral">"no CallBlockNode for this instruction?"</span>);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">return</span> node;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2e08ce822223842fa6a73fd659b1a526"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVF::SVFUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00193">SVFUtil.h:193</a></div></div>
|
|
1083
1083
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1084
1084
|
<div class="ttc" id="classSVF_1_1ICFG_html_a288c5cc9fb6595d367f23d1c0c05a57a"><div class="ttname"><a href="classSVF_1_1ICFG.html#a288c5cc9fb6595d367f23d1c0c05a57a">SVF::ICFG::getCallICFGNode</a></div><div class="ttdeci">CallBlockNode * getCallICFGNode(const Instruction *cs)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00242">ICFG.h:242</a></div></div>
|
|
1085
1085
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
@@ -1136,8 +1136,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1136
1136
|
|
|
1137
1137
|
<p>Add a function entry node. </p>
|
|
1138
1138
|
|
|
1139
|
-
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#
|
|
1140
|
-
<div class="fragment"><div class="line"><a name="
|
|
1139
|
+
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00242">242</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
|
|
1140
|
+
<div class="fragment"><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="classSVF_1_1FunEntryBlockNode.html">FunEntryBlockNode</a>* b = <a class="code" href="classSVF_1_1ICFG.html#a5d75af18ed4228b89a4bb4e2b0b97925">getFunEntryICFGNode</a>(fun);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">if</span> (b == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFG.html#a37720720adf125ea4f8c12c4bdf41cdd">addFunEntryICFGNode</a>(fun);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">return</span> b;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> }</div><div class="ttc" id="classSVF_1_1ICFG_html_a5d75af18ed4228b89a4bb4e2b0b97925"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5d75af18ed4228b89a4bb4e2b0b97925">SVF::ICFG::getFunEntryICFGNode</a></div><div class="ttdeci">FunEntryBlockNode * getFunEntryICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Get/Add a function entry node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00203">ICFG.h:203</a></div></div>
|
|
1141
1141
|
<div class="ttc" id="classSVF_1_1FunEntryBlockNode_html"><div class="ttname"><a href="classSVF_1_1FunEntryBlockNode.html">SVF::FunEntryBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00251">ICFGNode.h:251</a></div></div>
|
|
1142
1142
|
<div class="ttc" id="classSVF_1_1ICFG_html_a37720720adf125ea4f8c12c4bdf41cdd"><div class="ttname"><a href="classSVF_1_1ICFG.html#a37720720adf125ea4f8c12c4bdf41cdd">SVF::ICFG::addFunEntryICFGNode</a></div><div class="ttdeci">FunEntryBlockNode * addFunEntryICFGNode(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00210">ICFG.h:210</a></div></div>
|
|
1143
1143
|
</div><!-- fragment -->
|
|
@@ -1192,8 +1192,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1192
1192
|
|
|
1193
1193
|
<p>Add a function exit node. </p>
|
|
1194
1194
|
|
|
1195
|
-
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#
|
|
1196
|
-
<div class="fragment"><div class="line"><a name="
|
|
1195
|
+
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00251">251</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
|
|
1196
|
+
<div class="fragment"><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <a class="code" href="classSVF_1_1FunExitBlockNode.html">FunExitBlockNode</a>* b = <a class="code" href="classSVF_1_1ICFG.html#a63479291b885344630ebf024d537ac19">getFunExitICFGNode</a>(fun);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">if</span> (b == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ICFG.html#a7874a7a92beb17fd5a4a9575cb183975">addFunExitICFGNode</a>(fun);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">return</span> b;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> }</div><div class="ttc" id="classSVF_1_1ICFG_html_a7874a7a92beb17fd5a4a9575cb183975"><div class="ttname"><a href="classSVF_1_1ICFG.html#a7874a7a92beb17fd5a4a9575cb183975">SVF::ICFG::addFunExitICFGNode</a></div><div class="ttdeci">FunExitBlockNode * addFunExitICFGNode(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00226">ICFG.h:226</a></div></div>
|
|
1197
1197
|
<div class="ttc" id="classSVF_1_1FunExitBlockNode_html"><div class="ttname"><a href="classSVF_1_1FunExitBlockNode.html">SVF::FunExitBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00308">ICFGNode.h:308</a></div></div>
|
|
1198
1198
|
<div class="ttc" id="classSVF_1_1ICFG_html_a63479291b885344630ebf024d537ac19"><div class="ttname"><a href="classSVF_1_1ICFG.html#a63479291b885344630ebf024d537ac19">SVF::ICFG::getFunExitICFGNode</a></div><div class="ttdeci">FunExitBlockNode * getFunExitICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Get/Add a function exit node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00219">ICFG.h:219</a></div></div>
|
|
1199
1199
|
</div><!-- fragment -->
|
|
@@ -1293,8 +1293,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1293
1293
|
<p>Get a <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> edge according to src and dst. </p>
|
|
1294
1294
|
<p>Return the corresponding <a class="el" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> </p>
|
|
1295
1295
|
|
|
1296
|
-
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#
|
|
1297
|
-
<div class="fragment"><div class="line"><a name="
|
|
1296
|
+
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00315">315</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
|
|
1297
|
+
<div class="fragment"><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> * edge = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> counter = 0;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">for</span> (ICFGEdge::ICFGEdgeSetTy::iterator iter = src-><a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>();</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  iter != src-><a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); ++iter)</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">if</span> ((*iter)->getDstID() == dst-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() && (*iter)->getEdgeKind() == kind)</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  counter++;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  edge = (*iter);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(counter <= 1 && <span class="stringliteral">"there's more than one edge between two ICFG nodes"</span>);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> }</div><div class="ttc" id="classSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00042">ICFGEdge.h:42</a></div></div>
|
|
1298
1298
|
<div class="ttc" id="classSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00202">GenericGraph.h:202</a></div></div>
|
|
1299
1299
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1300
1300
|
<div class="ttc" id="namespaceSVF_html_a2db29836a72e8d86e9baa6d8d55d2978"><div class="ttname"><a href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">SVF::Size_t</a></div><div class="ttdeci">signed long Size_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00078">SVFBasicTypes.h:78</a></div></div>
|
|
@@ -1381,8 +1381,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1381
1381
|
</table>
|
|
1382
1382
|
</div><div class="memdoc">
|
|
1383
1383
|
|
|
1384
|
-
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#
|
|
1385
|
-
<div class="fragment"><div class="line"><a name="
|
|
1384
|
+
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00233">233</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
|
|
1385
|
+
<div class="fragment"><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="classSVF_1_1IntraBlockNode.html">IntraBlockNode</a>* node = <a class="code" href="classSVF_1_1ICFG.html#a5f03c3befe1df9fa62221fc6989d387a">getIntraBlockICFGNode</a>(inst);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span>(node==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  node = <a class="code" href="classSVF_1_1ICFG.html#a9c9984f07859c7b0a4cc05ef7acf28af">addIntraBlockICFGNode</a>(inst);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">return</span> node;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> }</div><div class="ttc" id="classSVF_1_1ICFG_html_a5f03c3befe1df9fa62221fc6989d387a"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5f03c3befe1df9fa62221fc6989d387a">SVF::ICFG::getIntraBlockICFGNode</a></div><div class="ttdeci">IntraBlockNode * getIntraBlockICFGNode(const Instruction *inst)</div><div class="ttdoc">Get/Add IntraBlock ICFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00187">ICFG.h:187</a></div></div>
|
|
1386
1386
|
<div class="ttc" id="classSVF_1_1ICFG_html_a9c9984f07859c7b0a4cc05ef7acf28af"><div class="ttname"><a href="classSVF_1_1ICFG.html#a9c9984f07859c7b0a4cc05ef7acf28af">SVF::ICFG::addIntraBlockICFGNode</a></div><div class="ttdeci">IntraBlockNode * addIntraBlockICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00194">ICFG.h:194</a></div></div>
|
|
1387
1387
|
<div class="ttc" id="classSVF_1_1IntraBlockNode_html"><div class="ttname"><a href="classSVF_1_1IntraBlockNode.html">SVF::IntraBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00175">ICFGNode.h:175</a></div></div>
|
|
1388
1388
|
</div><!-- fragment -->
|
|
@@ -1404,8 +1404,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1404
1404
|
</table>
|
|
1405
1405
|
</div><div class="memdoc">
|
|
1406
1406
|
|
|
1407
|
-
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#
|
|
1408
|
-
<div class="fragment"><div class="line"><a name="
|
|
1407
|
+
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00222">222</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
|
|
1408
|
+
<div class="fragment"><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVFUtil::isCallSite</a>(inst) && <span class="stringliteral">"not a call instruction?"</span>);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVFUtil::isNonInstricCallSite</a>(inst) && <span class="stringliteral">"associating an intrinsic debug instruction with an ICFGNode!"</span>);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a>* node = <a class="code" href="classSVF_1_1ICFG.html#ae3bd3bf29b3dac286b93be22cbb60b2c">getRetICFGNode</a>(inst);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">if</span>(node==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  node = <a class="code" href="classSVF_1_1ICFG.html#a45891a968511d4779288a1a0aa089619">addRetICFGNode</a>(inst);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a> (node!=<span class="keyword">nullptr</span> && <span class="stringliteral">"no RetBlockNode for this instruction?"</span>);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">return</span> node;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2e08ce822223842fa6a73fd659b1a526"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVF::SVFUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00193">SVFUtil.h:193</a></div></div>
|
|
1409
1409
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1410
1410
|
<div class="ttc" id="classSVF_1_1ICFG_html_ae3bd3bf29b3dac286b93be22cbb60b2c"><div class="ttname"><a href="classSVF_1_1ICFG.html#ae3bd3bf29b3dac286b93be22cbb60b2c">SVF::ICFG::getRetICFGNode</a></div><div class="ttdeci">RetBlockNode * getRetICFGNode(const Instruction *cs)</div><div class="ttdoc">Get/Add a return node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00251">ICFG.h:251</a></div></div>
|
|
1411
1411
|
<div class="ttc" id="classSVF_1_1RetBlockNode_html"><div class="ttname"><a href="classSVF_1_1RetBlockNode.html">SVF::RetBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00459">ICFGNode.h:459</a></div></div>
|
|
@@ -1509,8 +1509,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1509
1509
|
</div><div class="memdoc">
|
|
1510
1510
|
<p>Whether we has an inter <a class="el" href="classSVF_1_1ICFG.html">ICFG</a> edge </p>
|
|
1511
1511
|
|
|
1512
|
-
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#
|
|
1513
|
-
<div class="fragment"><div class="line"><a name="
|
|
1512
|
+
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00280">280</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
|
|
1513
|
+
<div class="fragment"><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> edge(src,dst, kind);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* outEdge = src-><a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>(&edge);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* inEdge = dst-><a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>(&edge);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">if</span> (outEdge && inEdge)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(outEdge == inEdge && <span class="stringliteral">"edges not match"</span>);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">return</span> outEdge;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> }</div><div class="ttc" id="classSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00042">ICFGEdge.h:42</a></div></div>
|
|
1514
1514
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a06a7373b11143e709784de784fa476fe"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">SVF::GenericNode::hasIncomingEdge</a></div><div class="ttdeci">bool hasIncomingEdge() const</div><div class="ttdoc">Has incoming/outgoing edge set. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00190">GenericGraph.h:190</a></div></div>
|
|
1515
1515
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1516
1516
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a0931220d7a38e03f206cbdc6465d32ad"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">SVF::GenericNode::hasOutgoingEdge</a></div><div class="ttdeci">bool hasOutgoingEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00194">GenericGraph.h:194</a></div></div>
|
|
@@ -1552,8 +1552,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1552
1552
|
<p>Whether we has a <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> edge. </p>
|
|
1553
1553
|
<p>Whether we has an intra <a class="el" href="classSVF_1_1ICFG.html">ICFG</a> edge </p>
|
|
1554
1554
|
|
|
1555
|
-
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#
|
|
1556
|
-
<div class="fragment"><div class="line"><a name="
|
|
1555
|
+
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00263">263</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
|
|
1556
|
+
<div class="fragment"><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> edge(src,dst,kind);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* outEdge = src-><a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>(&edge);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* inEdge = dst-><a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>(&edge);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">if</span> (outEdge && inEdge)</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(outEdge == inEdge && <span class="stringliteral">"edges not match"</span>);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> outEdge;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> }</div><div class="ttc" id="classSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00042">ICFGEdge.h:42</a></div></div>
|
|
1557
1557
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a06a7373b11143e709784de784fa476fe"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">SVF::GenericNode::hasIncomingEdge</a></div><div class="ttdeci">bool hasIncomingEdge() const</div><div class="ttdoc">Has incoming/outgoing edge set. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00190">GenericGraph.h:190</a></div></div>
|
|
1558
1558
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1559
1559
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a0931220d7a38e03f206cbdc6465d32ad"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">SVF::GenericNode::hasOutgoingEdge</a></div><div class="ttdeci">bool hasOutgoingEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00194">GenericGraph.h:194</a></div></div>
|
|
@@ -1593,8 +1593,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1593
1593
|
</div><div class="memdoc">
|
|
1594
1594
|
<p>Whether we has an thread <a class="el" href="classSVF_1_1ICFG.html">ICFG</a> edge </p>
|
|
1595
1595
|
|
|
1596
|
-
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#
|
|
1597
|
-
<div class="fragment"><div class="line"><a name="
|
|
1596
|
+
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00297">297</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
|
|
1597
|
+
<div class="fragment"><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> edge(src,dst,kind);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* outEdge = src-><a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>(&edge);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a>* inEdge = dst-><a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>(&edge);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">if</span> (outEdge && inEdge)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(outEdge == inEdge && <span class="stringliteral">"edges not match"</span>);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">return</span> outEdge;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> }</div><div class="ttc" id="classSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00042">ICFGEdge.h:42</a></div></div>
|
|
1598
1598
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a06a7373b11143e709784de784fa476fe"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">SVF::GenericNode::hasIncomingEdge</a></div><div class="ttdeci">bool hasIncomingEdge() const</div><div class="ttdoc">Has incoming/outgoing edge set. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00190">GenericGraph.h:190</a></div></div>
|
|
1599
1599
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1600
1600
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a0931220d7a38e03f206cbdc6465d32ad"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">SVF::GenericNode::hasOutgoingEdge</a></div><div class="ttdeci">bool hasOutgoingEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00194">GenericGraph.h:194</a></div></div>
|
|
@@ -1681,10 +1681,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1681
1681
|
<p>update <a class="el" href="classSVF_1_1ICFG.html">ICFG</a> for indirect calls </p>
|
|
1682
1682
|
<p>Update <a class="el" href="classSVF_1_1ICFG.html">ICFG</a> for indirect calls </p>
|
|
1683
1683
|
|
|
1684
|
-
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#
|
|
1685
|
-
<div class="fragment"><div class="line"><a name="
|
|
1684
|
+
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00426">426</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
|
|
1685
|
+
<div class="fragment"><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  PTACallGraph::CallEdgeMap::const_iterator iter = callgraph-><a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().begin();</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  PTACallGraph::CallEdgeMap::const_iterator eiter = callgraph-><a class="code" href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">getIndCallMap</a>().end();</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">for</span> (; iter != eiter; iter++)</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* callBlock = iter->first;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* cs = callBlock-><a class="code" href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">getCallSite</a>();</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(callBlock-><a class="code" href="classSVF_1_1CallBlockNode.html#a285c517dfd7fee5467606663a0fdd035">isIndirectCall</a>() && <span class="stringliteral">"this is not an indirect call?"</span>);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> & functions = iter->second;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">for</span> (PTACallGraph::FunctionSet::const_iterator func_iter = functions.begin(); func_iter != functions.end(); func_iter++)</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = *func_iter;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a> = <a class="code" href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">getCallBlockNode</a>(cs);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(callee))</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <a class="code" href="classSVF_1_1FunEntryBlockNode.html">FunEntryBlockNode</a>* calleeEntryNode = <a class="code" href="classSVF_1_1ICFG.html#a5d75af18ed4228b89a4bb4e2b0b97925">getFunEntryICFGNode</a>(callee);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <a class="code" href="classSVF_1_1ICFG.html#abde033687317d47909ee45db7501723f">addCallEdge</a>(CallBlockNode, calleeEntryNode, cs);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <a class="code" href="classSVF_1_1RetBlockNode.html">RetBlockNode</a>* retBlockNode = <a class="code" href="classSVF_1_1ICFG.html#a6d66c83cb1656d0f8ec8b8b65a9e9c41">getRetBlockNode</a>(cs);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <a class="code" href="classSVF_1_1FunExitBlockNode.html">FunExitBlockNode</a>* calleeExitNode = <a class="code" href="classSVF_1_1ICFG.html#a63479291b885344630ebf024d537ac19">getFunExitICFGNode</a>(callee);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <a class="code" href="classSVF_1_1ICFG.html#a4a44849b596c89ab14d2e5f18366e848">addRetEdge</a>(calleeExitNode, retBlockNode, cs);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  }</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  }</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> }</div><div class="ttc" id="classSVF_1_1ICFG_html_abde033687317d47909ee45db7501723f"><div class="ttname"><a href="classSVF_1_1ICFG.html#abde033687317d47909ee45db7501723f">SVF::ICFG::addCallEdge</a></div><div class="ttdeci">ICFGEdge * addCallEdge(ICFGNode *srcNode, ICFGNode *dstNode, const Instruction *cs)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00375">ICFG.cpp:375</a></div></div>
|
|
1686
1686
|
<div class="ttc" id="classSVF_1_1ICFG_html_a5d75af18ed4228b89a4bb4e2b0b97925"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5d75af18ed4228b89a4bb4e2b0b97925">SVF::ICFG::getFunEntryICFGNode</a></div><div class="ttdeci">FunEntryBlockNode * getFunEntryICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Get/Add a function entry node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00203">ICFG.h:203</a></div></div>
|
|
1687
|
-
<div class="ttc" id="classSVF_1_1ICFG_html_a7d10e8a815c836a070d35850f817a18c"><div class="ttname"><a href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">SVF::ICFG::getCallBlockNode</a></div><div class="ttdeci">CallBlockNode * getCallBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#
|
|
1687
|
+
<div class="ttc" id="classSVF_1_1ICFG_html_a7d10e8a815c836a070d35850f817a18c"><div class="ttname"><a href="classSVF_1_1ICFG.html#a7d10e8a815c836a070d35850f817a18c">SVF::ICFG::getCallBlockNode</a></div><div class="ttdeci">CallBlockNode * getCallBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00209">ICFG.cpp:209</a></div></div>
|
|
1688
1688
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_ad49fa2a288945f6910deb11acdf6a42d"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#ad49fa2a288945f6910deb11acdf6a42d">SVF::PTACallGraph::getIndCallMap</a></div><div class="ttdeci">CallEdgeMap & getIndCallMap()</div><div class="ttdoc">Get callees from an indirect callsite. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00280">PTACallGraph.h:280</a></div></div>
|
|
1689
1689
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1690
1690
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_a5f5a5ec7e707a21994d301cc07d32a5a"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">SVF::PTACallGraph::FunctionSet</a></div><div class="ttdeci">Set< const SVFFunction * > FunctionSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00228">PTACallGraph.h:228</a></div></div>
|
|
@@ -1692,12 +1692,12 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1692
1692
|
<div class="ttc" id="classSVF_1_1FunEntryBlockNode_html"><div class="ttname"><a href="classSVF_1_1FunEntryBlockNode.html">SVF::FunEntryBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00251">ICFGNode.h:251</a></div></div>
|
|
1693
1693
|
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00079">BasicTypes.h:79</a></div></div>
|
|
1694
1694
|
<div class="ttc" id="classSVF_1_1RetBlockNode_html"><div class="ttname"><a href="classSVF_1_1RetBlockNode.html">SVF::RetBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00459">ICFGNode.h:459</a></div></div>
|
|
1695
|
-
<div class="ttc" id="classSVF_1_1ICFG_html_a4a44849b596c89ab14d2e5f18366e848"><div class="ttname"><a href="classSVF_1_1ICFG.html#a4a44849b596c89ab14d2e5f18366e848">SVF::ICFG::addRetEdge</a></div><div class="ttdeci">ICFGEdge * addRetEdge(ICFGNode *srcNode, ICFGNode *dstNode, const Instruction *cs)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#
|
|
1695
|
+
<div class="ttc" id="classSVF_1_1ICFG_html_a4a44849b596c89ab14d2e5f18366e848"><div class="ttname"><a href="classSVF_1_1ICFG.html#a4a44849b596c89ab14d2e5f18366e848">SVF::ICFG::addRetEdge</a></div><div class="ttdeci">ICFGEdge * addRetEdge(ICFGNode *srcNode, ICFGNode *dstNode, const Instruction *cs)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00392">ICFG.cpp:392</a></div></div>
|
|
1696
1696
|
<div class="ttc" id="classSVF_1_1FunExitBlockNode_html"><div class="ttname"><a href="classSVF_1_1FunExitBlockNode.html">SVF::FunExitBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00308">ICFGNode.h:308</a></div></div>
|
|
1697
1697
|
<div class="ttc" id="classSVF_1_1CallBlockNode_html_a285c517dfd7fee5467606663a0fdd035"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html#a285c517dfd7fee5467606663a0fdd035">SVF::CallBlockNode::isIndirectCall</a></div><div class="ttdeci">bool isIndirectCall() const</div><div class="ttdoc">Return true if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00412">ICFGNode.h:412</a></div></div>
|
|
1698
1698
|
<div class="ttc" id="classSVF_1_1ICFG_html_a63479291b885344630ebf024d537ac19"><div class="ttname"><a href="classSVF_1_1ICFG.html#a63479291b885344630ebf024d537ac19">SVF::ICFG::getFunExitICFGNode</a></div><div class="ttdeci">FunExitBlockNode * getFunExitICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Get/Add a function exit node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00219">ICFG.h:219</a></div></div>
|
|
1699
1699
|
<div class="ttc" id="classSVF_1_1CallBlockNode_html_ad3d50024efcfa94b1246c982b43aff2f"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">SVF::CallBlockNode::getCallSite</a></div><div class="ttdeci">const Instruction * getCallSite() const</div><div class="ttdoc">Return callsite. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00381">ICFGNode.h:381</a></div></div>
|
|
1700
|
-
<div class="ttc" id="classSVF_1_1ICFG_html_a6d66c83cb1656d0f8ec8b8b65a9e9c41"><div class="ttname"><a href="classSVF_1_1ICFG.html#a6d66c83cb1656d0f8ec8b8b65a9e9c41">SVF::ICFG::getRetBlockNode</a></div><div class="ttdeci">RetBlockNode * getRetBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#
|
|
1700
|
+
<div class="ttc" id="classSVF_1_1ICFG_html_a6d66c83cb1656d0f8ec8b8b65a9e9c41"><div class="ttname"><a href="classSVF_1_1ICFG.html#a6d66c83cb1656d0f8ec8b8b65a9e9c41">SVF::ICFG::getRetBlockNode</a></div><div class="ttdeci">RetBlockNode * getRetBlockNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00222">ICFG.cpp:222</a></div></div>
|
|
1701
1701
|
<div class="ttc" id="classSVF_1_1CallBlockNode_html"><div class="ttname"><a href="classSVF_1_1CallBlockNode.html">SVF::CallBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00364">ICFGNode.h:364</a></div></div>
|
|
1702
1702
|
<div class="ttc" id="namespaceSVF_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="LLVMUtil_8h_source.html#l00063">LLVMUtil.h:63</a></div></div>
|
|
1703
1703
|
</div><!-- fragment -->
|
|
@@ -1721,8 +1721,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1721
1721
|
<p>View graph from the debugger. </p>
|
|
1722
1722
|
<p>View <a class="el" href="classSVF_1_1ICFG.html">ICFG</a> </p>
|
|
1723
1723
|
|
|
1724
|
-
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#
|
|
1725
|
-
<div class="fragment"><div class="line"><a name="
|
|
1724
|
+
<p class="definition">Definition at line <a class="el" href="ICFG_8cpp_source.html#l00418">418</a> of file <a class="el" href="ICFG_8cpp_source.html">ICFG.cpp</a>.</p>
|
|
1725
|
+
<div class="fragment"><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  llvm::ViewGraph(<span class="keyword">this</span>, <span class="stringliteral">"Interprocedural Control-Flow Graph"</span>);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> }</div></div><!-- fragment -->
|
|
1726
1726
|
</div>
|
|
1727
1727
|
</div>
|
|
1728
1728
|
<h2 class="groupheader">Friends And Related Function Documentation</h2>
|