svf-tools 1.0.427 → 1.0.428
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/PathCondAllocator_8cpp_source.html +26 -20
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +29 -25
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +5 -4
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +8 -6
- package/SVF-doxygen/html/html/SaberAnnotator_8h.html +1 -1
- package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +6 -7
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator-members.html +26 -25
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +144 -105
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +11 -8
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +27 -23
- package/SVF-doxygen/html/html/functions_a.html +3 -3
- package/SVF-doxygen/html/html/functions_e.html +2 -2
- package/SVF-doxygen/html/html/functions_func.html +3 -3
- package/SVF-doxygen/html/html/functions_func_e.html +2 -2
- package/SVF-doxygen/html/html/functions_func_g.html +8 -7
- package/SVF-doxygen/html/html/functions_g.html +15 -14
- package/SVF-doxygen/html/html/search/all_1.js +3 -3
- package/SVF-doxygen/html/html/search/all_5.js +2 -2
- package/SVF-doxygen/html/html/search/all_7.js +1 -1
- package/SVF-doxygen/html/html/search/functions_0.js +3 -3
- package/SVF-doxygen/html/html/search/functions_4.js +2 -2
- package/SVF-doxygen/html/html/search/functions_6.js +1 -1
- package/include/SABER/PathCondAllocator.h +8 -2
- package/include/SABER/SaberAnnotator.h +4 -4
- package/lib/SABER/PathCondAllocator.cpp +31 -26
- package/lib/SABER/ProgSlice.cpp +7 -4
- package/lib/SABER/SaberAnnotator.cpp +8 -8
- package/package.json +1 -1
|
@@ -66,29 +66,31 @@ $(function() {
|
|
|
66
66
|
<div class="title">PathCondAllocator.h</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="PathCondAllocator_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- PathCondAllocator.h -- Path condition manipulation---------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * PathAllocator.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: Apr 3, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifndef PATHALLOCATOR_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define PATHALLOCATOR_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="SVFModule_8h.html">Util/SVFModule.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="DataFlowUtil_8h.html">SVF-FE/DataFlowUtil.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="SVF-FE_2BasicTypes_8h.html">SVF-FE/BasicTypes.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="Conditions_8h.html">Util/Conditions.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "<a class="code" href="WorkList_8h.html">Util/WorkList.h</a>"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "<a class="code" href="SVFG_8h.html">Graphs/SVFG.h</a>"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html"> 47</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1PathCondAllocator.html">PathCondAllocator</a></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3"> 52</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>; </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a0d685cfd0f0652a0ff839969f763371b"> 54</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<u32_t,Condition*></a> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d685cfd0f0652a0ff839969f763371b">CondPosMap</a>; </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ab95a992cea9ccc23e31d4d48fce01055"> 55</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const BasicBlock*, CondPosMap ></a> <a class="code" href="classSVF_1_1PathCondAllocator.html#ab95a992cea9ccc23e31d4d48fce01055">BBCondMap</a>; <span class="comment">// map bb to a Condition</span></div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#aef4a1396ee439e0d6cd89695a81a7365"> 56</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const BasicBlock*></a> <a class="code" href="classSVF_1_1PathCondAllocator.html#aef4a1396ee439e0d6cd89695a81a7365">BasicBlockSet</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a0753fb35cb8fd37cfe8fd795d01e5275"> 57</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const Function*, BasicBlockSet></a> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0753fb35cb8fd37cfe8fd795d01e5275">FunToExitBBsMap</a>; </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ae3edcb70d9f0d65089f39147a635526d"> 58</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const BasicBlock*, Condition*></a> <a class="code" href="classSVF_1_1PathCondAllocator.html#ae3edcb70d9f0d65089f39147a635526d">BBToCondMap</a>; </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ac578894f959845164e1343384d60def1"> 59</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const BasicBlock*></a> <a class="code" href="classSVF_1_1PathCondAllocator.html#ac578894f959845164e1343384d60def1">CFWorkList</a>; </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#a805120d975a4e0981b7045b719fe9de3">PathCondAllocator</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ab9215223c463ef43f18f5151d6cd0fe3"> 66</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ab9215223c463ef43f18f5151d6cd0fe3">~PathCondAllocator</a>()</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ad6d58127299d87ae3c231065bb411557"> 71</a></span>  <span class="keyword">inline</span> std::string <a class="code" href="classSVF_1_1PathCondAllocator.html#ad6d58127299d87ae3c231065bb411557">getMemUsage</a>()</div><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> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a9d1f2e6ef92ee120c7f26d98b1389b04">getMemUsage</a>();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ae8f2447d33e2c638c1375f97ff3c3b40"> 75</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1PathCondAllocator.html#ae8f2447d33e2c638c1375f97ff3c3b40">getCondNum</a>()</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a03d9a0d209505631f6d9e500d9c6bde3">getCondNumber</a>();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61"> 83</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(Condition* lhs, Condition* rhs)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#aedda2ed496d0009d92d44a82af2ce8ae">AND</a>(lhs,rhs);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803"> 87</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">condOr</a>(Condition* lhs, Condition* rhs)</div><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_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#aa6dcd9cb78deef05b6c4d4e9b6b0a16b">OR</a>(lhs,rhs);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ac1ed60a8f59a55811c97c83def3bb739"> 91</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#ac1ed60a8f59a55811c97c83def3bb739">condNeg</a>(Condition* cond)</div><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_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#aecb97f6eb6ba2943b2eaa7a8212a9ba6">NEG</a>(cond);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a"> 95</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keyword"> </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_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2"> 99</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keyword"> </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_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a61095843f86d1c5c14750a635fb3aacb"> 104</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1PathCondAllocator.html#a61095843f86d1c5c14750a635fb3aacb">exactCondElem</a>(Condition* cond)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> elems;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a66ed79e36f8c09ee3ae58fb9b4a6f3e3">extractSubConds</a>(cond,elems);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> elems;</div><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> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#aae773a674331bb80cc589835e0b16e4e"> 111</a></span>  <span class="keyword">inline</span> std::string <a class="code" href="classSVF_1_1PathCondAllocator.html#aae773a674331bb80cc589835e0b16e4e">dumpCond</a>(Condition* cond)<span class="keyword"> const</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a19c63783d5d20f363be3641941263a78">dumpStr</a>(cond);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ad1fdfabb37f6bb5da6724b95404739e2"> 116</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#ad1fdfabb37f6bb5da6724b95404739e2">getCond</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i)<span class="keyword"> const</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#ad0273f830c9a6791aea55bfbdebf1138">getCond</a>(i);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a3cd08242b82129e6074b2f30a19b5c17"> 121</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a3cd08242b82129e6074b2f30a19b5c17">newCond</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#abd330e858463fed92fb3df6e8529f790">createFreshBranchCond</a>(inst);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a3fce010083b85a4421eed4c17eb54640">allocate</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">//{@</span></div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#adf65b74b89fca76c0cf5ea5dbd6dc4ca"> 132</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* <a class="code" href="classSVF_1_1PathCondAllocator.html#adf65b74b89fca76c0cf5ea5dbd6dc4ca">getCondInst</a>(<span class="keyword">const</span> Condition* cond)<span class="keyword"> const</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a4fac6a918f1f6d09fe1a4ceac7c19428">getCondInst</a>(cond);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ab85a1ab3580958361ea5ec29efc75874"> 136</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ab85a1ab3580958361ea5ec29efc75874">setCondInst</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* cond, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst){</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a1fbf7dd446309e13671d838c91da26bf">setCondInst</a>(cond, inst);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a7182283f15c556e9d0e9fdc6d62efeef"> 141</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a7182283f15c556e9d0e9fdc6d62efeef">isNegCond</a>(<span class="keyword">const</span> Condition *condition) {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a1007afa25f9a95c5d12c58852ef74686">isNegCond</a>(condition);</div><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> </div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a496a23bc37dfdea32c536e9ebe9a4b88"> 146</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* <a class="code" href="classSVF_1_1PathCondAllocator.html#a496a23bc37dfdea32c536e9ebe9a4b88">getDT</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#afb3864bae4ac95c7d3b731634c1abdab">getDT</a>(fun);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e"> 151</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>* <a class="code" href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e">getPostDT</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a00e3339dab62325354e8ecd8251da0f1">getPostDT</a>(fun);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a10ddc3b02b2baad2edd72fe429113b0f"> 156</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a>* <a class="code" href="classSVF_1_1PathCondAllocator.html#a10ddc3b02b2baad2edd72fe429113b0f">getLoopInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* f)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">getLoopInfo</a>(f);</div><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> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">virtual</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">ComputeIntraVFGGuard</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* src, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* dst);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keyword">virtual</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a9c3361e3f37d640b177c3955f3c3667f">ComputeInterCallVFGGuard</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* src, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* dst, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* callBB);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keyword">virtual</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a5015e36d00ac59ef2b832019b8f922f5">ComputeInterRetVFGGuard</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* src, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* dst, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* retBB);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keyword">virtual</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#abef2785eb426d5e1d6f273300c691db6">getPHIComplementCond</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB2, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB0);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a3462dbe3d0f8df08e3b6a6c6ef0b065c"> 172</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a3462dbe3d0f8df08e3b6a6c6ef0b065c">clearCFCond</a>()</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.clear();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a68f93a9271efcbb4728066a8d5639628"> 177</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a68f93a9271efcbb4728066a8d5639628">setCurEvalSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</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>  <a class="code" href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">curEvalSVFGNode</a> = node;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a0fa615ec0ccc48933b84d09b8e359da7"> 182</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* <a class="code" href="classSVF_1_1PathCondAllocator.html#a0fa615ec0ccc48933b84d09b8e359da7">getCurEvalSVFGNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">curEvalSVFGNode</a>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a2932b15ef74e46b676075ba1b2e82111">printPathCond</a>();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#aaed1bbfcac68a5e48d2850ef395e7da7"> 192</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aaed1bbfcac68a5e48d2850ef395e7da7">isSatisfiable</a>(Condition* condition){</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a5ef85ea09500adc006a25c1eb3426831">isSatisfiable</a>(condition);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a51c55809f28eee5b8432ab4508f9a887"> 197</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a51c55809f28eee5b8432ab4508f9a887">isAllPathReachable</a>(Condition* condition){</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a6151817a6f671fa1e7814e74f7ce2e51">isAllPathReachable</a>(condition);</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> </div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ad92e8909172d960de8a25f6ff0272261"> 201</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ad92e8909172d960de8a25f6ff0272261">isEquivalentBranchCond</a>(<span class="keyword">const</span> Condition *lhs, <span class="keyword">const</span> Condition *rhs)<span class="keyword"> const</span>{</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#aa20839631502b975590754e146242175">isEquivalentBranchCond</a>(lhs, rhs);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#af854f880e76738a13d6cb937a257828f">allocateForBB</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>& bb);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aaec323fc8a3f83da4596ed7d447ab6f1">setBranchCond</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ, Condition* cond);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a4d00c3306b92e59568b54a6a72afdb74">getBranchCond</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> * bb, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ) <span class="keyword">const</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a6d2c5b05f4966522c9310fd3c086adea">getEvalBrCond</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> * bb, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a283788ca2886b03803829434150d11fe">evaluateBranchCond</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> * bb, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ) ;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a623e6ec670e5f6aeedee26b146ad5a0d">evaluateLoopExitBranch</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> * bb, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#ab31b523d760d634811ca4d1de7fc4eb2">evaluateTestNullLikeExpr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a>* brInst, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a9dbca0e012336e20064693f508bc54b8">evaluateProgExit</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a>* brInst, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a391cb347cf98f33c261e59975900048e">collectBBCallingProgExit</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>& bb);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a39c0cc9dec89b0b52bf9f1026da942e1">isBBCallsProgExit</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </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="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#af93358a02bf4ef8020091532e0c5b5af">isEQCmp</a>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a02550b1e1110f4cfca868603ce243564">CmpInst</a>* cmp) <span class="keyword">const</span>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aff24f70f9aa07b9f89c25bedab0e5a71">isNECmp</a>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a02550b1e1110f4cfca868603ce243564">CmpInst</a>* cmp) <span class="keyword">const</span>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#af7959f60bca343fb5755cfa0c5d56cb1">isTestNullExpr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* test) <span class="keyword">const</span>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a03ee22dd8af2d9ca658e2437eeae0a10">isTestNotNullExpr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* test) <span class="keyword">const</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ae9c9621d6ff6d527ca81dc5f960387b7">isTestContainsNullAndTheValue</a>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a02550b1e1110f4cfca868603ce243564">CmpInst</a>* cmp) <span class="keyword">const</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878"> 251</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">setCFCond</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, Condition* cond)</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  BBToCondMap::iterator it = <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.find(bb);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="comment">// until a fixed-point is reached (condition is not changed)</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.end() && <a class="code" href="classSVF_1_1PathCondAllocator.html#ad92e8909172d960de8a25f6ff0272261">isEquivalentBranchCond</a>(it->second, cond))</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>[bb] = cond;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  }</div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9"> 261</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb)<span class="keyword"> const</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  BBToCondMap::const_iterator it = <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.find(bb);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">if</span>(it==<a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.end())</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ab89aa330234e363fa04892352da60561"> 273</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ab89aa330234e363fa04892352da60561">destroy</a>(){</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea"> 277</a></span>  <a class="code" href="classSVF_1_1PTACFInfoBuilder.html">PTACFInfoBuilder</a> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">cfInfoBuilder</a>; </div><div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b"> 278</a></span>  FunToExitBBsMap <a class="code" href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b">funToExitBBsMap</a>; </div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24"> 279</a></span>  BBToCondMap <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>; </div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0"> 280</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* <a class="code" href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">curEvalSVFGNode</a>{}; </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd"> 283</a></span>  <a class="code" href="classSVF_1_1CondManager.html">CondManager</a>* <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>; </div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc"> 284</a></span>  BBCondMap <a class="code" href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">bbConds</a>; </div><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 class="line"><a name="l00288"></a><span class="lineno"> 288</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="preprocessor">#endif </span><span class="comment">/* PATHALLOCATOR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1CondManager_html_aa6dcd9cb78deef05b6c4d4e9b6b0a16b"><div class="ttname"><a href="classSVF_1_1CondManager.html#aa6dcd9cb78deef05b6c4d4e9b6b0a16b">SVF::CondManager::OR</a></div><div class="ttdeci">virtual CondExpr * OR(CondExpr *lhs, CondExpr *rhs)=0</div></div>
|
|
69
|
+
<a href="PathCondAllocator_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- PathCondAllocator.h -- Path condition manipulation---------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * PathAllocator.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: Apr 3, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifndef PATHALLOCATOR_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define PATHALLOCATOR_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="SVFModule_8h.html">Util/SVFModule.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="DataFlowUtil_8h.html">SVF-FE/DataFlowUtil.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="SVF-FE_2BasicTypes_8h.html">SVF-FE/BasicTypes.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="Conditions_8h.html">Util/Conditions.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "<a class="code" href="WorkList_8h.html">Util/WorkList.h</a>"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "<a class="code" href="SVFG_8h.html">Graphs/SVFG.h</a>"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html"> 47</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1PathCondAllocator.html">PathCondAllocator</a></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3"> 52</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>; </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a0d685cfd0f0652a0ff839969f763371b"> 54</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<u32_t,Condition*></a> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d685cfd0f0652a0ff839969f763371b">CondPosMap</a>; </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ab95a992cea9ccc23e31d4d48fce01055"> 55</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const BasicBlock*, CondPosMap ></a> <a class="code" href="classSVF_1_1PathCondAllocator.html#ab95a992cea9ccc23e31d4d48fce01055">BBCondMap</a>; <span class="comment">// map bb to a Condition</span></div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#aef4a1396ee439e0d6cd89695a81a7365"> 56</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const BasicBlock*></a> <a class="code" href="classSVF_1_1PathCondAllocator.html#aef4a1396ee439e0d6cd89695a81a7365">BasicBlockSet</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a0753fb35cb8fd37cfe8fd795d01e5275"> 57</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const Function*, BasicBlockSet></a> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0753fb35cb8fd37cfe8fd795d01e5275">FunToExitBBsMap</a>; </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ae3edcb70d9f0d65089f39147a635526d"> 58</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const BasicBlock*, Condition*></a> <a class="code" href="classSVF_1_1PathCondAllocator.html#ae3edcb70d9f0d65089f39147a635526d">BBToCondMap</a>; </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ac578894f959845164e1343384d60def1"> 59</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const BasicBlock*></a> <a class="code" href="classSVF_1_1PathCondAllocator.html#ac578894f959845164e1343384d60def1">CFWorkList</a>; </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#a805120d975a4e0981b7045b719fe9de3">PathCondAllocator</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ab9215223c463ef43f18f5151d6cd0fe3"> 66</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ab9215223c463ef43f18f5151d6cd0fe3">~PathCondAllocator</a>()</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ad6d58127299d87ae3c231065bb411557"> 71</a></span>  <span class="keyword">inline</span> std::string <a class="code" href="classSVF_1_1PathCondAllocator.html#ad6d58127299d87ae3c231065bb411557">getMemUsage</a>()</div><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> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a9d1f2e6ef92ee120c7f26d98b1389b04">getMemUsage</a>();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ae8f2447d33e2c638c1375f97ff3c3b40"> 75</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1PathCondAllocator.html#ae8f2447d33e2c638c1375f97ff3c3b40">getCondNum</a>()</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a03d9a0d209505631f6d9e500d9c6bde3">getCondNumber</a>();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61"> 83</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(Condition* lhs, Condition* rhs)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#aedda2ed496d0009d92d44a82af2ce8ae">AND</a>(lhs,rhs);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803"> 87</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">condOr</a>(Condition* lhs, Condition* rhs)</div><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_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#aa6dcd9cb78deef05b6c4d4e9b6b0a16b">OR</a>(lhs,rhs);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ac1ed60a8f59a55811c97c83def3bb739"> 91</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#ac1ed60a8f59a55811c97c83def3bb739">condNeg</a>(Condition* cond)</div><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_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#aecb97f6eb6ba2943b2eaa7a8212a9ba6">NEG</a>(cond);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a"> 95</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keyword"> </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_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2"> 99</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keyword"> </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_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a61095843f86d1c5c14750a635fb3aacb"> 104</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1PathCondAllocator.html#a61095843f86d1c5c14750a635fb3aacb">exactCondElem</a>(Condition* cond)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> elems;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a66ed79e36f8c09ee3ae58fb9b4a6f3e3">extractSubConds</a>(cond,elems);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> elems;</div><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> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#aae773a674331bb80cc589835e0b16e4e"> 111</a></span>  <span class="keyword">inline</span> std::string <a class="code" href="classSVF_1_1PathCondAllocator.html#aae773a674331bb80cc589835e0b16e4e">dumpCond</a>(Condition* cond)<span class="keyword"> const</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a19c63783d5d20f363be3641941263a78">dumpStr</a>(cond);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ad1fdfabb37f6bb5da6724b95404739e2"> 116</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#ad1fdfabb37f6bb5da6724b95404739e2">getCond</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i)<span class="keyword"> const</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#ad0273f830c9a6791aea55bfbdebf1138">getCond</a>(i);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a3cd08242b82129e6074b2f30a19b5c17"> 121</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a3cd08242b82129e6074b2f30a19b5c17">newCond</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#abd330e858463fed92fb3df6e8529f790">createFreshBranchCond</a>(inst);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a3fce010083b85a4421eed4c17eb54640">allocate</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">//{@</span></div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#adf65b74b89fca76c0cf5ea5dbd6dc4ca"> 132</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* <a class="code" href="classSVF_1_1PathCondAllocator.html#adf65b74b89fca76c0cf5ea5dbd6dc4ca">getCondInst</a>(<span class="keyword">const</span> Condition* cond)<span class="keyword"> const</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a4fac6a918f1f6d09fe1a4ceac7c19428">getCondInst</a>(cond);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ab85a1ab3580958361ea5ec29efc75874"> 136</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ab85a1ab3580958361ea5ec29efc75874">setCondInst</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* cond, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst){</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a1fbf7dd446309e13671d838c91da26bf">setCondInst</a>(cond, inst);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a7182283f15c556e9d0e9fdc6d62efeef"> 141</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a7182283f15c556e9d0e9fdc6d62efeef">isNegCond</a>(<span class="keyword">const</span> Condition *condition) {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a1007afa25f9a95c5d12c58852ef74686">isNegCond</a>(condition);</div><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> </div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a496a23bc37dfdea32c536e9ebe9a4b88"> 146</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* <a class="code" href="classSVF_1_1PathCondAllocator.html#a496a23bc37dfdea32c536e9ebe9a4b88">getDT</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#afb3864bae4ac95c7d3b731634c1abdab">getDT</a>(fun);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e"> 151</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>* <a class="code" href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e">getPostDT</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a00e3339dab62325354e8ecd8251da0f1">getPostDT</a>(fun);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a10ddc3b02b2baad2edd72fe429113b0f"> 156</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a>* <a class="code" href="classSVF_1_1PathCondAllocator.html#a10ddc3b02b2baad2edd72fe429113b0f">getLoopInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* f)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">getLoopInfo</a>(f);</div><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> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">virtual</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">ComputeIntraVFGGuard</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* src, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* dst);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keyword">virtual</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a9c3361e3f37d640b177c3955f3c3667f">ComputeInterCallVFGGuard</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* src, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* dst, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* callBB);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keyword">virtual</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a5015e36d00ac59ef2b832019b8f922f5">ComputeInterRetVFGGuard</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* src, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* dst, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* retBB);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keyword">virtual</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#abef2785eb426d5e1d6f273300c691db6">getPHIComplementCond</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB2, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB0);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a3462dbe3d0f8df08e3b6a6c6ef0b065c"> 172</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a3462dbe3d0f8df08e3b6a6c6ef0b065c">clearCFCond</a>()</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.clear();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a68f93a9271efcbb4728066a8d5639628"> 177</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a68f93a9271efcbb4728066a8d5639628">setCurEvalSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</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>  <a class="code" href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">curEvalSVFGNode</a> = node;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a0fa615ec0ccc48933b84d09b8e359da7"> 182</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* <a class="code" href="classSVF_1_1PathCondAllocator.html#a0fa615ec0ccc48933b84d09b8e359da7">getCurEvalSVFGNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">curEvalSVFGNode</a>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a2932b15ef74e46b676075ba1b2e82111">printPathCond</a>();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#aaed1bbfcac68a5e48d2850ef395e7da7"> 192</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aaed1bbfcac68a5e48d2850ef395e7da7">isSatisfiable</a>(Condition* condition){</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a5ef85ea09500adc006a25c1eb3426831">isSatisfiable</a>(condition);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a51c55809f28eee5b8432ab4508f9a887"> 197</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a51c55809f28eee5b8432ab4508f9a887">isAllPathReachable</a>(Condition* condition){</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a6151817a6f671fa1e7814e74f7ce2e51">isAllPathReachable</a>(condition);</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> </div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ad92e8909172d960de8a25f6ff0272261"> 201</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ad92e8909172d960de8a25f6ff0272261">isEquivalentBranchCond</a>(<span class="keyword">const</span> Condition *lhs, <span class="keyword">const</span> Condition *rhs)<span class="keyword"> const</span>{</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#aa20839631502b975590754e146242175">isEquivalentBranchCond</a>(lhs, rhs);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a80a607028f3a05d478ffbd6fcc0bbc2a"> 205</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* <a class="code" href="classSVF_1_1PathCondAllocator.html#a80a607028f3a05d478ffbd6fcc0bbc2a">getICFG</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</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="l00207"></a><span class="lineno"> 207</span>  }</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="keyword">private</span>:</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#af854f880e76738a13d6cb937a257828f">allocateForBB</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>& bb);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aaec323fc8a3f83da4596ed7d447ab6f1">setBranchCond</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ, Condition* cond);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a4d00c3306b92e59568b54a6a72afdb74">getBranchCond</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> * bb, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ) <span class="keyword">const</span>;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a6d2c5b05f4966522c9310fd3c086adea">getEvalBrCond</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> * bb, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a283788ca2886b03803829434150d11fe">evaluateBranchCond</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> * bb, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ) ;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a623e6ec670e5f6aeedee26b146ad5a0d">evaluateLoopExitBranch</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> * bb, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#af595a4b93bd350f489bfe8635d86cfcc">evaluateTestNullLikeExpr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>* branchStmt, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a79d6bbd55a134c856f3e80a898af23ee">evaluateProgExit</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a>* branchStmt, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a391cb347cf98f33c261e59975900048e">collectBBCallingProgExit</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>& bb);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a39c0cc9dec89b0b52bf9f1026da942e1">isBBCallsProgExit</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#af93358a02bf4ef8020091532e0c5b5af">isEQCmp</a>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a02550b1e1110f4cfca868603ce243564">CmpInst</a>* cmp) <span class="keyword">const</span>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aff24f70f9aa07b9f89c25bedab0e5a71">isNECmp</a>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a02550b1e1110f4cfca868603ce243564">CmpInst</a>* cmp) <span class="keyword">const</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#af7959f60bca343fb5755cfa0c5d56cb1">isTestNullExpr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* test) <span class="keyword">const</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a03ee22dd8af2d9ca658e2437eeae0a10">isTestNotNullExpr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* test) <span class="keyword">const</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ae9c9621d6ff6d527ca81dc5f960387b7">isTestContainsNullAndTheValue</a>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a02550b1e1110f4cfca868603ce243564">CmpInst</a>* cmp) <span class="keyword">const</span>;</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="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878"> 255</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">setCFCond</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, Condition* cond)</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  BBToCondMap::iterator it = <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.find(bb);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="comment">// until a fixed-point is reached (condition is not changed)</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.end() && <a class="code" href="classSVF_1_1PathCondAllocator.html#ad92e8909172d960de8a25f6ff0272261">isEquivalentBranchCond</a>(it->second, cond))</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>[bb] = cond;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9"> 265</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb)<span class="keyword"> const</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  BBToCondMap::const_iterator it = <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.find(bb);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">if</span>(it==<a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.end())</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ab89aa330234e363fa04892352da60561"> 279</a></span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ab89aa330234e363fa04892352da60561">destroy</a>(){</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea"> 283</a></span>  <a class="code" href="classSVF_1_1PTACFInfoBuilder.html">PTACFInfoBuilder</a> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">cfInfoBuilder</a>; </div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b"> 284</a></span>  FunToExitBBsMap <a class="code" href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b">funToExitBBsMap</a>; </div><div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24"> 285</a></span>  BBToCondMap <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>; </div><div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0"> 286</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* <a class="code" href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">curEvalSVFGNode</a>{}; </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="keyword">protected</span>:</div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd"> 289</a></span>  <a class="code" href="classSVF_1_1CondManager.html">CondManager</a>* <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>; </div><div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc"> 290</a></span>  BBCondMap <a class="code" href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">bbConds</a>; </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> };</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <span class="preprocessor">#endif </span><span class="comment">/* PATHALLOCATOR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a79d6bbd55a134c856f3e80a898af23ee"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a79d6bbd55a134c856f3e80a898af23ee">SVF::PathCondAllocator::evaluateProgExit</a></div><div class="ttdeci">Condition * evaluateProgExit(const BranchStmt *branchStmt, const BasicBlock *succ)</div><div class="ttdoc">Return condition when there is a branch calls program exit. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00210">PathCondAllocator.cpp:210</a></div></div>
|
|
70
|
+
<div class="ttc" id="classSVF_1_1CondManager_html_aa6dcd9cb78deef05b6c4d4e9b6b0a16b"><div class="ttname"><a href="classSVF_1_1CondManager.html#aa6dcd9cb78deef05b6c4d4e9b6b0a16b">SVF::CondManager::OR</a></div><div class="ttdeci">virtual CondExpr * OR(CondExpr *lhs, CondExpr *rhs)=0</div></div>
|
|
70
71
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ad92e8909172d960de8a25f6ff0272261"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ad92e8909172d960de8a25f6ff0272261">SVF::PathCondAllocator::isEquivalentBranchCond</a></div><div class="ttdeci">bool isEquivalentBranchCond(const Condition *lhs, const Condition *rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00201">PathCondAllocator.h:201</a></div></div>
|
|
71
72
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_af854f880e76738a13d6cb937a257828f"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#af854f880e76738a13d6cb937a257828f">SVF::PathCondAllocator::allocateForBB</a></div><div class="ttdeci">virtual void allocateForBB(const BasicBlock &bb)</div><div class="ttdoc">Allocate path condition for every basic block. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00081">PathCondAllocator.cpp:81</a></div></div>
|
|
72
73
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4d00c3306b92e59568b54a6a72afdb74"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4d00c3306b92e59568b54a6a72afdb74">SVF::PathCondAllocator::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="PathCondAllocator_8cpp_source.html#l00137">PathCondAllocator.cpp:137</a></div></div>
|
|
73
|
-
<div class="ttc" id="namespaceSVF_html_ac9a05dd7ab16e998625037aa242cd30f"><div class="ttname"><a href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">SVF::BranchInst</a></div><div class="ttdeci">llvm::BranchInst BranchInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00131">BasicTypes.h:131</a></div></div>
|
|
74
74
|
<div class="ttc" id="Conditions_8h_html"><div class="ttname"><a href="Conditions_8h.html">Conditions.h</a></div></div>
|
|
75
75
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a805120d975a4e0981b7045b719fe9de3"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a805120d975a4e0981b7045b719fe9de3">SVF::PathCondAllocator::PathCondAllocator</a></div><div class="ttdeci">PathCondAllocator()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00048">PathCondAllocator.cpp:48</a></div></div>
|
|
76
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a9c3361e3f37d640b177c3955f3c3667f"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a9c3361e3f37d640b177c3955f3c3667f">SVF::PathCondAllocator::ComputeInterCallVFGGuard</a></div><div class="ttdeci">virtual Condition * ComputeInterCallVFGGuard(const BasicBlock *src, const BasicBlock *dst, const BasicBlock *callBB)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#
|
|
76
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a9c3361e3f37d640b177c3955f3c3667f"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a9c3361e3f37d640b177c3955f3c3667f">SVF::PathCondAllocator::ComputeInterCallVFGGuard</a></div><div class="ttdeci">virtual Condition * ComputeInterCallVFGGuard(const BasicBlock *src, const BasicBlock *dst, const BasicBlock *callBB)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00458">PathCondAllocator.cpp:458</a></div></div>
|
|
77
77
|
<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#l00074">BasicTypes.h:74</a></div></div>
|
|
78
78
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a61095843f86d1c5c14750a635fb3aacb"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a61095843f86d1c5c14750a635fb3aacb">SVF::PathCondAllocator::exactCondElem</a></div><div class="ttdeci">NodeBS exactCondElem(Condition *cond)</div><div class="ttdoc">Iterator every element of the condition. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00104">PathCondAllocator.h:104</a></div></div>
|
|
79
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab89aa330234e363fa04892352da60561"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab89aa330234e363fa04892352da60561">SVF::PathCondAllocator::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Release memory. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
79
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab89aa330234e363fa04892352da60561"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab89aa330234e363fa04892352da60561">SVF::PathCondAllocator::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Release memory. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00279">PathCondAllocator.h:279</a></div></div>
|
|
80
80
|
<div class="ttc" id="classSVF_1_1CondManager_html_ac74f182ef249a7c892ba9c630f889ddc"><div class="ttname"><a href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">SVF::CondManager::getTrueCond</a></div><div class="ttdeci">CondExpr * getTrueCond() const</div><div class="ttdoc">Return the unique true condition. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00172">Conditions.h:172</a></div></div>
|
|
81
81
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aef4a1396ee439e0d6cd89695a81a7365"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aef4a1396ee439e0d6cd89695a81a7365">SVF::PathCondAllocator::BasicBlockSet</a></div><div class="ttdeci">Set< const BasicBlock * > BasicBlockSet</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00056">PathCondAllocator.h:56</a></div></div>
|
|
82
82
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00095">PathCondAllocator.h:95</a></div></div>
|
|
83
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4cb61914dff693e284091e97ab8c8878"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">SVF::PathCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, Condition *cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
83
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4cb61914dff693e284091e97ab8c8878"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">SVF::PathCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, Condition *cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00255">PathCondAllocator.h:255</a></div></div>
|
|
84
84
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1295e2c2c0a9c1a3744ba3927b95363e"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e">SVF::PathCondAllocator::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="PathCondAllocator_8h_source.html#l00151">PathCondAllocator.h:151</a></div></div>
|
|
85
85
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a623e6ec670e5f6aeedee26b146ad5a0d"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a623e6ec670e5f6aeedee26b146ad5a0d">SVF::PathCondAllocator::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="PathCondAllocator_8cpp_source.html#l00254">PathCondAllocator.cpp:254</a></div></div>
|
|
86
86
|
<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#l00085">BasicTypes.h:85</a></div></div>
|
|
87
87
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a6d2c5b05f4966522c9310fd3c086adea"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a6d2c5b05f4966522c9310fd3c086adea">SVF::PathCondAllocator::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="PathCondAllocator_8cpp_source.html#l00152">PathCondAllocator.cpp:152</a></div></div>
|
|
88
|
-
<div class="ttc" id="
|
|
88
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a80a607028f3a05d478ffbd6fcc0bbc2a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a80a607028f3a05d478ffbd6fcc0bbc2a">SVF::PathCondAllocator::getICFG</a></div><div class="ttdeci">ICFG * getICFG() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00205">PathCondAllocator.h:205</a></div></div>
|
|
89
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a2932b15ef74e46b676075ba1b2e82111"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a2932b15ef74e46b676075ba1b2e82111">SVF::PathCondAllocator::printPathCond</a></div><div class="ttdeci">void printPathCond()</div><div class="ttdoc">Print out the path condition information. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00542">PathCondAllocator.cpp:542</a></div></div>
|
|
89
90
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a496a23bc37dfdea32c536e9ebe9a4b88"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a496a23bc37dfdea32c536e9ebe9a4b88">SVF::PathCondAllocator::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="PathCondAllocator_8h_source.html#l00146">PathCondAllocator.h:146</a></div></div>
|
|
90
91
|
<div class="ttc" id="SVFG_8h_html"><div class="ttname"><a href="SVFG_8h.html">SVFG.h</a></div></div>
|
|
91
92
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a3462dbe3d0f8df08e3b6a6c6ef0b065c"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a3462dbe3d0f8df08e3b6a6c6ef0b065c">SVF::PathCondAllocator::clearCFCond</a></div><div class="ttdeci">void clearCFCond()</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00172">PathCondAllocator.h:172</a></div></div>
|
|
93
|
+
<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>
|
|
92
94
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5a8c25d74ffc2a8f8dbd20faab4d9803"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">SVF::PathCondAllocator::condOr</a></div><div class="ttdeci">Condition * condOr(Condition *lhs, Condition *rhs)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00087">PathCondAllocator.h:87</a></div></div>
|
|
93
95
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0753fb35cb8fd37cfe8fd795d01e5275"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0753fb35cb8fd37cfe8fd795d01e5275">SVF::PathCondAllocator::FunToExitBBsMap</a></div><div class="ttdeci">Map< const Function *, BasicBlockSet > 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="PathCondAllocator_8h_source.html#l00057">PathCondAllocator.h:57</a></div></div>
|
|
94
96
|
<div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
|
|
@@ -97,12 +99,12 @@ $(function() {
|
|
|
97
99
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ad6d58127299d87ae3c231065bb411557"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ad6d58127299d87ae3c231065bb411557">SVF::PathCondAllocator::getMemUsage</a></div><div class="ttdeci">std::string getMemUsage()</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00071">PathCondAllocator.h:71</a></div></div>
|
|
98
100
|
<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#l00081">SVFBasicTypes.h:81</a></div></div>
|
|
99
101
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a3cd08242b82129e6074b2f30a19b5c17"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a3cd08242b82129e6074b2f30a19b5c17">SVF::PathCondAllocator::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="PathCondAllocator_8h_source.html#l00121">PathCondAllocator.h:121</a></div></div>
|
|
100
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ad35f1bdb406a85c5bfdcbbc15642853b"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b">SVF::PathCondAllocator::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="PathCondAllocator_8h_source.html#
|
|
102
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ad35f1bdb406a85c5bfdcbbc15642853b"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b">SVF::PathCondAllocator::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="PathCondAllocator_8h_source.html#l00284">PathCondAllocator.h:284</a></div></div>
|
|
101
103
|
<div class="ttc" id="classSVF_1_1CondExpr_html"><div class="ttname"><a href="classSVF_1_1CondExpr.html">SVF::CondExpr</a></div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00041">Conditions.h:41</a></div></div>
|
|
102
104
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ad1fdfabb37f6bb5da6724b95404739e2"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ad1fdfabb37f6bb5da6724b95404739e2">SVF::PathCondAllocator::getCond</a></div><div class="ttdeci">Condition * getCond(u32_t i) const</div><div class="ttdoc">Given an z3 expr id, get its condition. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00116">PathCondAllocator.h:116</a></div></div>
|
|
103
105
|
<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#l00091">DataFlowUtil.cpp:91</a></div></div>
|
|
104
106
|
<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#l00149">BasicTypes.h:149</a></div></div>
|
|
105
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aff611b2797d61155c8c2f9d8ac4030bc"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">SVF::PathCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">map basic block to its successors/predecessors branch conditions </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
107
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aff611b2797d61155c8c2f9d8ac4030bc"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">SVF::PathCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">map basic block to its successors/predecessors branch conditions </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00290">PathCondAllocator.h:290</a></div></div>
|
|
106
108
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab9215223c463ef43f18f5151d6cd0fe3"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab9215223c463ef43f18f5151d6cd0fe3">SVF::PathCondAllocator::~PathCondAllocator</a></div><div class="ttdeci">virtual ~PathCondAllocator()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00066">PathCondAllocator.h:66</a></div></div>
|
|
107
109
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0d059c9adce2c998ddf2489376beb8e2"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">SVF::PathCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition * getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00099">PathCondAllocator.h:99</a></div></div>
|
|
108
110
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html">SVF::PathCondAllocator</a></div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00047">PathCondAllocator.h:47</a></div></div>
|
|
@@ -115,59 +117,61 @@ $(function() {
|
|
|
115
117
|
<div class="ttc" id="classSVF_1_1CondManager_html_a1007afa25f9a95c5d12c58852ef74686"><div class="ttname"><a href="classSVF_1_1CondManager.html#a1007afa25f9a95c5d12c58852ef74686">SVF::CondManager::isNegCond</a></div><div class="ttdeci">virtual bool isNegCond(const CondExpr *cond) const =0</div></div>
|
|
116
118
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a283788ca2886b03803829434150d11fe"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a283788ca2886b03803829434150d11fe">SVF::PathCondAllocator::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="PathCondAllocator_8cpp_source.html#l00294">PathCondAllocator.cpp:294</a></div></div>
|
|
117
119
|
<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#l00076">BasicTypes.h:76</a></div></div>
|
|
118
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_af7959f60bca343fb5755cfa0c5d56cb1"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#af7959f60bca343fb5755cfa0c5d56cb1">SVF::PathCondAllocator::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="PathCondAllocator_8cpp_source.html#
|
|
119
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aff24f70f9aa07b9f89c25bedab0e5a71"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aff24f70f9aa07b9f89c25bedab0e5a71">SVF::PathCondAllocator::isNECmp</a></div><div class="ttdeci">bool isNECmp(const CmpInst *cmp) const</div><div class="ttdoc">Return true if the predicate of this compare instruction is not equal. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#
|
|
120
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a03ee22dd8af2d9ca658e2437eeae0a10"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a03ee22dd8af2d9ca658e2437eeae0a10">SVF::PathCondAllocator::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="PathCondAllocator_8cpp_source.html#
|
|
121
|
-
<div class="ttc" id="
|
|
120
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_af7959f60bca343fb5755cfa0c5d56cb1"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#af7959f60bca343fb5755cfa0c5d56cb1">SVF::PathCondAllocator::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="PathCondAllocator_8cpp_source.html#l00340">PathCondAllocator.cpp:340</a></div></div>
|
|
121
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aff24f70f9aa07b9f89c25bedab0e5a71"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aff24f70f9aa07b9f89c25bedab0e5a71">SVF::PathCondAllocator::isNECmp</a></div><div class="ttdeci">bool isNECmp(const CmpInst *cmp) const</div><div class="ttdoc">Return true if the predicate of this compare instruction is not equal. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00335">PathCondAllocator.cpp:335</a></div></div>
|
|
122
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a03ee22dd8af2d9ca658e2437eeae0a10"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a03ee22dd8af2d9ca658e2437eeae0a10">SVF::PathCondAllocator::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="PathCondAllocator_8cpp_source.html#l00349">PathCondAllocator.cpp:349</a></div></div>
|
|
123
|
+
<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#l00921">SVFStatements.h:921</a></div></div>
|
|
122
124
|
<div class="ttc" id="classSVF_1_1CondManager_html_a1fbf7dd446309e13671d838c91da26bf"><div class="ttname"><a href="classSVF_1_1CondManager.html#a1fbf7dd446309e13671d838c91da26bf">SVF::CondManager::setCondInst</a></div><div class="ttdeci">void setCondInst(const CondExpr *cond, const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00212">Conditions.h:212</a></div></div>
|
|
123
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_af93358a02bf4ef8020091532e0c5b5af"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#af93358a02bf4ef8020091532e0c5b5af">SVF::PathCondAllocator::isEQCmp</a></div><div class="ttdeci">bool isEQCmp(const CmpInst *cmp) const</div><div class="ttdoc">Evaluate test null/not null like expressions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#
|
|
125
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_af93358a02bf4ef8020091532e0c5b5af"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#af93358a02bf4ef8020091532e0c5b5af">SVF::PathCondAllocator::isEQCmp</a></div><div class="ttdeci">bool isEQCmp(const CmpInst *cmp) const</div><div class="ttdoc">Evaluate test null/not null like expressions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00330">PathCondAllocator.cpp:330</a></div></div>
|
|
124
126
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a10ddc3b02b2baad2edd72fe429113b0f"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a10ddc3b02b2baad2edd72fe429113b0f">SVF::PathCondAllocator::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="PathCondAllocator_8h_source.html#l00156">PathCondAllocator.h:156</a></div></div>
|
|
125
127
|
<div class="ttc" id="classSVF_1_1CondManager_html_a66ed79e36f8c09ee3ae58fb9b4a6f3e3"><div class="ttname"><a href="classSVF_1_1CondManager.html#a66ed79e36f8c09ee3ae58fb9b4a6f3e3">SVF::CondManager::extractSubConds</a></div><div class="ttdeci">virtual void extractSubConds(const CondExpr *cond, NodeBS &support) const =0</div><div class="ttdoc">Extract sub conditions of this expression. </div></div>
|
|
126
128
|
<div class="ttc" id="classSVF_1_1CondManager_html_aedda2ed496d0009d92d44a82af2ce8ae"><div class="ttname"><a href="classSVF_1_1CondManager.html#aedda2ed496d0009d92d44a82af2ce8ae">SVF::CondManager::AND</a></div><div class="ttdeci">virtual CondExpr * AND(CondExpr *lhs, CondExpr *rhs)=0</div><div class="ttdoc">Operations on conditions. </div></div>
|
|
127
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4949fb25fe4cd461de8aec90756b1fea"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">SVF::PathCondAllocator::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="PathCondAllocator_8h_source.html#
|
|
128
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5015e36d00ac59ef2b832019b8f922f5"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5015e36d00ac59ef2b832019b8f922f5">SVF::PathCondAllocator::ComputeInterRetVFGGuard</a></div><div class="ttdeci">virtual Condition * ComputeInterRetVFGGuard(const BasicBlock *src, const BasicBlock *dst, const BasicBlock *retBB)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#
|
|
129
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac3a0aa27f317d7d9214181b599f19f24"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">SVF::PathCondAllocator::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="PathCondAllocator_8h_source.html#
|
|
129
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4949fb25fe4cd461de8aec90756b1fea"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">SVF::PathCondAllocator::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="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
|
|
130
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5015e36d00ac59ef2b832019b8f922f5"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5015e36d00ac59ef2b832019b8f922f5">SVF::PathCondAllocator::ComputeInterRetVFGGuard</a></div><div class="ttdeci">virtual Condition * ComputeInterRetVFGGuard(const BasicBlock *src, const BasicBlock *dst, const BasicBlock *retBB)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00473">PathCondAllocator.cpp:473</a></div></div>
|
|
131
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac3a0aa27f317d7d9214181b599f19f24"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">SVF::PathCondAllocator::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="PathCondAllocator_8h_source.html#l00285">PathCondAllocator.h:285</a></div></div>
|
|
130
132
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab85a1ab3580958361ea5ec29efc75874"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab85a1ab3580958361ea5ec29efc75874">SVF::PathCondAllocator::setCondInst</a></div><div class="ttdeci">void setCondInst(const CondExpr *cond, const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00136">PathCondAllocator.h:136</a></div></div>
|
|
131
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a165e0a354b7679ce582c15f4a3faf6e0"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">SVF::PathCondAllocator::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="PathCondAllocator_8h_source.html#
|
|
133
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a165e0a354b7679ce582c15f4a3faf6e0"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">SVF::PathCondAllocator::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="PathCondAllocator_8h_source.html#l00286">PathCondAllocator.h:286</a></div></div>
|
|
132
134
|
<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#l00148">BasicTypes.h:148</a></div></div>
|
|
133
135
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a51c55809f28eee5b8432ab4508f9a887"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a51c55809f28eee5b8432ab4508f9a887">SVF::PathCondAllocator::isAllPathReachable</a></div><div class="ttdeci">bool isAllPathReachable(Condition *condition)</div><div class="ttdoc">whether condition is satisfiable for all possible boolean guards </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00197">PathCondAllocator.h:197</a></div></div>
|
|
134
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ae9c9621d6ff6d527ca81dc5f960387b7"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ae9c9621d6ff6d527ca81dc5f960387b7">SVF::PathCondAllocator::isTestContainsNullAndTheValue</a></div><div class="ttdeci">bool isTestContainsNullAndTheValue(const CmpInst *cmp) const</div><div class="ttdoc">Return true if two values on the predicate are what we want. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#
|
|
136
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ae9c9621d6ff6d527ca81dc5f960387b7"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ae9c9621d6ff6d527ca81dc5f960387b7">SVF::PathCondAllocator::isTestContainsNullAndTheValue</a></div><div class="ttdeci">bool isTestContainsNullAndTheValue(const CmpInst *cmp) const</div><div class="ttdoc">Return true if two values on the predicate are what we want. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00370">PathCondAllocator.cpp:370</a></div></div>
|
|
135
137
|
<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#l00110">DataFlowUtil.cpp:110</a></div></div>
|
|
136
138
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab0e41d1eacfc6ee2cf42a9ce69cdcb61"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">SVF::PathCondAllocator::condAnd</a></div><div class="ttdeci">Condition * condAnd(Condition *lhs, Condition *rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00083">PathCondAllocator.h:83</a></div></div>
|
|
137
139
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac578894f959845164e1343384d60def1"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac578894f959845164e1343384d60def1">SVF::PathCondAllocator::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="PathCondAllocator_8h_source.html#l00059">PathCondAllocator.h:59</a></div></div>
|
|
138
140
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a3fce010083b85a4421eed4c17eb54640"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a3fce010083b85a4421eed4c17eb54640">SVF::PathCondAllocator::allocate</a></div><div class="ttdeci">void allocate(const SVFModule *module)</div><div class="ttdoc">Perform path allocation. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00054">PathCondAllocator.cpp:54</a></div></div>
|
|
139
141
|
<div class="ttc" id="classSVF_1_1CondManager_html_aa20839631502b975590754e146242175"><div class="ttname"><a href="classSVF_1_1CondManager.html#aa20839631502b975590754e146242175">SVF::CondManager::isEquivalentBranchCond</a></div><div class="ttdeci">virtual bool isEquivalentBranchCond(const CondExpr *lhs, const CondExpr *rhs)=0</div><div class="ttdoc">Whether lhs and rhs are equivalent branch conditions. </div></div>
|
|
140
142
|
<div class="ttc" id="classSVF_1_1CondManager_html_a19c63783d5d20f363be3641941263a78"><div class="ttname"><a href="classSVF_1_1CondManager.html#a19c63783d5d20f363be3641941263a78">SVF::CondManager::dumpStr</a></div><div class="ttdeci">virtual std::string dumpStr(const CondExpr *e) const =0</div><div class="ttdoc">Return string format of this expression. </div></div>
|
|
143
|
+
<div class="ttc" id="classSVF_1_1ICFG_html"><div class="ttname"><a href="classSVF_1_1ICFG.html">SVF::ICFG</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00046">ICFG.h:46</a></div></div>
|
|
141
144
|
<div class="ttc" id="DataFlowUtil_8h_html"><div class="ttname"><a href="DataFlowUtil_8h.html">DataFlowUtil.h</a></div></div>
|
|
142
145
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0d685cfd0f0652a0ff839969f763371b"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0d685cfd0f0652a0ff839969f763371b">SVF::PathCondAllocator::CondPosMap</a></div><div class="ttdeci">Map< u32_t, Condition * > CondPosMap</div><div class="ttdoc">z3 condition </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00054">PathCondAllocator.h:54</a></div></div>
|
|
143
146
|
<div class="ttc" id="classSVF_1_1CondManager_html_a03d9a0d209505631f6d9e500d9c6bde3"><div class="ttname"><a href="classSVF_1_1CondManager.html#a03d9a0d209505631f6d9e500d9c6bde3">SVF::CondManager::getCondNumber</a></div><div class="ttdeci">virtual u32_t getCondNumber()=0</div><div class="ttdoc">Return the number of condition expressions. </div></div>
|
|
144
147
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac1ed60a8f59a55811c97c83def3bb739"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac1ed60a8f59a55811c97c83def3bb739">SVF::PathCondAllocator::condNeg</a></div><div class="ttdeci">Condition * condNeg(Condition *cond)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00091">PathCondAllocator.h:91</a></div></div>
|
|
145
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab31b523d760d634811ca4d1de7fc4eb2"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab31b523d760d634811ca4d1de7fc4eb2">SVF::PathCondAllocator::evaluateTestNullLikeExpr</a></div><div class="ttdeci">Condition * evaluateTestNullLikeExpr(const BranchInst *brInst, 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="PathCondAllocator_8cpp_source.html#l00180">PathCondAllocator.cpp:180</a></div></div>
|
|
146
148
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aade2bc55c3882a6cacc3c4a891a1c4a3"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">SVF::PathCondAllocator::Condition</a></div><div class="ttdeci">CondExpr Condition</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00052">PathCondAllocator.h:52</a></div></div>
|
|
147
149
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00137">WorkList.h:137</a></div></div>
|
|
148
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a8c926057571ca14743e106a5a6ce7ae9"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">SVF::PathCondAllocator::getCFCond</a></div><div class="ttdeci">Condition * getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
150
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a8c926057571ca14743e106a5a6ce7ae9"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">SVF::PathCondAllocator::getCFCond</a></div><div class="ttdeci">Condition * getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00265">PathCondAllocator.h:265</a></div></div>
|
|
149
151
|
<div class="ttc" id="classSVF_1_1CondManager_html_aecb97f6eb6ba2943b2eaa7a8212a9ba6"><div class="ttname"><a href="classSVF_1_1CondManager.html#aecb97f6eb6ba2943b2eaa7a8212a9ba6">SVF::CondManager::NEG</a></div><div class="ttdeci">virtual CondExpr * NEG(CondExpr *lhs)=0</div></div>
|
|
150
152
|
<div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html">SVF::PTACFInfoBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8h_source.html#l00122">DataFlowUtil.h:122</a></div></div>
|
|
153
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_af595a4b93bd350f489bfe8635d86cfcc"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#af595a4b93bd350f489bfe8635d86cfcc">SVF::PathCondAllocator::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="PathCondAllocator_8cpp_source.html#l00180">PathCondAllocator.cpp:180</a></div></div>
|
|
151
154
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a7182283f15c556e9d0e9fdc6d62efeef"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a7182283f15c556e9d0e9fdc6d62efeef">SVF::PathCondAllocator::isNegCond</a></div><div class="ttdeci">bool isNegCond(const Condition *condition)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00141">PathCondAllocator.h:141</a></div></div>
|
|
152
155
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0fa615ec0ccc48933b84d09b8e359da7"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0fa615ec0ccc48933b84d09b8e359da7">SVF::PathCondAllocator::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="PathCondAllocator_8h_source.html#l00182">PathCondAllocator.h:182</a></div></div>
|
|
153
156
|
<div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
|
|
154
157
|
<div class="ttc" id="classSVF_1_1CondManager_html_a4fac6a918f1f6d09fe1a4ceac7c19428"><div class="ttname"><a href="classSVF_1_1CondManager.html#a4fac6a918f1f6d09fe1a4ceac7c19428">SVF::CondManager::getCondInst</a></div><div class="ttdeci">const Instruction * getCondInst(const CondExpr *cond) const</div><div class="ttdoc">Get/Set llvm conditional expression. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00206">Conditions.h:206</a></div></div>
|
|
155
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
158
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00289">PathCondAllocator.h:289</a></div></div>
|
|
156
159
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a68f93a9271efcbb4728066a8d5639628"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a68f93a9271efcbb4728066a8d5639628">SVF::PathCondAllocator::setCurEvalSVFGNode</a></div><div class="ttdeci">void setCurEvalSVFGNode(const SVFGNode *node)</div><div class="ttdoc">Set current value for branch condition evaluation. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00177">PathCondAllocator.h:177</a></div></div>
|
|
157
160
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ae3edcb70d9f0d65089f39147a635526d"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ae3edcb70d9f0d65089f39147a635526d">SVF::PathCondAllocator::BBToCondMap</a></div><div class="ttdeci">Map< const BasicBlock *, Condition * > BBToCondMap</div><div class="ttdoc">map a basic block to its condition during control-flow guard computation </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00058">PathCondAllocator.h:58</a></div></div>
|
|
158
161
|
<div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00092">SVFBasicTypes.h:92</a></div></div>
|
|
159
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a39c0cc9dec89b0b52bf9f1026da942e1"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a39c0cc9dec89b0b52bf9f1026da942e1">SVF::PathCondAllocator::isBBCallsProgExit</a></div><div class="ttdeci">bool isBBCallsProgExit(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#
|
|
162
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a39c0cc9dec89b0b52bf9f1026da942e1"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a39c0cc9dec89b0b52bf9f1026da942e1">SVF::PathCondAllocator::isBBCallsProgExit</a></div><div class="ttdeci">bool isBBCallsProgExit(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00416">PathCondAllocator.cpp:416</a></div></div>
|
|
160
163
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ae8f2447d33e2c638c1375f97ff3c3b40"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ae8f2447d33e2c638c1375f97ff3c3b40">SVF::PathCondAllocator::getCondNum</a></div><div class="ttdeci">u32_t getCondNum()</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00075">PathCondAllocator.h:75</a></div></div>
|
|
161
164
|
<div class="ttc" id="SVFModule_8h_html"><div class="ttname"><a href="SVFModule_8h.html">SVFModule.h</a></div></div>
|
|
162
165
|
<div class="ttc" id="WorkList_8h_html"><div class="ttname"><a href="WorkList_8h.html">WorkList.h</a></div></div>
|
|
163
166
|
<div class="ttc" id="classSVF_1_1CondManager_html_a39e9d42cb3661d1c686b5163c70eeade"><div class="ttname"><a href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">SVF::CondManager::getFalseCond</a></div><div class="ttdeci">CondExpr * getFalseCond() const</div><div class="ttdoc">Return the unique false condition. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00177">Conditions.h:177</a></div></div>
|
|
164
167
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aae773a674331bb80cc589835e0b16e4e"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aae773a674331bb80cc589835e0b16e4e">SVF::PathCondAllocator::dumpCond</a></div><div class="ttdeci">std::string dumpCond(Condition *cond) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00111">PathCondAllocator.h:111</a></div></div>
|
|
165
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a391cb347cf98f33c261e59975900048e"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a391cb347cf98f33c261e59975900048e">SVF::PathCondAllocator::collectBBCallingProgExit</a></div><div class="ttdeci">void collectBBCallingProgExit(const BasicBlock &bb)</div><div class="ttdoc">Collect basic block contains program exit function call. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#
|
|
168
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a391cb347cf98f33c261e59975900048e"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a391cb347cf98f33c261e59975900048e">SVF::PathCondAllocator::collectBBCallingProgExit</a></div><div class="ttdeci">void collectBBCallingProgExit(const BasicBlock &bb)</div><div class="ttdoc">Collect basic block contains program exit function call. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00399">PathCondAllocator.cpp:399</a></div></div>
|
|
166
169
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_adf65b74b89fca76c0cf5ea5dbd6dc4ca"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#adf65b74b89fca76c0cf5ea5dbd6dc4ca">SVF::PathCondAllocator::getCondInst</a></div><div class="ttdeci">const Instruction * getCondInst(const Condition *cond) const</div><div class="ttdoc">Get/Set llvm conditional expression. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00132">PathCondAllocator.h:132</a></div></div>
|
|
167
170
|
<div class="ttc" id="classSVF_1_1CondManager_html_a9d1f2e6ef92ee120c7f26d98b1389b04"><div class="ttname"><a href="classSVF_1_1CondManager.html#a9d1f2e6ef92ee120c7f26d98b1389b04">SVF::CondManager::getMemUsage</a></div><div class="ttdeci">virtual std::string getMemUsage()=0</div><div class="ttdoc">Return memory usage for this condition manager. </div></div>
|
|
168
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5ab573cce84584c44778611ba6f4d99c"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">SVF::PathCondAllocator::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="PathCondAllocator_8cpp_source.html#
|
|
171
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5ab573cce84584c44778611ba6f4d99c"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">SVF::PathCondAllocator::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="PathCondAllocator_8cpp_source.html#l00486">PathCondAllocator.cpp:486</a></div></div>
|
|
169
172
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aaed1bbfcac68a5e48d2850ef395e7da7"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aaed1bbfcac68a5e48d2850ef395e7da7">SVF::PathCondAllocator::isSatisfiable</a></div><div class="ttdeci">bool isSatisfiable(Condition *condition)</div><div class="ttdoc">whether condition is satisfiable </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00192">PathCondAllocator.h:192</a></div></div>
|
|
170
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_abef2785eb426d5e1d6f273300c691db6"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#abef2785eb426d5e1d6f273300c691db6">SVF::PathCondAllocator::getPHIComplementCond</a></div><div class="ttdeci">virtual Condition * getPHIComplementCond(const BasicBlock *BB1, const BasicBlock *BB2, const BasicBlock *BB0)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#
|
|
173
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_abef2785eb426d5e1d6f273300c691db6"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#abef2785eb426d5e1d6f273300c691db6">SVF::PathCondAllocator::getPHIComplementCond</a></div><div class="ttdeci">virtual Condition * getPHIComplementCond(const BasicBlock *BB1, const BasicBlock *BB2, const BasicBlock *BB0)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00438">PathCondAllocator.cpp:438</a></div></div>
|
|
174
|
+
<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>
|
|
171
175
|
<div class="ttc" id="classSVF_1_1CondManager_html_a5ef85ea09500adc006a25c1eb3426831"><div class="ttname"><a href="classSVF_1_1CondManager.html#a5ef85ea09500adc006a25c1eb3426831">SVF::CondManager::isSatisfiable</a></div><div class="ttdeci">virtual bool isSatisfiable(const CondExpr *cond)=0</div><div class="ttdoc">Whether the condition is satisfiable. </div></div>
|
|
172
176
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab95a992cea9ccc23e31d4d48fce01055"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab95a992cea9ccc23e31d4d48fce01055">SVF::PathCondAllocator::BBCondMap</a></div><div class="ttdeci">Map< const BasicBlock *, CondPosMap > BBCondMap</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00055">PathCondAllocator.h:55</a></div></div>
|
|
173
177
|
<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#l00075">BasicTypes.h:75</a></div></div>
|