svf-tools 1.0.508 → 1.0.509
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/ProgSlice_8h_source.html +8 -8
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +34 -33
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +104 -102
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
- package/include/SABER/SaberCondAllocator.h +5 -1
- package/package.json +1 -1
|
@@ -552,10 +552,10 @@ Static Private Attributes</h2></td></tr>
|
|
|
552
552
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab4eba98cf7306c89e40975c766d5bf65"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">SVF::SaberCondAllocator::Condition</a></div><div class="ttdeci">Z3Expr Condition</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00052">SaberCondAllocator.h:52</a></div></div>
|
|
553
553
|
<div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00118">BasicTypes.h:118</a></div></div>
|
|
554
554
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
|
|
555
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a620d53b9af8dd30523c478f4e9655817"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a620d53b9af8dd30523c478f4e9655817">SVF::SaberCondAllocator::condNeg</a></div><div class="ttdeci">Condition condNeg(const Condition &cond)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
556
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a79682a4e4da23d0eaf0066a91c2f7bd4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">SVF::SaberCondAllocator::condAnd</a></div><div class="ttdeci">Condition condAnd(const Condition &lhs, const Condition &rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
555
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a620d53b9af8dd30523c478f4e9655817"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a620d53b9af8dd30523c478f4e9655817">SVF::SaberCondAllocator::condNeg</a></div><div class="ttdeci">Condition condNeg(const Condition &cond)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00095">SaberCondAllocator.h:95</a></div></div>
|
|
556
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a79682a4e4da23d0eaf0066a91c2f7bd4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">SVF::SaberCondAllocator::condAnd</a></div><div class="ttdeci">Condition condAnd(const Condition &lhs, const Condition &rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00087">SaberCondAllocator.h:87</a></div></div>
|
|
557
557
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a6d9205380948e1bd00708581a64301e1"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6d9205380948e1bd00708581a64301e1">SVF::LLVMUtil::getBBSuccessorNum</a></div><div class="ttdeci">u32_t getBBSuccessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB&#39;s successors. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00389">LLVMUtil.cpp:389</a></div></div>
|
|
558
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
558
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00099">SaberCondAllocator.h:99</a></div></div>
|
|
559
559
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a5a39b2efcec1c77e7f06dda7b64c9765"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a5a39b2efcec1c77e7f06dda7b64c9765">SVF::SaberCondAllocator::newCond</a></div><div class="ttdeci">Condition newCond(const Instruction *inst)</div><div class="ttdoc">Allocate a new condition. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00591">SaberCondAllocator.cpp:591</a></div></div>
|
|
560
560
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_af3d224fdc92de272363f411b8f8c2a09"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#af3d224fdc92de272363f411b8f8c2a09">SVF::SaberCondAllocator::setBranchCond</a></div><div class="ttdeci">void setBranchCond(const BasicBlock *bb, const BasicBlock *succ, const Condition &cond)</div><div class="ttdoc">Get/Set a branch condition, and its terminator instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00168">SaberCondAllocator.cpp:168</a></div></div>
|
|
561
561
|
</div><!-- fragment -->
|
|
@@ -584,8 +584,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
584
584
|
</table>
|
|
585
585
|
</div><div class="memdoc">
|
|
586
586
|
|
|
587
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
588
|
-
<div class="fragment"><div class="line"><a name="
|
|
587
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00174">174</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
588
|
+
<div class="fragment"><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#a6d29487d00d66dadae7b4b79f9bf50e9">bbToCondMap</a>.clear();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a6d29487d00d66dadae7b4b79f9bf50e9"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a6d29487d00d66dadae7b4b79f9bf50e9">SVF::SaberCondAllocator::bbToCondMap</a></div><div class="ttdeci">BBToCondMap bbToCondMap</div><div class="ttdoc">map a basic block to its path condition starting from root </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00295">SaberCondAllocator.h:295</a></div></div>
|
|
589
589
|
</div><!-- fragment -->
|
|
590
590
|
</div>
|
|
591
591
|
</div>
|
|
@@ -618,7 +618,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
618
618
|
|
|
619
619
|
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00415">415</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
|
|
620
620
|
<div class="fragment"><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> </div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">for</span> (BasicBlock::const_iterator it = bb.begin(), eit = bb.end(); it != eit; it++)</div><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>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &*it;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVFUtil::isCallSite</a>(inst))</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a6528edf9a1750df4a84d1a60d4d0bbe4">SVFUtil::isProgExitCall</a>(inst))</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ad1620cc7482aeb464b53cfce64e17cc3">funToExitBBsMap</a>[bb.getParent()].insert(&bb);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  }</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  }</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</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#l00196">SVFUtil.h:196</a></div></div>
|
|
621
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ad1620cc7482aeb464b53cfce64e17cc3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad1620cc7482aeb464b53cfce64e17cc3">SVF::SaberCondAllocator::funToExitBBsMap</a></div><div class="ttdeci">FunToExitBBsMap funToExitBBsMap</div><div class="ttdoc">map a function to all its basic blocks calling program exit </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
621
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ad1620cc7482aeb464b53cfce64e17cc3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad1620cc7482aeb464b53cfce64e17cc3">SVF::SaberCondAllocator::funToExitBBsMap</a></div><div class="ttdeci">FunToExitBBsMap funToExitBBsMap</div><div class="ttdoc">map a function to all its basic blocks calling program exit </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00294">SaberCondAllocator.h:294</a></div></div>
|
|
622
622
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6528edf9a1750df4a84d1a60d4d0bbe4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6528edf9a1750df4a84d1a60d4d0bbe4">SVF::SVFUtil::isProgExitCall</a></div><div class="ttdeci">bool isProgExitCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00717">SVFUtil.h:717</a></div></div>
|
|
623
623
|
<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="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
|
|
624
624
|
</div><!-- fragment -->
|
|
@@ -666,13 +666,13 @@ Static Private Attributes</h2></td></tr>
|
|
|
666
666
|
<p>Compute calling inter-procedural guards between two SVFGNodes (from caller to callee) src –c1–> callBB –true–> funEntryBB –c2–> dst the InterCallVFGGuard is c1 ^ c2 </p>
|
|
667
667
|
|
|
668
668
|
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00476">476</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
|
|
669
|
-
<div class="fragment"><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *funEntryBB = &dstBB->getParent()->getEntryBlock();</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> c1 = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">ComputeIntraVFGGuard</a>(srcBB, callBB);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">setCFCond</a>(funEntryBB, <a class="code" href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">condOr</a>(<a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">getCFCond</a>(funEntryBB), <a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">getCFCond</a>(callBB)));</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> c2 = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">ComputeIntraVFGGuard</a>(funEntryBB, dstBB);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">condAnd</a>(c1, c2);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a49a7146006e286c6ffb5668687a5a92f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">SVF::SaberCondAllocator::getCFCond</a></div><div class="ttdeci">Condition getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
669
|
+
<div class="fragment"><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *funEntryBB = &dstBB->getParent()->getEntryBlock();</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> c1 = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">ComputeIntraVFGGuard</a>(srcBB, callBB);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">setCFCond</a>(funEntryBB, <a class="code" href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">condOr</a>(<a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">getCFCond</a>(funEntryBB), <a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">getCFCond</a>(callBB)));</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> c2 = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">ComputeIntraVFGGuard</a>(funEntryBB, dstBB);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">condAnd</a>(c1, c2);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a49a7146006e286c6ffb5668687a5a92f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">SVF::SaberCondAllocator::getCFCond</a></div><div class="ttdeci">Condition getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00222">SaberCondAllocator.h:222</a></div></div>
|
|
670
670
|
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
671
671
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab4eba98cf7306c89e40975c766d5bf65"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">SVF::SaberCondAllocator::Condition</a></div><div class="ttdeci">Z3Expr Condition</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00052">SaberCondAllocator.h:52</a></div></div>
|
|
672
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ae7aea2293ca15894af66a98649d25f5b"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">SVF::SaberCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, const Condition &cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
672
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ae7aea2293ca15894af66a98649d25f5b"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">SVF::SaberCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, const Condition &cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00212">SaberCondAllocator.h:212</a></div></div>
|
|
673
673
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a94ef09be5ef07f4d5222059b99619bc2"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">SVF::SaberCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks) </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00506">SaberCondAllocator.cpp:506</a></div></div>
|
|
674
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a2e4c3f5149a5085a5c8bb7547eae8161"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">SVF::SaberCondAllocator::condOr</a></div><div class="ttdeci">Condition condOr(const Condition &lhs, const Condition &rhs)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
675
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a79682a4e4da23d0eaf0066a91c2f7bd4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">SVF::SaberCondAllocator::condAnd</a></div><div class="ttdeci">Condition condAnd(const Condition &lhs, const Condition &rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
674
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a2e4c3f5149a5085a5c8bb7547eae8161"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">SVF::SaberCondAllocator::condOr</a></div><div class="ttdeci">Condition condOr(const Condition &lhs, const Condition &rhs)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00091">SaberCondAllocator.h:91</a></div></div>
|
|
675
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a79682a4e4da23d0eaf0066a91c2f7bd4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">SVF::SaberCondAllocator::condAnd</a></div><div class="ttdeci">Condition condAnd(const Condition &lhs, const Condition &rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00087">SaberCondAllocator.h:87</a></div></div>
|
|
676
676
|
</div><!-- fragment -->
|
|
677
677
|
</div>
|
|
678
678
|
</div>
|
|
@@ -718,13 +718,13 @@ Static Private Attributes</h2></td></tr>
|
|
|
718
718
|
<p>Compute return inter-procedural guards between two SVFGNodes (from callee to caller) src –c1–> funExitBB –true–> retBB –c2–> dst the InterRetVFGGuard is c1 ^ c2 </p>
|
|
719
719
|
|
|
720
720
|
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00493">493</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
|
|
721
|
-
<div class="fragment"><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *funExitBB = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa0e78f2e1c9c04aee478a7ecbf354800">getFunExitBB</a>(srcBB->getParent());</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> </div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> c1 = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">ComputeIntraVFGGuard</a>(srcBB, funExitBB);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">setCFCond</a>(retBB, <a class="code" href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">condOr</a>(<a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">getCFCond</a>(retBB), <a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">getCFCond</a>(funExitBB)));</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> c2 = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">ComputeIntraVFGGuard</a>(retBB, dstBB);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">condAnd</a>(c1, c2);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a49a7146006e286c6ffb5668687a5a92f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">SVF::SaberCondAllocator::getCFCond</a></div><div class="ttdeci">Condition getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
721
|
+
<div class="fragment"><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *funExitBB = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa0e78f2e1c9c04aee478a7ecbf354800">getFunExitBB</a>(srcBB->getParent());</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> </div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> c1 = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">ComputeIntraVFGGuard</a>(srcBB, funExitBB);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">setCFCond</a>(retBB, <a class="code" href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">condOr</a>(<a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">getCFCond</a>(retBB), <a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">getCFCond</a>(funExitBB)));</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> c2 = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">ComputeIntraVFGGuard</a>(retBB, dstBB);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">condAnd</a>(c1, c2);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a49a7146006e286c6ffb5668687a5a92f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">SVF::SaberCondAllocator::getCFCond</a></div><div class="ttdeci">Condition getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00222">SaberCondAllocator.h:222</a></div></div>
|
|
722
722
|
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
723
723
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab4eba98cf7306c89e40975c766d5bf65"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">SVF::SaberCondAllocator::Condition</a></div><div class="ttdeci">Z3Expr Condition</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00052">SaberCondAllocator.h:52</a></div></div>
|
|
724
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ae7aea2293ca15894af66a98649d25f5b"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">SVF::SaberCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, const Condition &cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
724
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ae7aea2293ca15894af66a98649d25f5b"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">SVF::SaberCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, const Condition &cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00212">SaberCondAllocator.h:212</a></div></div>
|
|
725
725
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a94ef09be5ef07f4d5222059b99619bc2"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">SVF::SaberCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks) </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00506">SaberCondAllocator.cpp:506</a></div></div>
|
|
726
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a2e4c3f5149a5085a5c8bb7547eae8161"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">SVF::SaberCondAllocator::condOr</a></div><div class="ttdeci">Condition condOr(const Condition &lhs, const Condition &rhs)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
727
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a79682a4e4da23d0eaf0066a91c2f7bd4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">SVF::SaberCondAllocator::condAnd</a></div><div class="ttdeci">Condition condAnd(const Condition &lhs, const Condition &rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
726
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a2e4c3f5149a5085a5c8bb7547eae8161"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">SVF::SaberCondAllocator::condOr</a></div><div class="ttdeci">Condition condOr(const Condition &lhs, const Condition &rhs)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00091">SaberCondAllocator.h:91</a></div></div>
|
|
727
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a79682a4e4da23d0eaf0066a91c2f7bd4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">SVF::SaberCondAllocator::condAnd</a></div><div class="ttdeci">Condition condAnd(const Condition &lhs, const Condition &rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00087">SaberCondAllocator.h:87</a></div></div>
|
|
728
728
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_aa0e78f2e1c9c04aee478a7ecbf354800"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa0e78f2e1c9c04aee478a7ecbf354800">SVF::LLVMUtil::getFunExitBB</a></div><div class="ttdeci">const BasicBlock * getFunExitBB(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00167">LLVMUtil.h:167</a></div></div>
|
|
729
729
|
</div><!-- fragment -->
|
|
730
730
|
</div>
|
|
@@ -770,21 +770,21 @@ Static Private Attributes</h2></td></tr>
|
|
|
770
770
|
|
|
771
771
|
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00506">506</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
|
|
772
772
|
<div class="fragment"><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> </div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  assert(srcBB->getParent() == dstBB->getParent() && <span class="stringliteral">"two basic blocks are not in the same function??"</span>);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> </div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a> *postDT = <a class="code" href="classSVF_1_1SaberCondAllocator.html#ad19b88bca27044d0d9a6999c88afde97">getPostDT</a>(srcBB->getParent());</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordflow">if</span> (postDT->dominates(dstBB, srcBB))</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> </div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#a52ec71159bc70b450895990dfebdedac">CFWorkList</a> worklist;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  worklist.push(srcBB);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">setCFCond</a>(srcBB, <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>());</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> </div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordflow">while</span> (!worklist.empty())</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  {</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb = worklist.pop();</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> cond = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">getCFCond</a>(bb);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> loopExitCond = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a4c3945abc15c6caeb9d026f47e78a340">evaluateLoopExitBranch</a>(bb, dstBB);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keywordflow">if</span> (!eq(loopExitCond, <a class="code" href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">Condition::nullExpr</a>()))</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">condAnd</a>(cond, loopExitCond);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> </div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> </div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> succ_it = succ_begin(bb);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  succ_it != succ_end(bb); succ_it++)</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ = *succ_it;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> brCond;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordflow">if</span> (postDT->dominates(succ, bb))</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  brCond = <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  brCond = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a8926da3e50d32bd1fcf0a011417d445c">getEvalBrCond</a>(bb, succ);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> </div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" bb ("</span> << bb->getName().str() <<</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="stringliteral">") --> "</span> << <span class="stringliteral">"succ_bb ("</span> << succ->getName().str() << <span class="stringliteral">") condition: "</span> << brCond << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> succPathCond = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">condAnd</a>(cond, brCond);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">setCFCond</a>(succ, <a class="code" href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">condOr</a>(<a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">getCFCond</a>(succ), succPathCond)))</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  worklist.push(succ);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  }</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  }</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> </div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" src_bb ("</span> << srcBB->getName().str() <<</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="stringliteral">") --> "</span> << <span class="stringliteral">"dst_bb ("</span> << dstBB->getName().str() << <span class="stringliteral">") condition: "</span> << <a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">getCFCond</a>(dstBB)</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> </div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">getCFCond</a>(dstBB);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a8926da3e50d32bd1fcf0a011417d445c"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a8926da3e50d32bd1fcf0a011417d445c">SVF::SaberCondAllocator::getEvalBrCond</a></div><div class="ttdeci">Condition getEvalBrCond(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Get a condition, evaluate the value for conditions if necessary (e.g., testNull like express) ...</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00157">SaberCondAllocator.cpp:157</a></div></div>
|
|
773
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a49a7146006e286c6ffb5668687a5a92f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">SVF::SaberCondAllocator::getCFCond</a></div><div class="ttdeci">Condition getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
773
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a49a7146006e286c6ffb5668687a5a92f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">SVF::SaberCondAllocator::getCFCond</a></div><div class="ttdeci">Condition getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00222">SaberCondAllocator.h:222</a></div></div>
|
|
774
774
|
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
775
775
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab4eba98cf7306c89e40975c766d5bf65"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">SVF::SaberCondAllocator::Condition</a></div><div class="ttdeci">Z3Expr Condition</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00052">SaberCondAllocator.h:52</a></div></div>
|
|
776
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ae7aea2293ca15894af66a98649d25f5b"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">SVF::SaberCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, const Condition &cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
776
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ae7aea2293ca15894af66a98649d25f5b"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">SVF::SaberCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, const Condition &cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00212">SaberCondAllocator.h:212</a></div></div>
|
|
777
777
|
<div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00118">BasicTypes.h:118</a></div></div>
|
|
778
778
|
<div class="ttc" id="SVFBasicTypes_8h_html_a817abc424f7cfcdec5954c7807970f36"><div class="ttname"><a href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a></div><div class="ttdeci">#define DSaber</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00174">SVFBasicTypes.h:174</a></div></div>
|
|
779
779
|
<div class="ttc" id="namespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00110">BasicTypes.h:110</a></div></div>
|
|
780
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a2e4c3f5149a5085a5c8bb7547eae8161"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">SVF::SaberCondAllocator::condOr</a></div><div class="ttdeci">Condition condOr(const Condition &lhs, const Condition &rhs)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
781
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a79682a4e4da23d0eaf0066a91c2f7bd4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">SVF::SaberCondAllocator::condAnd</a></div><div class="ttdeci">Condition condAnd(const Condition &lhs, const Condition &rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
780
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a2e4c3f5149a5085a5c8bb7547eae8161"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">SVF::SaberCondAllocator::condOr</a></div><div class="ttdeci">Condition condOr(const Condition &lhs, const Condition &rhs)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00091">SaberCondAllocator.h:91</a></div></div>
|
|
781
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a79682a4e4da23d0eaf0066a91c2f7bd4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">SVF::SaberCondAllocator::condAnd</a></div><div class="ttdeci">Condition condAnd(const Condition &lhs, const Condition &rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00087">SaberCondAllocator.h:87</a></div></div>
|
|
782
782
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a52ec71159bc70b450895990dfebdedac"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a52ec71159bc70b450895990dfebdedac">SVF::SaberCondAllocator::CFWorkList</a></div><div class="ttdeci">FIFOWorkList< const BasicBlock * > CFWorkList</div><div class="ttdoc">worklist for control-flow guard computation </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00059">SaberCondAllocator.h:59</a></div></div>
|
|
783
783
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a4c3945abc15c6caeb9d026f47e78a340"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a4c3945abc15c6caeb9d026f47e78a340">SVF::SaberCondAllocator::evaluateLoopExitBranch</a></div><div class="ttdeci">Condition evaluateLoopExitBranch(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Evaluate loop exit branch. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00259">SaberCondAllocator.cpp:259</a></div></div>
|
|
784
784
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::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>
|
|
785
785
|
<div class="ttc" id="classSVF_1_1Z3Expr_html_a9aa800372d57db519d484cc32ea1c5dc"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">SVF::Z3Expr::nullExpr</a></div><div class="ttdeci">static z3::expr nullExpr()</div><div class="ttdoc">null expression </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00098">Z3Expr.h:98</a></div></div>
|
|
786
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ad19b88bca27044d0d9a6999c88afde97"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad19b88bca27044d0d9a6999c88afde97">SVF::SaberCondAllocator::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *fun)</div><div class="ttdoc">Get Postdominators. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
787
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
786
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ad19b88bca27044d0d9a6999c88afde97"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad19b88bca27044d0d9a6999c88afde97">SVF::SaberCondAllocator::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *fun)</div><div class="ttdoc">Get Postdominators. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00153">SaberCondAllocator.h:153</a></div></div>
|
|
787
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00099">SaberCondAllocator.h:99</a></div></div>
|
|
788
788
|
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00155">SVFBasicTypes.h:155</a></div></div>
|
|
789
789
|
</div><!-- fragment -->
|
|
790
790
|
</div>
|
|
@@ -825,8 +825,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
825
825
|
|
|
826
826
|
<p>Condition operations. </p>
|
|
827
827
|
|
|
828
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
829
|
-
<div class="fragment"><div class="line"><a name="
|
|
828
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00087">87</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
829
|
+
<div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#a4f56bd6d3a31df94e19af9ce6e685fea">Condition::AND</a>(lhs,rhs);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="ttc" id="classSVF_1_1Z3Expr_html_a4f56bd6d3a31df94e19af9ce6e685fea"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a4f56bd6d3a31df94e19af9ce6e685fea">SVF::Z3Expr::AND</a></div><div class="ttdeci">static Z3Expr AND(const Z3Expr &lhs, const Z3Expr &rhs)</div><div class="ttdoc">compute AND, used for branch condition </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8cpp_source.html#l00092">Z3Expr.cpp:92</a></div></div>
|
|
830
830
|
</div><!-- fragment -->
|
|
831
831
|
</div>
|
|
832
832
|
</div>
|
|
@@ -854,8 +854,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
854
854
|
</table>
|
|
855
855
|
</div><div class="memdoc">
|
|
856
856
|
|
|
857
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
858
|
-
<div class="fragment"><div class="line"><a name="
|
|
857
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00095">95</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
858
|
+
<div class="fragment"><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#a9a545e516e6dee37310ad02481a84356">Condition::NEG</a>(cond);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="ttc" id="classSVF_1_1Z3Expr_html_a9a545e516e6dee37310ad02481a84356"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a9a545e516e6dee37310ad02481a84356">SVF::Z3Expr::NEG</a></div><div class="ttdeci">static Z3Expr NEG(const Z3Expr &z3Expr)</div><div class="ttdoc">compute NEG </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00294">Z3Expr.h:294</a></div></div>
|
|
859
859
|
</div><!-- fragment -->
|
|
860
860
|
</div>
|
|
861
861
|
</div>
|
|
@@ -893,8 +893,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
893
893
|
</table>
|
|
894
894
|
</div><div class="memdoc">
|
|
895
895
|
|
|
896
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
897
|
-
<div class="fragment"><div class="line"><a name="
|
|
896
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00091">91</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
897
|
+
<div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#ac063ed06c3495b790c02fe57c781b34e">Condition::OR</a>(lhs,rhs);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="ttc" id="classSVF_1_1Z3Expr_html_ac063ed06c3495b790c02fe57c781b34e"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#ac063ed06c3495b790c02fe57c781b34e">SVF::Z3Expr::OR</a></div><div class="ttdeci">static Z3Expr OR(const Z3Expr &lhs, const Z3Expr &rhs)</div><div class="ttdoc">compute OR, used for branch condition </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8cpp_source.html#l00130">Z3Expr.cpp:130</a></div></div>
|
|
898
898
|
</div><!-- fragment -->
|
|
899
899
|
</div>
|
|
900
900
|
</div>
|
|
@@ -923,8 +923,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
923
923
|
|
|
924
924
|
<p>Release memory. </p>
|
|
925
925
|
|
|
926
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
927
|
-
<div class="fragment"><div class="line"><a name="
|
|
926
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00284">284</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
927
|
+
<div class="fragment"><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  {</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>  }</div></div><!-- fragment -->
|
|
928
928
|
</div>
|
|
929
929
|
</div>
|
|
930
930
|
<a id="a100c1962eac6d7af420defc827a025ed"></a>
|
|
@@ -951,8 +951,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
951
951
|
</table>
|
|
952
952
|
</div><div class="memdoc">
|
|
953
953
|
|
|
954
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
955
|
-
<div class="fragment"><div class="line"><a name="
|
|
954
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00115">115</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
955
|
+
<div class="fragment"><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#a56ba65487cc91248259e29d3ebb5bdb0">Condition::dumpStr</a>(cond);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="ttc" id="classSVF_1_1Z3Expr_html_a56ba65487cc91248259e29d3ebb5bdb0"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a56ba65487cc91248259e29d3ebb5bdb0">SVF::Z3Expr::dumpStr</a></div><div class="ttdeci">static std::string dumpStr(const Z3Expr &z3Expr)</div><div class="ttdoc">output Z3 expression as a string </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8cpp_source.html#l00168">Z3Expr.cpp:168</a></div></div>
|
|
956
956
|
</div><!-- fragment -->
|
|
957
957
|
</div>
|
|
958
958
|
</div>
|
|
@@ -1002,11 +1002,11 @@ Static Private Attributes</h2></td></tr>
|
|
|
1002
1002
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a2b1c2e7764631d40a5b8d0ce2cc73442"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a2b1c2e7764631d40a5b8d0ce2cc73442">SVF::SaberCondAllocator::getBranchCond</a></div><div class="ttdeci">Condition getBranchCond(const BasicBlock *bb, const BasicBlock *succ) const</div><div class="ttdoc">Get branch condition. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00142">SaberCondAllocator.cpp:142</a></div></div>
|
|
1003
1003
|
<div class="ttc" id="classSVF_1_1BranchStmt_html"><div class="ttname"><a href="classSVF_1_1BranchStmt.html">SVF::BranchStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00938">SVFStatements.h:938</a></div></div>
|
|
1004
1004
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a4c3945abc15c6caeb9d026f47e78a340"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a4c3945abc15c6caeb9d026f47e78a340">SVF::SaberCondAllocator::evaluateLoopExitBranch</a></div><div class="ttdeci">Condition evaluateLoopExitBranch(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Evaluate loop exit branch. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00259">SaberCondAllocator.cpp:259</a></div></div>
|
|
1005
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a6bd67514e0ea9a2704ae83a38c9f2592"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a6bd67514e0ea9a2704ae83a38c9f2592">SVF::SaberCondAllocator::getICFG</a></div><div class="ttdeci">ICFG * getICFG() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
1005
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a6bd67514e0ea9a2704ae83a38c9f2592"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a6bd67514e0ea9a2704ae83a38c9f2592">SVF::SaberCondAllocator::getICFG</a></div><div class="ttdeci">ICFG * getICFG() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00205">SaberCondAllocator.h:205</a></div></div>
|
|
1006
1006
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a6d9205380948e1bd00708581a64301e1"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6d9205380948e1bd00708581a64301e1">SVF::LLVMUtil::getBBSuccessorNum</a></div><div class="ttdeci">u32_t getBBSuccessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB&#39;s successors. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00389">LLVMUtil.cpp:389</a></div></div>
|
|
1007
1007
|
<div class="ttc" id="classSVF_1_1Z3Expr_html_a9aa800372d57db519d484cc32ea1c5dc"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">SVF::Z3Expr::nullExpr</a></div><div class="ttdeci">static z3::expr nullExpr()</div><div class="ttdoc">null expression </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00098">Z3Expr.h:98</a></div></div>
|
|
1008
1008
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ad049eeed763a5f18267b9288f728b070"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad049eeed763a5f18267b9288f728b070">SVF::SaberCondAllocator::evaluateTestNullLikeExpr</a></div><div class="ttdeci">Condition evaluateTestNullLikeExpr(const BranchStmt *branchStmt, const BasicBlock *succ)</div><div class="ttdoc">Return branch condition after evaluating test null like expression. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00186">SaberCondAllocator.cpp:186</a></div></div>
|
|
1009
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
1009
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00099">SaberCondAllocator.h:99</a></div></div>
|
|
1010
1010
|
</div><!-- fragment -->
|
|
1011
1011
|
</div>
|
|
1012
1012
|
</div>
|
|
@@ -1051,7 +1051,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
1051
1051
|
|
|
1052
1052
|
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00259">259</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
|
|
1053
1053
|
<div class="fragment"><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = bb->getParent();</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  assert(fun == dst->getParent() && <span class="stringliteral">"two basic blocks should be in the same function"</span>);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a> *loopInfo = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a44932e57515b7ddcc192796679dd69be">getLoopInfo</a>(fun);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">if</span> (loopInfo->isLoopHeader(const_cast<BasicBlock *>(bb)))</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a> *loop = loopInfo->getLoopFor(bb);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <a class="code" href="namespaceSVF.html#a02be4933b76c2baa7fdbe8b290e12bb3">SmallBBVector</a> exitbbs;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<BasicBlock *></a> filteredbbs;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  loop->getExitBlocks(exitbbs);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">while</span> (!exitbbs.empty())</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *eb = exitbbs.pop_back_val();</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SaberCondAllocator.html#a7f5f1fb437153d2a797cf509b8f97c7f">isBBCallsProgExit</a>(eb))</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  filteredbbs.insert(eb);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> </div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordtype">bool</span> allPDT = <span class="keyword">true</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a> *pdt = <a class="code" href="classSVF_1_1SaberCondAllocator.html#ad19b88bca27044d0d9a6999c88afde97">getPostDT</a>(fun);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &filteredbb: filteredbbs)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">if</span> (!pdt->dominates(dst, filteredbb))</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  allPDT = <span class="keyword">false</span>;</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> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">if</span> (allPDT)</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">Condition::nullExpr</a>();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> }</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
1054
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a44932e57515b7ddcc192796679dd69be"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a44932e57515b7ddcc192796679dd69be">SVF::SaberCondAllocator::getLoopInfo</a></div><div class="ttdeci">LoopInfo * getLoopInfo(const Function *f)</div><div class="ttdoc">Get LoopInfo. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
1054
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a44932e57515b7ddcc192796679dd69be"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a44932e57515b7ddcc192796679dd69be">SVF::SaberCondAllocator::getLoopInfo</a></div><div class="ttdeci">LoopInfo * getLoopInfo(const Function *f)</div><div class="ttdoc">Get LoopInfo. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00158">SaberCondAllocator.h:158</a></div></div>
|
|
1055
1055
|
<div class="ttc" id="namespaceSVF_html_a02be4933b76c2baa7fdbe8b290e12bb3"><div class="ttname"><a href="namespaceSVF.html#a02be4933b76c2baa7fdbe8b290e12bb3">SVF::SmallBBVector</a></div><div class="ttdeci">llvm::SmallVector< llvm::BasicBlock *, 8 > SmallBBVector</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00119">SVFBasicTypes.h:119</a></div></div>
|
|
1056
1056
|
<div class="ttc" id="namespaceSVF_html_a77e088bfe47c0b0ddcbbe0693dec6fe5"><div class="ttname"><a href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">SVF::LoopInfo</a></div><div class="ttdeci">llvm::LoopInfo LoopInfo</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00080">BasicTypes.h:80</a></div></div>
|
|
1057
1057
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a7f5f1fb437153d2a797cf509b8f97c7f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a7f5f1fb437153d2a797cf509b8f97c7f">SVF::SaberCondAllocator::isBBCallsProgExit</a></div><div class="ttdeci">bool isBBCallsProgExit(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00432">SaberCondAllocator.cpp:432</a></div></div>
|
|
@@ -1060,8 +1060,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1060
1060
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
|
|
1061
1061
|
<div class="ttc" id="namespaceSVF_html_abf85e29310b2e4df8925d00a5c081314"><div class="ttname"><a href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">SVF::Loop</a></div><div class="ttdeci">llvm::Loop Loop</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00079">BasicTypes.h:79</a></div></div>
|
|
1062
1062
|
<div class="ttc" id="classSVF_1_1Z3Expr_html_a9aa800372d57db519d484cc32ea1c5dc"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">SVF::Z3Expr::nullExpr</a></div><div class="ttdeci">static z3::expr nullExpr()</div><div class="ttdoc">null expression </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00098">Z3Expr.h:98</a></div></div>
|
|
1063
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ad19b88bca27044d0d9a6999c88afde97"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad19b88bca27044d0d9a6999c88afde97">SVF::SaberCondAllocator::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *fun)</div><div class="ttdoc">Get Postdominators. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
1064
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
1063
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ad19b88bca27044d0d9a6999c88afde97"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad19b88bca27044d0d9a6999c88afde97">SVF::SaberCondAllocator::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *fun)</div><div class="ttdoc">Get Postdominators. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00153">SaberCondAllocator.h:153</a></div></div>
|
|
1064
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00099">SaberCondAllocator.h:99</a></div></div>
|
|
1065
1065
|
</div><!-- fragment -->
|
|
1066
1066
|
</div>
|
|
1067
1067
|
</div>
|
|
@@ -1107,12 +1107,12 @@ Static Private Attributes</h2></td></tr>
|
|
|
1107
1107
|
|
|
1108
1108
|
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00215">215</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
|
|
1109
1109
|
<div class="fragment"><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ1 = branchStmt-><a class="code" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">getSuccessor</a>(0)-><a class="code" href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">getBB</a>();</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ2 = branchStmt-><a class="code" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">getSuccessor</a>(1)-><a class="code" href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">getBB</a>();</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordtype">bool</span> branch1 = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a7f5f1fb437153d2a797cf509b8f97c7f">isBBCallsProgExit</a>(succ1);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordtype">bool</span> branch2 = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a7f5f1fb437153d2a797cf509b8f97c7f">isBBCallsProgExit</a>(succ2);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">if</span> (branch1 && !branch2)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">if</span> (succ1 == succ)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!branch1 && branch2)</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">if</span> (succ2 == succ)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="comment">// two branches both call program exit</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (branch1 && branch2)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</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_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">Condition::nullExpr</a>();</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> }</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
1110
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9b52da69d79746765d0c12a5ce1b08f4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">SVF::SaberCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
1110
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9b52da69d79746765d0c12a5ce1b08f4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">SVF::SaberCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00103">SaberCondAllocator.h:103</a></div></div>
|
|
1111
1111
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a7f5f1fb437153d2a797cf509b8f97c7f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a7f5f1fb437153d2a797cf509b8f97c7f">SVF::SaberCondAllocator::isBBCallsProgExit</a></div><div class="ttdeci">bool isBBCallsProgExit(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00432">SaberCondAllocator.cpp:432</a></div></div>
|
|
1112
1112
|
<div class="ttc" id="classSVF_1_1BranchStmt_html_a7d9a6ebb2d95942c453864b5327b1ae8"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">SVF::BranchStmt::getSuccessor</a></div><div class="ttdeci">const ICFGNode * getSuccessor(u32_t i) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01007">SVFStatements.h:1007</a></div></div>
|
|
1113
1113
|
<div class="ttc" id="classSVF_1_1ICFGNode_html_ac1689701c75e04481e2ae2f4482551c4"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">SVF::ICFGNode::getBB</a></div><div class="ttdeci">virtual const BasicBlock * getBB() const</div><div class="ttdoc">Return the function of this ICFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00086">ICFGNode.h:86</a></div></div>
|
|
1114
1114
|
<div class="ttc" id="classSVF_1_1Z3Expr_html_a9aa800372d57db519d484cc32ea1c5dc"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">SVF::Z3Expr::nullExpr</a></div><div class="ttdeci">static z3::expr nullExpr()</div><div class="ttdoc">null expression </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00098">Z3Expr.h:98</a></div></div>
|
|
1115
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
1115
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00099">SaberCondAllocator.h:99</a></div></div>
|
|
1116
1116
|
</div><!-- fragment -->
|
|
1117
1117
|
</div>
|
|
1118
1118
|
</div>
|
|
@@ -1155,13 +1155,13 @@ Static Private Attributes</h2></td></tr>
|
|
|
1155
1155
|
|
|
1156
1156
|
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00186">186</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
|
|
1157
1157
|
<div class="fragment"><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ1 = branchStmt-><a class="code" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">getSuccessor</a>(0)-><a class="code" href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">getBB</a>();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SaberCondAllocator.html#a0244cfcb0f23614e8f870383a6bd44b3">isTestNullExpr</a>(branchStmt-><a class="code" href="classSVF_1_1BranchStmt.html#a915384027ae53e99311f05a08edf99f0">getCondition</a>()-><a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()))</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span> (succ1 == succ)</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SaberCondAllocator.html#a8ffebb3dec9884434be8e432ab1f0063">isTestNotNullExpr</a>(branchStmt-><a class="code" href="classSVF_1_1BranchStmt.html#a915384027ae53e99311f05a08edf99f0">getCondition</a>()-><a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()))</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">if</span> (succ1 == succ)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">Condition::nullExpr</a>();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> }</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
1158
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9b52da69d79746765d0c12a5ce1b08f4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">SVF::SaberCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
1158
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9b52da69d79746765d0c12a5ce1b08f4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">SVF::SaberCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00103">SaberCondAllocator.h:103</a></div></div>
|
|
1159
1159
|
<div class="ttc" id="classSVF_1_1BranchStmt_html_a7d9a6ebb2d95942c453864b5327b1ae8"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">SVF::BranchStmt::getSuccessor</a></div><div class="ttdeci">const ICFGNode * getSuccessor(u32_t i) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01007">SVFStatements.h:1007</a></div></div>
|
|
1160
1160
|
<div class="ttc" id="classSVF_1_1ICFGNode_html_ac1689701c75e04481e2ae2f4482551c4"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">SVF::ICFGNode::getBB</a></div><div class="ttdeci">virtual const BasicBlock * getBB() const</div><div class="ttdoc">Return the function of this ICFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00086">ICFGNode.h:86</a></div></div>
|
|
1161
1161
|
<div class="ttc" id="classSVF_1_1SVFVar_html_afaa33caa8d2a306f6741d9d066243e40"><div class="ttname"><a href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">SVF::SVFVar::getValue</a></div><div class="ttdeci">const Value * getValue() const</div><div class="ttdoc">Get/has methods of the components. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00091">SVFVariables.h:91</a></div></div>
|
|
1162
1162
|
<div class="ttc" id="classSVF_1_1BranchStmt_html_a915384027ae53e99311f05a08edf99f0"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a915384027ae53e99311f05a08edf99f0">SVF::BranchStmt::getCondition</a></div><div class="ttdeci">const SVFVar * getCondition() const</div><div class="ttdoc">Return the condition. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00320">SVFStatements.cpp:320</a></div></div>
|
|
1163
1163
|
<div class="ttc" id="classSVF_1_1Z3Expr_html_a9aa800372d57db519d484cc32ea1c5dc"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">SVF::Z3Expr::nullExpr</a></div><div class="ttdeci">static z3::expr nullExpr()</div><div class="ttdoc">null expression </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00098">Z3Expr.h:98</a></div></div>
|
|
1164
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
1164
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00099">SaberCondAllocator.h:99</a></div></div>
|
|
1165
1165
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a0244cfcb0f23614e8f870383a6bd44b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a0244cfcb0f23614e8f870383a6bd44b3">SVF::SaberCondAllocator::isTestNullExpr</a></div><div class="ttdeci">bool isTestNullExpr(const Value *test) const</div><div class="ttdoc">Return true if this is a test null expression. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00349">SaberCondAllocator.cpp:349</a></div></div>
|
|
1166
1166
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a8ffebb3dec9884434be8e432ab1f0063"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a8ffebb3dec9884434be8e432ab1f0063">SVF::SaberCondAllocator::isTestNotNullExpr</a></div><div class="ttdeci">bool isTestNotNullExpr(const Value *test) const</div><div class="ttdoc">Return true if this is a test not null expression. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00358">SaberCondAllocator.cpp:358</a></div></div>
|
|
1167
1167
|
</div><!-- fragment -->
|
|
@@ -1193,8 +1193,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1193
1193
|
|
|
1194
1194
|
<p>Iterator every element of the condition. </p>
|
|
1195
1195
|
|
|
1196
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
1197
|
-
<div class="fragment"><div class="line"><a name="
|
|
1196
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00108">108</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
1197
|
+
<div class="fragment"><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="namespaceSVF.html#aa7b6a13e52671de8524b130738aeb564">NodeBS</a> elems;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9f43fe1cacf419f03276d66c3a54fe77">extractSubConds</a>(cond, elems);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> elems;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="ttc" id="namespaceSVF_html_aa7b6a13e52671de8524b130738aeb564"><div class="ttname"><a href="namespaceSVF.html#aa7b6a13e52671de8524b130738aeb564">SVF::NodeBS</a></div><div class="ttdeci">SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00096">SVFBasicTypes.h:96</a></div></div>
|
|
1198
1198
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9f43fe1cacf419f03276d66c3a54fe77"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9f43fe1cacf419f03276d66c3a54fe77">SVF::SaberCondAllocator::extractSubConds</a></div><div class="ttdeci">void extractSubConds(const Condition &condition, NodeBS &support) const</div><div class="ttdoc">extract subexpression from a Z3 expression </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00627">SaberCondAllocator.cpp:627</a></div></div>
|
|
1199
1199
|
</div><!-- fragment -->
|
|
1200
1200
|
</div>
|
|
@@ -1237,7 +1237,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
1237
1237
|
|
|
1238
1238
|
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00627">627</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
|
|
1239
1239
|
<div class="fragment"><div class="line"><a name="l00628"></a><span class="lineno"> 628</span> {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  <span class="keywordflow">if</span> (condition.getExpr().num_args() == 1 && <a class="code" href="classSVF_1_1SaberCondAllocator.html#ad5d27f65374025b6a105ea7a92cbdb50">isNegCond</a>(condition.id()))</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  {</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  support.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(condition.getExpr().id());</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  }</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="keywordflow">if</span> (condition.getExpr().num_args() == 0)</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordflow">if</span> (!condition.getExpr().is_true() && !condition.getExpr().is_false())</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  support.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(condition.getExpr().id());</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < condition.getExpr().num_args(); ++i)</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  {</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> expr = condition.<a class="code" href="classSVF_1_1Z3Expr.html#a57c199ba2c3c6a6d44a86e0b1429be55">getExpr</a>().arg(i);</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9f43fe1cacf419f03276d66c3a54fe77">extractSubConds</a>(expr, support);</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  }</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> </div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab4eba98cf7306c89e40975c766d5bf65"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">SVF::SaberCondAllocator::Condition</a></div><div class="ttdeci">Z3Expr Condition</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00052">SaberCondAllocator.h:52</a></div></div>
|
|
1240
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ad5d27f65374025b6a105ea7a92cbdb50"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad5d27f65374025b6a105ea7a92cbdb50">SVF::SaberCondAllocator::isNegCond</a></div><div class="ttdeci">bool isNegCond(u32_t id) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
1240
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ad5d27f65374025b6a105ea7a92cbdb50"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad5d27f65374025b6a105ea7a92cbdb50">SVF::SaberCondAllocator::isNegCond</a></div><div class="ttdeci">bool isNegCond(u32_t id) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00142">SaberCondAllocator.h:142</a></div></div>
|
|
1241
1241
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
|
|
1242
1242
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9f43fe1cacf419f03276d66c3a54fe77"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9f43fe1cacf419f03276d66c3a54fe77">SVF::SaberCondAllocator::extractSubConds</a></div><div class="ttdeci">void extractSubConds(const Condition &condition, NodeBS &support) const</div><div class="ttdoc">extract subexpression from a Z3 expression </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00627">SaberCondAllocator.cpp:627</a></div></div>
|
|
1243
1243
|
<div class="ttc" id="classSVF_1_1Z3Expr_html_a57c199ba2c3c6a6d44a86e0b1429be55"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a57c199ba2c3c6a6d44a86e0b1429be55">SVF::Z3Expr::getExpr</a></div><div class="ttdeci">const z3::expr & getExpr() const</div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00079">Z3Expr.h:79</a></div></div>
|
|
@@ -1284,9 +1284,9 @@ Static Private Attributes</h2></td></tr>
|
|
|
1284
1284
|
|
|
1285
1285
|
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00142">142</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
|
|
1286
1286
|
<div class="fragment"><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a5d911cede2f514e87b030e2a93919515">getBBSuccessorPos</a>(bb, succ);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6d9205380948e1bd00708581a64301e1">getBBSuccessorNum</a>(bb) == 1)</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  BBCondMap::const_iterator it = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">bbConds</a>.find(bb);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  assert(it != <a class="code" href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">bbConds</a>.end() && <span class="stringliteral">"basic block does not have branch and conditions??"</span>);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  CondPosMap::const_iterator cit = it->second.find(pos);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  assert(cit != it->second.end() && <span class="stringliteral">"no condition on the branch??"</span>);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> cit->second;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> }</div><div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
|
|
1287
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a5c129ebf5ae55eb3af8bd670c921a646"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">SVF::SaberCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">a counter for fresh condition </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
1287
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a5c129ebf5ae55eb3af8bd670c921a646"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">SVF::SaberCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">a counter for fresh condition </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00303">SaberCondAllocator.h:303</a></div></div>
|
|
1288
1288
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a6d9205380948e1bd00708581a64301e1"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6d9205380948e1bd00708581a64301e1">SVF::LLVMUtil::getBBSuccessorNum</a></div><div class="ttdeci">u32_t getBBSuccessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB&#39;s successors. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00389">LLVMUtil.cpp:389</a></div></div>
|
|
1289
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
1289
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00099">SaberCondAllocator.h:99</a></div></div>
|
|
1290
1290
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a5d911cede2f514e87b030e2a93919515"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a5d911cede2f514e87b030e2a93919515">SVF::LLVMUtil::getBBSuccessorPos</a></div><div class="ttdeci">u32_t getBBSuccessorPos(const BasicBlock *BB, const BasicBlock *Succ)</div><div class="ttdoc">Get basic block successor position. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00357">LLVMUtil.cpp:357</a></div></div>
|
|
1291
1291
|
</div><!-- fragment -->
|
|
1292
1292
|
</div>
|
|
@@ -1315,9 +1315,9 @@ Static Private Attributes</h2></td></tr>
|
|
|
1315
1315
|
</table>
|
|
1316
1316
|
</div><div class="memdoc">
|
|
1317
1317
|
|
|
1318
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
1319
|
-
<div class="fragment"><div class="line"><a name="
|
|
1320
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9b52da69d79746765d0c12a5ce1b08f4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">SVF::SaberCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
1318
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00222">222</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
1319
|
+
<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>  BBToCondMap::const_iterator it = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a6d29487d00d66dadae7b4b79f9bf50e9">bbToCondMap</a>.find(bb);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">if</span>(it==<a class="code" href="classSVF_1_1SaberCondAllocator.html#a6d29487d00d66dadae7b4b79f9bf50e9">bbToCondMap</a>.end())</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a6d29487d00d66dadae7b4b79f9bf50e9"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a6d29487d00d66dadae7b4b79f9bf50e9">SVF::SaberCondAllocator::bbToCondMap</a></div><div class="ttdeci">BBToCondMap bbToCondMap</div><div class="ttdoc">map a basic block to its path condition starting from root </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00295">SaberCondAllocator.h:295</a></div></div>
|
|
1320
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9b52da69d79746765d0c12a5ce1b08f4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">SVF::SaberCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00103">SaberCondAllocator.h:103</a></div></div>
|
|
1321
1321
|
</div><!-- fragment -->
|
|
1322
1322
|
</div>
|
|
1323
1323
|
</div>
|
|
@@ -1347,8 +1347,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1347
1347
|
|
|
1348
1348
|
<p>Get/Set instruction based on Z3 expression id. </p>
|
|
1349
1349
|
|
|
1350
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
1351
|
-
<div class="fragment"><div class="line"><a name="
|
|
1350
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00128">128</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
1351
|
+
<div class="fragment"><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  IndexToTermInstMap::const_iterator it = <a class="code" href="classSVF_1_1SaberCondAllocator.html#aee401aa2c7884888bbd26544bcd92881">idToTermInstMap</a>.find(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  assert(it != <a class="code" href="classSVF_1_1SaberCondAllocator.html#aee401aa2c7884888bbd26544bcd92881">idToTermInstMap</a>.end() && <span class="stringliteral">"this should be a fresh condition"</span>);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_aee401aa2c7884888bbd26544bcd92881"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#aee401aa2c7884888bbd26544bcd92881">SVF::SaberCondAllocator::idToTermInstMap</a></div><div class="ttdeci">IndexToTermInstMap idToTermInstMap</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00297">SaberCondAllocator.h:297</a></div></div>
|
|
1352
1352
|
</div><!-- fragment -->
|
|
1353
1353
|
</div>
|
|
1354
1354
|
</div>
|
|
@@ -1375,8 +1375,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1375
1375
|
</table>
|
|
1376
1376
|
</div><div class="memdoc">
|
|
1377
1377
|
|
|
1378
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
1379
|
-
<div class="fragment"><div class="line"><a name="
|
|
1378
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00079">79</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
1379
|
+
<div class="fragment"><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a76fad4d58db94d7c572876ba6f1adf83">totalCondNum</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a76fad4d58db94d7c572876ba6f1adf83"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a76fad4d58db94d7c572876ba6f1adf83">SVF::SaberCondAllocator::totalCondNum</a></div><div class="ttdeci">static u32_t totalCondNum</div><div class="ttdoc">vector storing z3expression </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00300">SaberCondAllocator.h:300</a></div></div>
|
|
1380
1380
|
</div><!-- fragment -->
|
|
1381
1381
|
</div>
|
|
1382
1382
|
</div>
|
|
@@ -1405,8 +1405,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1405
1405
|
|
|
1406
1406
|
<p>Get current value for branch condition evaluation. </p>
|
|
1407
1407
|
|
|
1408
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
1409
|
-
<div class="fragment"><div class="line"><a name="
|
|
1408
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00184">184</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
1409
|
+
<div class="fragment"><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>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a4ac9b5ec6bfd7a7b468cb13a5e8803e0">curEvalSVFGNode</a>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a4ac9b5ec6bfd7a7b468cb13a5e8803e0"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a4ac9b5ec6bfd7a7b468cb13a5e8803e0">SVF::SaberCondAllocator::curEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * curEvalSVFGNode</div><div class="ttdoc">current llvm value to evaluate branch condition when computing guards </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00296">SaberCondAllocator.h:296</a></div></div>
|
|
1410
1410
|
</div><!-- fragment -->
|
|
1411
1411
|
</div>
|
|
1412
1412
|
</div>
|
|
@@ -1436,8 +1436,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1436
1436
|
|
|
1437
1437
|
<p>Get dominators. </p>
|
|
1438
1438
|
|
|
1439
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
1440
|
-
<div class="fragment"><div class="line"><a name="
|
|
1439
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00148">148</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
1440
|
+
<div class="fragment"><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ac9a70a1f69abe85197d95945b6c4ed97">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#afb3864bae4ac95c7d3b731634c1abdab">getDT</a>(fun);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ac9a70a1f69abe85197d95945b6c4ed97"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ac9a70a1f69abe85197d95945b6c4ed97">SVF::SaberCondAllocator::cfInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder cfInfoBuilder</div><div class="ttdoc">map a function to its loop info </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00293">SaberCondAllocator.h:293</a></div></div>
|
|
1441
1441
|
<div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_afb3864bae4ac95c7d3b731634c1abdab"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#afb3864bae4ac95c7d3b731634c1abdab">SVF::PTACFInfoBuilder::getDT</a></div><div class="ttdeci">DominatorTree * getDT(const Function *f)</div><div class="ttdoc">Get dominator tree of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00111">DataFlowUtil.cpp:111</a></div></div>
|
|
1442
1442
|
</div><!-- fragment -->
|
|
1443
1443
|
</div>
|
|
@@ -1481,7 +1481,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
1481
1481
|
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00157">157</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
|
|
1482
1482
|
<div class="fragment"><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SaberCondAllocator.html#a9aec07a64b97d546cfa0efe10f888b6a">getCurEvalSVFGNode</a>() && <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9aec07a64b97d546cfa0efe10f888b6a">getCurEvalSVFGNode</a>()->getValue())</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a4d334bb764e2f3feb5da892e0c21b8ed">evaluateBranchCond</a>(bb, succ);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a2b1c2e7764631d40a5b8d0ce2cc73442">getBranchCond</a>(bb, succ);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a2b1c2e7764631d40a5b8d0ce2cc73442"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a2b1c2e7764631d40a5b8d0ce2cc73442">SVF::SaberCondAllocator::getBranchCond</a></div><div class="ttdeci">Condition getBranchCond(const BasicBlock *bb, const BasicBlock *succ) const</div><div class="ttdoc">Get branch condition. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00142">SaberCondAllocator.cpp:142</a></div></div>
|
|
1483
1483
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a4d334bb764e2f3feb5da892e0c21b8ed"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a4d334bb764e2f3feb5da892e0c21b8ed">SVF::SaberCondAllocator::evaluateBranchCond</a></div><div class="ttdeci">Condition evaluateBranchCond(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Evaluate branch conditions. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00299">SaberCondAllocator.cpp:299</a></div></div>
|
|
1484
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9aec07a64b97d546cfa0efe10f888b6a"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9aec07a64b97d546cfa0efe10f888b6a">SVF::SaberCondAllocator::getCurEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * getCurEvalSVFGNode() const</div><div class="ttdoc">Get current value for branch condition evaluation. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
1484
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9aec07a64b97d546cfa0efe10f888b6a"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9aec07a64b97d546cfa0efe10f888b6a">SVF::SaberCondAllocator::getCurEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * getCurEvalSVFGNode() const</div><div class="ttdoc">Get current value for branch condition evaluation. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00184">SaberCondAllocator.h:184</a></div></div>
|
|
1485
1485
|
</div><!-- fragment -->
|
|
1486
1486
|
</div>
|
|
1487
1487
|
</div>
|
|
@@ -1508,8 +1508,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1508
1508
|
</table>
|
|
1509
1509
|
</div><div class="memdoc">
|
|
1510
1510
|
|
|
1511
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
1512
|
-
<div class="fragment"><div class="line"><a name="
|
|
1511
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00103">103</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
1512
|
+
<div class="fragment"><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#af541505af93ccebf57543793658cf495">Condition::getFalseCond</a>();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="ttc" id="classSVF_1_1Z3Expr_html_af541505af93ccebf57543793658cf495"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#af541505af93ccebf57543793658cf495">SVF::Z3Expr::getFalseCond</a></div><div class="ttdeci">static Z3Expr getFalseCond()</div><div class="ttdoc">Return the unique false condition. </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00288">Z3Expr.h:288</a></div></div>
|
|
1513
1513
|
</div><!-- fragment -->
|
|
1514
1514
|
</div>
|
|
1515
1515
|
</div>
|
|
@@ -1536,8 +1536,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1536
1536
|
</table>
|
|
1537
1537
|
</div><div class="memdoc">
|
|
1538
1538
|
|
|
1539
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
1540
|
-
<div class="fragment"><div class="line"><a name="
|
|
1539
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00205">205</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
1540
|
+
<div class="fragment"><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>();</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a37cfa2aa4e7b98ef9dc8179f581a2362"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVF::SVFIR::getPAG</a></div><div class="ttdeci">static SVFIR * getPAG(bool buildFromFile=false)</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00106">SVFIR.h:106</a></div></div>
|
|
1541
1541
|
<div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
|
|
1542
1542
|
</div><!-- fragment -->
|
|
1543
1543
|
</div>
|
|
@@ -1568,8 +1568,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1568
1568
|
|
|
1569
1569
|
<p>Get LoopInfo. </p>
|
|
1570
1570
|
|
|
1571
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
1572
|
-
<div class="fragment"><div class="line"><a name="
|
|
1571
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00158">158</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
1572
|
+
<div class="fragment"><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ac9a70a1f69abe85197d95945b6c4ed97">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">getLoopInfo</a>(f);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ac9a70a1f69abe85197d95945b6c4ed97"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ac9a70a1f69abe85197d95945b6c4ed97">SVF::SaberCondAllocator::cfInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder cfInfoBuilder</div><div class="ttdoc">map a function to its loop info </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00293">SaberCondAllocator.h:293</a></div></div>
|
|
1573
1573
|
<div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_a418e6009760a7c9a048d2ffd9cd29956"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">SVF::PTACFInfoBuilder::getLoopInfo</a></div><div class="ttdeci">LoopInfo * getLoopInfo(const Function *f)</div><div class="ttdoc">Get loop info of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00075">DataFlowUtil.cpp:75</a></div></div>
|
|
1574
1574
|
</div><!-- fragment -->
|
|
1575
1575
|
</div>
|
|
@@ -1600,7 +1600,9 @@ Static Private Attributes</h2></td></tr>
|
|
|
1600
1600
|
<p>Statistics. </p>
|
|
1601
1601
|
|
|
1602
1602
|
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00071">71</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
1603
|
-
<div class="fragment"><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">return</span> <span class="stringliteral">"
|
|
1603
|
+
<div class="fragment"><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> vmrss, vmsize;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a630ff9c47f58f9b8df7c8a2b3711477c">SVFUtil::getMemoryUsageKB</a>(&vmrss, &vmsize))</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> std::to_string(vmsize) + <span class="stringliteral">"KB"</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> <span class="stringliteral">"cannot read memory usage"</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
|
|
1604
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a630ff9c47f58f9b8df7c8a2b3711477c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a630ff9c47f58f9b8df7c8a2b3711477c">SVF::SVFUtil::getMemoryUsageKB</a></div><div class="ttdeci">bool getMemoryUsageKB(u32_t *vmrss_kb, u32_t *vmsize_kb)</div><div class="ttdoc">Get memory usage from system file. Return TRUE if succeed. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00177">SVFUtil.cpp:177</a></div></div>
|
|
1605
|
+
</div><!-- fragment -->
|
|
1604
1606
|
</div>
|
|
1605
1607
|
</div>
|
|
1606
1608
|
<a id="a79d103da4190c9e868c2446a4bc62f44"></a>
|
|
@@ -1648,11 +1650,11 @@ Static Private Attributes</h2></td></tr>
|
|
|
1648
1650
|
|
|
1649
1651
|
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00455">455</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
|
|
1650
1652
|
<div class="fragment"><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  assert(BB1 && BB2 && <span class="stringliteral">"expect nullptr BB here!"</span>);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> </div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> *dt = <a class="code" href="classSVF_1_1SaberCondAllocator.html#acf93725fa53eda82ea30b8efa1940016">getDT</a>(BB1->getParent());</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">if</span> (dt->dominates(BB1, BB2) && !dt->dominates(BB0, BB2))</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> cond = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">ComputeIntraVFGGuard</a>(BB1, BB2);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a620d53b9af8dd30523c478f4e9655817">condNeg</a>(cond);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  }</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> </div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab4eba98cf7306c89e40975c766d5bf65"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">SVF::SaberCondAllocator::Condition</a></div><div class="ttdeci">Z3Expr Condition</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00052">SaberCondAllocator.h:52</a></div></div>
|
|
1651
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_acf93725fa53eda82ea30b8efa1940016"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#acf93725fa53eda82ea30b8efa1940016">SVF::SaberCondAllocator::getDT</a></div><div class="ttdeci">DominatorTree * getDT(const Function *fun)</div><div class="ttdoc">Get dominators. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
1653
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_acf93725fa53eda82ea30b8efa1940016"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#acf93725fa53eda82ea30b8efa1940016">SVF::SaberCondAllocator::getDT</a></div><div class="ttdeci">DominatorTree * getDT(const Function *fun)</div><div class="ttdoc">Get dominators. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00148">SaberCondAllocator.h:148</a></div></div>
|
|
1652
1654
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a94ef09be5ef07f4d5222059b99619bc2"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">SVF::SaberCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks) </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00506">SaberCondAllocator.cpp:506</a></div></div>
|
|
1653
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a620d53b9af8dd30523c478f4e9655817"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a620d53b9af8dd30523c478f4e9655817">SVF::SaberCondAllocator::condNeg</a></div><div class="ttdeci">Condition condNeg(const Condition &cond)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
1655
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a620d53b9af8dd30523c478f4e9655817"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a620d53b9af8dd30523c478f4e9655817">SVF::SaberCondAllocator::condNeg</a></div><div class="ttdeci">Condition condNeg(const Condition &cond)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00095">SaberCondAllocator.h:95</a></div></div>
|
|
1654
1656
|
<div class="ttc" id="namespaceSVF_html_aecbb42b8e9d17fa0189c50dda9fd5fdd"><div class="ttname"><a href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">SVF::DominatorTree</a></div><div class="ttdeci">llvm::DominatorTree DominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00109">BasicTypes.h:109</a></div></div>
|
|
1655
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
1657
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00099">SaberCondAllocator.h:99</a></div></div>
|
|
1656
1658
|
</div><!-- fragment -->
|
|
1657
1659
|
</div>
|
|
1658
1660
|
</div>
|
|
@@ -1682,8 +1684,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1682
1684
|
|
|
1683
1685
|
<p>Get Postdominators. </p>
|
|
1684
1686
|
|
|
1685
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
1686
|
-
<div class="fragment"><div class="line"><a name="
|
|
1687
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00153">153</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
1688
|
+
<div class="fragment"><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ac9a70a1f69abe85197d95945b6c4ed97">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a00e3339dab62325354e8ecd8251da0f1">getPostDT</a>(fun);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ac9a70a1f69abe85197d95945b6c4ed97"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ac9a70a1f69abe85197d95945b6c4ed97">SVF::SaberCondAllocator::cfInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder cfInfoBuilder</div><div class="ttdoc">map a function to its loop info </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00293">SaberCondAllocator.h:293</a></div></div>
|
|
1687
1689
|
<div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_a00e3339dab62325354e8ecd8251da0f1"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#a00e3339dab62325354e8ecd8251da0f1">SVF::PTACFInfoBuilder::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *f)</div><div class="ttdoc">Get post dominator tree of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00092">DataFlowUtil.cpp:92</a></div></div>
|
|
1688
1690
|
</div><!-- fragment -->
|
|
1689
1691
|
</div>
|
|
@@ -1711,8 +1713,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1711
1713
|
</table>
|
|
1712
1714
|
</div><div class="memdoc">
|
|
1713
1715
|
|
|
1714
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
1715
|
-
<div class="fragment"><div class="line"><a name="
|
|
1716
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00099">99</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
1717
|
+
<div class="fragment"><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#aaa0c9122f34208235a2d830432665752">Condition::getTrueCond</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="ttc" id="classSVF_1_1Z3Expr_html_aaa0c9122f34208235a2d830432665752"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#aaa0c9122f34208235a2d830432665752">SVF::Z3Expr::getTrueCond</a></div><div class="ttdeci">static Z3Expr getTrueCond()</div><div class="ttdoc">Return the unique true condition. </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00281">Z3Expr.h:281</a></div></div>
|
|
1716
1718
|
</div><!-- fragment -->
|
|
1717
1719
|
</div>
|
|
1718
1720
|
</div>
|
|
@@ -1742,8 +1744,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1742
1744
|
|
|
1743
1745
|
<p>whether condition is satisfiable for all possible boolean guards </p>
|
|
1744
1746
|
|
|
1745
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
1746
|
-
<div class="fragment"><div class="line"><a name="
|
|
1747
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00197">197</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
1748
|
+
<div class="fragment"><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#aa9027574586fd4fbb12039f595ecec71">isEquivalentBranchCond</a>(condition, <a class="code" href="classSVF_1_1Z3Expr.html#aaa0c9122f34208235a2d830432665752">Condition::getTrueCond</a>());</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_aa9027574586fd4fbb12039f595ecec71"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#aa9027574586fd4fbb12039f595ecec71">SVF::SaberCondAllocator::isEquivalentBranchCond</a></div><div class="ttdeci">bool isEquivalentBranchCond(const Condition &lhs, const Condition &rhs) const</div><div class="ttdoc">Whether lhs and rhs are equivalent branch conditions. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00604">SaberCondAllocator.cpp:604</a></div></div>
|
|
1747
1749
|
<div class="ttc" id="classSVF_1_1Z3Expr_html_aaa0c9122f34208235a2d830432665752"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#aaa0c9122f34208235a2d830432665752">SVF::Z3Expr::getTrueCond</a></div><div class="ttdeci">static Z3Expr getTrueCond()</div><div class="ttdoc">Return the unique true condition. </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00281">Z3Expr.h:281</a></div></div>
|
|
1748
1750
|
</div><!-- fragment -->
|
|
1749
1751
|
</div>
|
|
@@ -1775,9 +1777,9 @@ Static Private Attributes</h2></td></tr>
|
|
|
1775
1777
|
|
|
1776
1778
|
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00432">432</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
|
|
1777
1779
|
<div class="fragment"><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun = bb->getParent();</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  FunToExitBBsMap::const_iterator it = <a class="code" href="classSVF_1_1SaberCondAllocator.html#ad1620cc7482aeb464b53cfce64e17cc3">funToExitBBsMap</a>.find(fun);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1SaberCondAllocator.html#ad1620cc7482aeb464b53cfce64e17cc3">funToExitBBsMap</a>.end())</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>  <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a> *pdt = <a class="code" href="classSVF_1_1SaberCondAllocator.html#ad19b88bca27044d0d9a6999c88afde97">getPostDT</a>(fun);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &bit: it->second)</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">if</span> (pdt->dominates(bit, bb))</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  }</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  }</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> }</div><div class="ttc" id="namespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00110">BasicTypes.h:110</a></div></div>
|
|
1778
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ad1620cc7482aeb464b53cfce64e17cc3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad1620cc7482aeb464b53cfce64e17cc3">SVF::SaberCondAllocator::funToExitBBsMap</a></div><div class="ttdeci">FunToExitBBsMap funToExitBBsMap</div><div class="ttdoc">map a function to all its basic blocks calling program exit </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
1780
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ad1620cc7482aeb464b53cfce64e17cc3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad1620cc7482aeb464b53cfce64e17cc3">SVF::SaberCondAllocator::funToExitBBsMap</a></div><div class="ttdeci">FunToExitBBsMap funToExitBBsMap</div><div class="ttdoc">map a function to all its basic blocks calling program exit </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00294">SaberCondAllocator.h:294</a></div></div>
|
|
1779
1781
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
|
|
1780
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ad19b88bca27044d0d9a6999c88afde97"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad19b88bca27044d0d9a6999c88afde97">SVF::SaberCondAllocator::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *fun)</div><div class="ttdoc">Get Postdominators. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
1782
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ad19b88bca27044d0d9a6999c88afde97"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad19b88bca27044d0d9a6999c88afde97">SVF::SaberCondAllocator::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *fun)</div><div class="ttdoc">Get Postdominators. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00153">SaberCondAllocator.h:153</a></div></div>
|
|
1781
1783
|
</div><!-- fragment -->
|
|
1782
1784
|
</div>
|
|
1783
1785
|
</div>
|
|
@@ -1900,8 +1902,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
1900
1902
|
</table>
|
|
1901
1903
|
</div><div class="memdoc">
|
|
1902
1904
|
|
|
1903
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
1904
|
-
<div class="fragment"><div class="line"><a name="
|
|
1905
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00142">142</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
1906
|
+
<div class="fragment"><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a4267ed81d5100d49581a4216f46e660c">negConds</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">test</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a4267ed81d5100d49581a4216f46e660c"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a4267ed81d5100d49581a4216f46e660c">SVF::SaberCondAllocator::negConds</a></div><div class="ttdeci">NodeBS negConds</div><div class="ttdoc">key: z3 expression id, value: instruction </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00298">SaberCondAllocator.h:298</a></div></div>
|
|
1905
1907
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a112f2ede1240c95f9fe810f2882fab80"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">SVF::SparseBitVector::test</a></div><div class="ttdeci">bool test(unsigned Idx) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00706">SparseBitVector.h:706</a></div></div>
|
|
1906
1908
|
</div><!-- fragment -->
|
|
1907
1909
|
</div>
|
|
@@ -1962,7 +1964,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
1962
1964
|
|
|
1963
1965
|
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00379">379</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
|
|
1964
1966
|
<div class="fragment"><div class="line"><a name="l00380"></a><span class="lineno"> 380</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *op0 = cmp->getOperand(0);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *op1 = cmp->getOperand(1);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">if</span> (SVFUtil::isa<ConstantPointerNull>(op1))</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Value *></a> inDirVal;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &it: <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9aec07a64b97d546cfa0efe10f888b6a">getCurEvalSVFGNode</a>()->getOutEdges())</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">if</span> (it->isIndirectVFGEdge())</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  inDirVal.insert(it->getDstNode()->getValue());</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  }</div><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">return</span> inDirVal.find(op0) != inDirVal.end();</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>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantPointerNull>(op0))</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Value *></a> inDirVal;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &it: <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9aec07a64b97d546cfa0efe10f888b6a">getCurEvalSVFGNode</a>()->getOutEdges())</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>  <span class="keywordflow">if</span> (it->isIndirectVFGEdge())</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  inDirVal.insert(it->getDstNode()->getValue());</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">return</span> inDirVal.find(op1) != inDirVal.end();</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  }</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> </div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> }</div><div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00105">SVFBasicTypes.h:105</a></div></div>
|
|
1965
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9aec07a64b97d546cfa0efe10f888b6a"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9aec07a64b97d546cfa0efe10f888b6a">SVF::SaberCondAllocator::getCurEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * getCurEvalSVFGNode() const</div><div class="ttdoc">Get current value for branch condition evaluation. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
1967
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9aec07a64b97d546cfa0efe10f888b6a"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9aec07a64b97d546cfa0efe10f888b6a">SVF::SaberCondAllocator::getCurEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * getCurEvalSVFGNode() const</div><div class="ttdoc">Get current value for branch condition evaluation. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00184">SaberCondAllocator.h:184</a></div></div>
|
|
1966
1968
|
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
|
|
1967
1969
|
</div><!-- fragment -->
|
|
1968
1970
|
</div>
|
|
@@ -2052,14 +2054,14 @@ Static Private Attributes</h2></td></tr>
|
|
|
2052
2054
|
<p>Allocate a new condition. </p>
|
|
2053
2055
|
|
|
2054
2056
|
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00591">591</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
|
|
2055
|
-
<div class="fragment"><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> {</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> condCountIdx = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a76fad4d58db94d7c572876ba6f1adf83">totalCondNum</a>++;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> expr = <a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Condition::getContext</a>().bool_const((<span class="stringliteral">"c"</span> + std::to_string(condCountIdx)).c_str());</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> negCond = <a class="code" href="classSVF_1_1Z3Expr.html#a9a545e516e6dee37310ad02481a84356">Condition::NEG</a>(expr);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ae7ba47d494686df48a2a7e86b1f386b4">setCondInst</a>(expr, inst);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#a22b71f885c07fff3c35006337ec41ee7">setNegCondInst</a>(negCond, inst);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#afd6cf17070e3629ced1ac36b8e2b0bbb">conditionVec</a>.push_back(expr);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#afd6cf17070e3629ced1ac36b8e2b0bbb">conditionVec</a>.push_back(negCond);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <span class="keywordflow">return</span> expr;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span> }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a76fad4d58db94d7c572876ba6f1adf83"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a76fad4d58db94d7c572876ba6f1adf83">SVF::SaberCondAllocator::totalCondNum</a></div><div class="ttdeci">static u32_t totalCondNum</div><div class="ttdoc">vector storing z3expression </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
2057
|
+
<div class="fragment"><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> {</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> condCountIdx = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a76fad4d58db94d7c572876ba6f1adf83">totalCondNum</a>++;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> expr = <a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Condition::getContext</a>().bool_const((<span class="stringliteral">"c"</span> + std::to_string(condCountIdx)).c_str());</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> negCond = <a class="code" href="classSVF_1_1Z3Expr.html#a9a545e516e6dee37310ad02481a84356">Condition::NEG</a>(expr);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ae7ba47d494686df48a2a7e86b1f386b4">setCondInst</a>(expr, inst);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#a22b71f885c07fff3c35006337ec41ee7">setNegCondInst</a>(negCond, inst);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#afd6cf17070e3629ced1ac36b8e2b0bbb">conditionVec</a>.push_back(expr);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#afd6cf17070e3629ced1ac36b8e2b0bbb">conditionVec</a>.push_back(negCond);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <span class="keywordflow">return</span> expr;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span> }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a76fad4d58db94d7c572876ba6f1adf83"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a76fad4d58db94d7c572876ba6f1adf83">SVF::SaberCondAllocator::totalCondNum</a></div><div class="ttdeci">static u32_t totalCondNum</div><div class="ttdoc">vector storing z3expression </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00300">SaberCondAllocator.h:300</a></div></div>
|
|
2056
2058
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab4eba98cf7306c89e40975c766d5bf65"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">SVF::SaberCondAllocator::Condition</a></div><div class="ttdeci">Z3Expr Condition</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00052">SaberCondAllocator.h:52</a></div></div>
|
|
2057
2059
|
<div class="ttc" id="classSVF_1_1Z3Expr_html_a9a545e516e6dee37310ad02481a84356"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a9a545e516e6dee37310ad02481a84356">SVF::Z3Expr::NEG</a></div><div class="ttdeci">static Z3Expr NEG(const Z3Expr &z3Expr)</div><div class="ttdoc">compute NEG </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00294">Z3Expr.h:294</a></div></div>
|
|
2058
2060
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
|
|
2059
2061
|
<div class="ttc" id="classSVF_1_1Z3Expr_html_acfdff582a0188678c10939165a40df30"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">SVF::Z3Expr::getContext</a></div><div class="ttdeci">static z3::context & getContext()</div><div class="ttdoc">Get z3 context, singleton design here to make sure we only have one context. </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8cpp_source.html#l00066">Z3Expr.cpp:66</a></div></div>
|
|
2060
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_afd6cf17070e3629ced1ac36b8e2b0bbb"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#afd6cf17070e3629ced1ac36b8e2b0bbb">SVF::SaberCondAllocator::conditionVec</a></div><div class="ttdeci">std::vector< Condition > conditionVec</div><div class="ttdoc">bit vector for distinguish neg </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
2061
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ae7ba47d494686df48a2a7e86b1f386b4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae7ba47d494686df48a2a7e86b1f386b4">SVF::SaberCondAllocator::setCondInst</a></div><div class="ttdeci">void setCondInst(const Condition &condition, const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
2062
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a22b71f885c07fff3c35006337ec41ee7"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a22b71f885c07fff3c35006337ec41ee7">SVF::SaberCondAllocator::setNegCondInst</a></div><div class="ttdeci">void setNegCondInst(const Condition &condition, const Instruction *inst)</div><div class="ttdoc">mark neg Z3 expression </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
2062
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_afd6cf17070e3629ced1ac36b8e2b0bbb"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#afd6cf17070e3629ced1ac36b8e2b0bbb">SVF::SaberCondAllocator::conditionVec</a></div><div class="ttdeci">std::vector< Condition > conditionVec</div><div class="ttdoc">bit vector for distinguish neg </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00299">SaberCondAllocator.h:299</a></div></div>
|
|
2063
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ae7ba47d494686df48a2a7e86b1f386b4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae7ba47d494686df48a2a7e86b1f386b4">SVF::SaberCondAllocator::setCondInst</a></div><div class="ttdeci">void setCondInst(const Condition &condition, const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00135">SaberCondAllocator.h:135</a></div></div>
|
|
2064
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a22b71f885c07fff3c35006337ec41ee7"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a22b71f885c07fff3c35006337ec41ee7">SVF::SaberCondAllocator::setNegCondInst</a></div><div class="ttdeci">void setNegCondInst(const Condition &condition, const Instruction *inst)</div><div class="ttdoc">mark neg Z3 expression </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00235">SaberCondAllocator.h:235</a></div></div>
|
|
2063
2065
|
</div><!-- fragment -->
|
|
2064
2066
|
</div>
|
|
2065
2067
|
</div>
|
|
@@ -2085,9 +2087,9 @@ Static Private Attributes</h2></td></tr>
|
|
|
2085
2087
|
<div class="fragment"><div class="line"><a name="l00565"></a><span class="lineno"> 565</span> {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> </div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"print path condition\n"</span>;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> </div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &bbCond: <a class="code" href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">bbConds</a>)</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb = bbCond.first;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &cit: bbCond.second)</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  {</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ: successors(bb))</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordflow">if</span> (i == cit.first)</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  {</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a> cond = cit.second;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << bb->getName().str() << <span class="stringliteral">"-->"</span> << succ->getName().str() << <span class="stringliteral">":"</span>;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <a class="code" href="classSVF_1_1SaberCondAllocator.html#a100c1962eac6d7af420defc827a025ed">dumpCond</a>(cond) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  }</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  i++;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  }</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> }</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
2086
2088
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab4eba98cf7306c89e40975c766d5bf65"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">SVF::SaberCondAllocator::Condition</a></div><div class="ttdeci">Z3Expr Condition</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00052">SaberCondAllocator.h:52</a></div></div>
|
|
2087
2089
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
|
|
2088
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a5c129ebf5ae55eb3af8bd670c921a646"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">SVF::SaberCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">a counter for fresh condition </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
2090
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a5c129ebf5ae55eb3af8bd670c921a646"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">SVF::SaberCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">a counter for fresh condition </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00303">SaberCondAllocator.h:303</a></div></div>
|
|
2089
2091
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::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>
|
|
2090
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a100c1962eac6d7af420defc827a025ed"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a100c1962eac6d7af420defc827a025ed">SVF::SaberCondAllocator::dumpCond</a></div><div class="ttdeci">std::string dumpCond(const Condition &cond) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
2092
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a100c1962eac6d7af420defc827a025ed"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a100c1962eac6d7af420defc827a025ed">SVF::SaberCondAllocator::dumpCond</a></div><div class="ttdeci">std::string dumpCond(const Condition &cond) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00115">SaberCondAllocator.h:115</a></div></div>
|
|
2091
2093
|
</div><!-- fragment -->
|
|
2092
2094
|
</div>
|
|
2093
2095
|
</div>
|
|
@@ -2140,7 +2142,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
2140
2142
|
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8cpp_source.html#l00168">168</a> of file <a class="el" href="SaberCondAllocator_8cpp_source.html">SaberCondAllocator.cpp</a>.</p>
|
|
2141
2143
|
<div class="fragment"><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  assert(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6d9205380948e1bd00708581a64301e1">getBBSuccessorNum</a>(bb) > 1 && <span class="stringliteral">"not more than one successor??"</span>);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a5d911cede2f514e87b030e2a93919515">getBBSuccessorPos</a>(bb, succ);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#aa330cc6a1a3c38601ebeb325ffd87221">CondPosMap</a> &condPosMap = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">bbConds</a>[bb];</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">//assert(condPosMap.find(pos) == condPosMap.end() && "this branch has already been set ");</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  condPosMap[pos] = cond;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_aa330cc6a1a3c38601ebeb325ffd87221"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#aa330cc6a1a3c38601ebeb325ffd87221">SVF::SaberCondAllocator::CondPosMap</a></div><div class="ttdeci">Map< u32_t, Condition > CondPosMap</div><div class="ttdoc">id to instruction map for z3 </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00054">SaberCondAllocator.h:54</a></div></div>
|
|
2142
2144
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
|
|
2143
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a5c129ebf5ae55eb3af8bd670c921a646"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">SVF::SaberCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">a counter for fresh condition </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
2145
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a5c129ebf5ae55eb3af8bd670c921a646"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">SVF::SaberCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">a counter for fresh condition </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00303">SaberCondAllocator.h:303</a></div></div>
|
|
2144
2146
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a6d9205380948e1bd00708581a64301e1"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6d9205380948e1bd00708581a64301e1">SVF::LLVMUtil::getBBSuccessorNum</a></div><div class="ttdeci">u32_t getBBSuccessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB&#39;s successors. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00389">LLVMUtil.cpp:389</a></div></div>
|
|
2145
2147
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a5d911cede2f514e87b030e2a93919515"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a5d911cede2f514e87b030e2a93919515">SVF::LLVMUtil::getBBSuccessorPos</a></div><div class="ttdeci">u32_t getBBSuccessorPos(const BasicBlock *BB, const BasicBlock *Succ)</div><div class="ttdoc">Get basic block successor position. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00357">LLVMUtil.cpp:357</a></div></div>
|
|
2146
2148
|
</div><!-- fragment -->
|
|
@@ -2182,8 +2184,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
2182
2184
|
|
|
2183
2185
|
<p>Get/Set control-flow conditions. </p>
|
|
2184
2186
|
|
|
2185
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
2186
|
-
<div class="fragment"><div class="line"><a name="
|
|
2187
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00212">212</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
2188
|
+
<div class="fragment"><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  BBToCondMap::iterator it = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a6d29487d00d66dadae7b4b79f9bf50e9">bbToCondMap</a>.find(bb);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="comment">// until a fixed-point is reached (condition is not changed)</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1SaberCondAllocator.html#a6d29487d00d66dadae7b4b79f9bf50e9">bbToCondMap</a>.end() && <a class="code" href="classSVF_1_1SaberCondAllocator.html#aa9027574586fd4fbb12039f595ecec71">isEquivalentBranchCond</a>(it->second, cond))</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#a6d29487d00d66dadae7b4b79f9bf50e9">bbToCondMap</a>[bb] = cond;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a6d29487d00d66dadae7b4b79f9bf50e9"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a6d29487d00d66dadae7b4b79f9bf50e9">SVF::SaberCondAllocator::bbToCondMap</a></div><div class="ttdeci">BBToCondMap bbToCondMap</div><div class="ttdoc">map a basic block to its path condition starting from root </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00295">SaberCondAllocator.h:295</a></div></div>
|
|
2187
2189
|
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_aa9027574586fd4fbb12039f595ecec71"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#aa9027574586fd4fbb12039f595ecec71">SVF::SaberCondAllocator::isEquivalentBranchCond</a></div><div class="ttdeci">bool isEquivalentBranchCond(const Condition &lhs, const Condition &rhs) const</div><div class="ttdoc">Whether lhs and rhs are equivalent branch conditions. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00604">SaberCondAllocator.cpp:604</a></div></div>
|
|
2188
2190
|
</div><!-- fragment -->
|
|
2189
2191
|
</div>
|
|
@@ -2222,8 +2224,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
2222
2224
|
</table>
|
|
2223
2225
|
</div><div class="memdoc">
|
|
2224
2226
|
|
|
2225
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
2226
|
-
<div class="fragment"><div class="line"><a name="
|
|
2227
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00135">135</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
2228
|
+
<div class="fragment"><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  assert(<a class="code" href="classSVF_1_1SaberCondAllocator.html#aee401aa2c7884888bbd26544bcd92881">idToTermInstMap</a>.find(condition.id()) == <a class="code" href="classSVF_1_1SaberCondAllocator.html#aee401aa2c7884888bbd26544bcd92881">idToTermInstMap</a>.end() && <span class="stringliteral">"this should be a fresh condition"</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#aee401aa2c7884888bbd26544bcd92881">idToTermInstMap</a>[condition.id()] = inst;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_aee401aa2c7884888bbd26544bcd92881"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#aee401aa2c7884888bbd26544bcd92881">SVF::SaberCondAllocator::idToTermInstMap</a></div><div class="ttdeci">IndexToTermInstMap idToTermInstMap</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00297">SaberCondAllocator.h:297</a></div></div>
|
|
2227
2229
|
</div><!-- fragment -->
|
|
2228
2230
|
</div>
|
|
2229
2231
|
</div>
|
|
@@ -2253,8 +2255,8 @@ Static Private Attributes</h2></td></tr>
|
|
|
2253
2255
|
|
|
2254
2256
|
<p>Set current value for branch condition evaluation. </p>
|
|
2255
2257
|
|
|
2256
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
2257
|
-
<div class="fragment"><div class="line"><a name="
|
|
2258
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00179">179</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
2259
|
+
<div class="fragment"><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#a4ac9b5ec6bfd7a7b468cb13a5e8803e0">curEvalSVFGNode</a> = node;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a4ac9b5ec6bfd7a7b468cb13a5e8803e0"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a4ac9b5ec6bfd7a7b468cb13a5e8803e0">SVF::SaberCondAllocator::curEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * curEvalSVFGNode</div><div class="ttdoc">current llvm value to evaluate branch condition when computing guards </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00296">SaberCondAllocator.h:296</a></div></div>
|
|
2258
2260
|
</div><!-- fragment -->
|
|
2259
2261
|
</div>
|
|
2260
2262
|
</div>
|
|
@@ -2294,9 +2296,9 @@ Static Private Attributes</h2></td></tr>
|
|
|
2294
2296
|
|
|
2295
2297
|
<p>mark neg Z3 expression </p>
|
|
2296
2298
|
|
|
2297
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
2298
|
-
<div class="fragment"><div class="line"><a name="
|
|
2299
|
-
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ae7ba47d494686df48a2a7e86b1f386b4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae7ba47d494686df48a2a7e86b1f386b4">SVF::SaberCondAllocator::setCondInst</a></div><div class="ttdeci">void setCondInst(const Condition &condition, const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
2299
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00235">235</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
2300
|
+
<div class="fragment"><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#ae7ba47d494686df48a2a7e86b1f386b4">setCondInst</a>(condition, inst);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="classSVF_1_1SaberCondAllocator.html#a4267ed81d5100d49581a4216f46e660c">negConds</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(condition.id());</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a4267ed81d5100d49581a4216f46e660c"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a4267ed81d5100d49581a4216f46e660c">SVF::SaberCondAllocator::negConds</a></div><div class="ttdeci">NodeBS negConds</div><div class="ttdoc">key: z3 expression id, value: instruction </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00298">SaberCondAllocator.h:298</a></div></div>
|
|
2301
|
+
<div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ae7ba47d494686df48a2a7e86b1f386b4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae7ba47d494686df48a2a7e86b1f386b4">SVF::SaberCondAllocator::setCondInst</a></div><div class="ttdeci">void setCondInst(const Condition &condition, const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00135">SaberCondAllocator.h:135</a></div></div>
|
|
2300
2302
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00745">SparseBitVector.h:745</a></div></div>
|
|
2301
2303
|
</div><!-- fragment -->
|
|
2302
2304
|
</div>
|
|
@@ -2325,7 +2327,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
2325
2327
|
<p>a counter for fresh condition </p>
|
|
2326
2328
|
<p>map basic block to its successors/predecessors branch conditions </p>
|
|
2327
2329
|
|
|
2328
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
2330
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00303">303</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
2329
2331
|
|
|
2330
2332
|
</div>
|
|
2331
2333
|
</div>
|
|
@@ -2351,7 +2353,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
2351
2353
|
|
|
2352
2354
|
<p>map a basic block to its path condition starting from root </p>
|
|
2353
2355
|
|
|
2354
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
2356
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00295">295</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
2355
2357
|
|
|
2356
2358
|
</div>
|
|
2357
2359
|
</div>
|
|
@@ -2377,7 +2379,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
2377
2379
|
|
|
2378
2380
|
<p>map a function to its loop info </p>
|
|
2379
2381
|
|
|
2380
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
2382
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00293">293</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
2381
2383
|
|
|
2382
2384
|
</div>
|
|
2383
2385
|
</div>
|
|
@@ -2403,7 +2405,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
2403
2405
|
|
|
2404
2406
|
<p>bit vector for distinguish neg </p>
|
|
2405
2407
|
|
|
2406
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
2408
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00299">299</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
2407
2409
|
|
|
2408
2410
|
</div>
|
|
2409
2411
|
</div>
|
|
@@ -2429,7 +2431,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
2429
2431
|
|
|
2430
2432
|
<p>current llvm value to evaluate branch condition when computing guards </p>
|
|
2431
2433
|
|
|
2432
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
2434
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00296">296</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
2433
2435
|
|
|
2434
2436
|
</div>
|
|
2435
2437
|
</div>
|
|
@@ -2455,7 +2457,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
2455
2457
|
|
|
2456
2458
|
<p>map a function to all its basic blocks calling program exit </p>
|
|
2457
2459
|
|
|
2458
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
2460
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00294">294</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
2459
2461
|
|
|
2460
2462
|
</div>
|
|
2461
2463
|
</div>
|
|
@@ -2479,7 +2481,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
2479
2481
|
</table>
|
|
2480
2482
|
</div><div class="memdoc">
|
|
2481
2483
|
|
|
2482
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
2484
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00297">297</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
2483
2485
|
|
|
2484
2486
|
</div>
|
|
2485
2487
|
</div>
|
|
@@ -2505,7 +2507,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
2505
2507
|
|
|
2506
2508
|
<p>key: z3 expression id, value: instruction </p>
|
|
2507
2509
|
|
|
2508
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
2510
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00298">298</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
2509
2511
|
|
|
2510
2512
|
</div>
|
|
2511
2513
|
</div>
|
|
@@ -2531,7 +2533,7 @@ Static Private Attributes</h2></td></tr>
|
|
|
2531
2533
|
|
|
2532
2534
|
<p>vector storing z3expression </p>
|
|
2533
2535
|
|
|
2534
|
-
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#
|
|
2536
|
+
<p class="definition">Definition at line <a class="el" href="SaberCondAllocator_8h_source.html#l00300">300</a> of file <a class="el" href="SaberCondAllocator_8h_source.html">SaberCondAllocator.h</a>.</p>
|
|
2535
2537
|
|
|
2536
2538
|
</div>
|
|
2537
2539
|
</div>
|