svf-tools 1.0.507 → 1.0.508

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +14 -15
  2. package/SVF-doxygen/html/html/ExeState_8h_source.html +16 -16
  3. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +4 -4
  4. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +28 -30
  5. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +33 -33
  6. package/SVF-doxygen/html/html/Z3Expr_8cpp_source.html +13 -12
  7. package/SVF-doxygen/html/html/Z3Expr_8h_source.html +48 -47
  8. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +33 -33
  9. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +4 -4
  10. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +91 -91
  11. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
  12. package/SVF-doxygen/html/html/classSVF_1_1Z3Expr-members.html +13 -12
  13. package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +148 -115
  14. package/SVF-doxygen/html/html/functions_c.html +1 -1
  15. package/SVF-doxygen/html/html/functions_func_r.html +6 -3
  16. package/SVF-doxygen/html/html/functions_o.html +3 -3
  17. package/SVF-doxygen/html/html/functions_p.html +10 -6
  18. package/SVF-doxygen/html/html/functions_r.html +10 -11
  19. package/SVF-doxygen/html/html/functions_s.html +8 -10
  20. package/SVF-doxygen/html/html/functions_t.html +10 -8
  21. package/SVF-doxygen/html/html/functions_v.html +3 -3
  22. package/SVF-doxygen/html/html/functions_vars_c.html +1 -1
  23. package/SVF-doxygen/html/html/functions_vars_s.html +1 -1
  24. package/SVF-doxygen/html/html/search/all_10.js +4 -4
  25. package/SVF-doxygen/html/html/search/all_11.js +4 -3
  26. package/SVF-doxygen/html/html/search/all_12.js +6 -6
  27. package/SVF-doxygen/html/html/search/all_13.js +4 -4
  28. package/SVF-doxygen/html/html/search/all_14.js +1 -1
  29. package/SVF-doxygen/html/html/search/all_15.js +2 -2
  30. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  31. package/SVF-doxygen/html/html/search/all_3.js +1 -1
  32. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  33. package/SVF-doxygen/html/html/search/all_b.js +1 -1
  34. package/SVF-doxygen/html/html/search/all_c.js +1 -1
  35. package/SVF-doxygen/html/html/search/all_e.js +1 -1
  36. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  37. package/SVF-doxygen/html/html/search/functions_10.js +1 -0
  38. package/SVF-doxygen/html/html/search/functions_f.js +1 -1
  39. package/SVF-doxygen/html/html/search/variables_12.js +1 -1
  40. package/SVF-doxygen/html/html/search/variables_13.js +2 -2
  41. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  42. package/SVF-doxygen/html/html/search/variables_3.js +1 -1
  43. package/SVF-doxygen/html/html/search/variables_9.js +1 -1
  44. package/SVF-doxygen/html/html/search/variables_c.js +1 -1
  45. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  46. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1ExeState_01_4.html +1 -1
  47. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1Z3Expr_01_4.html +3 -3
  48. package/include/Util/Z3Expr.h +4 -1
  49. package/lib/SABER/SaberCondAllocator.cpp +0 -2
  50. package/lib/Util/ExeState.cpp +0 -1
  51. package/lib/Util/Z3Expr.cpp +15 -1
  52. package/package.json +1 -1
@@ -69,36 +69,36 @@ $(function() {
69
69
  <a href="SaberCondAllocator_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>&#160;<span class="comment">//===- SaberCondAllocator.h -- Path condition manipulation---------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<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>&#160;<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>&#160;<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>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<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>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * PathAllocator.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Apr 3, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef PATHALLOCATOR_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define PATHALLOCATOR_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFModule_8h.html">Util/SVFModule.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="DataFlowUtil_8h.html">SVF-FE/DataFlowUtil.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVF-FE_2BasicTypes_8h.html">SVF-FE/BasicTypes.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="WorkList_8h.html">Util/WorkList.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFG_8h.html">Graphs/SVFG.h</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Z3Expr_8h.html">Util/Z3Expr.h</a>&quot;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<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>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html"> 47</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1SaberCondAllocator.html">SaberCondAllocator</a></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65"> 52</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">Condition</a>; </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a7ad6d5346ff534f59a332f1194e27d93"> 53</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t, const Instruction *&gt;</a> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a7ad6d5346ff534f59a332f1194e27d93">IndexToTermInstMap</a>; </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#aa330cc6a1a3c38601ebeb325ffd87221"> 54</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t,Condition&gt;</a> <a class="code" href="classSVF_1_1SaberCondAllocator.html#aa330cc6a1a3c38601ebeb325ffd87221">CondPosMap</a>; </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a80445dc28d9a01c2e0a656f1e2f2a51f"> 55</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const BasicBlock*, CondPosMap &gt;</a> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a80445dc28d9a01c2e0a656f1e2f2a51f">BBCondMap</a>; </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#ae4dea0585e5fad34cbfc10fa535b1426"> 56</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const BasicBlock*&gt;</a> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ae4dea0585e5fad34cbfc10fa535b1426">BasicBlockSet</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a37b7a293dcd12bd13639c55482e856e1"> 57</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const Function*, BasicBlockSet&gt;</a> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a37b7a293dcd12bd13639c55482e856e1">FunToExitBBsMap</a>; </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a43782d54ecac8b538c4f8484e8b32dab"> 58</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const BasicBlock*, Condition&gt;</a> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a43782d54ecac8b538c4f8484e8b32dab">BBToCondMap</a>; </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a52ec71159bc70b450895990dfebdedac"> 59</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const BasicBlock*&gt;</a> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a52ec71159bc70b450895990dfebdedac">CFWorkList</a>; </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#a4b1625597c6b331dfe0e8ceef95731b5">SaberCondAllocator</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a009db4214557cbe2ff53b81f0519fbcd"> 66</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a009db4214557cbe2ff53b81f0519fbcd">~SaberCondAllocator</a>()</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#ac0060d6660cb022e599dbcb9eabc5aaa"> 71</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ac0060d6660cb022e599dbcb9eabc5aaa">getMemUsage</a>()</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a634376c35eceaf4dc995a71484d9bc7c"> 75</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a634376c35eceaf4dc995a71484d9bc7c">getCondNum</a>()</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a76fad4d58db94d7c572876ba6f1adf83">totalCondNum</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4"> 83</a></span>&#160; <span class="keyword">inline</span> Condition <a class="code" href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">condAnd</a>(<span class="keyword">const</span> Condition&amp; lhs, <span class="keyword">const</span> Condition&amp; rhs)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#a4f56bd6d3a31df94e19af9ce6e685fea">Condition::AND</a>(lhs,rhs);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161"> 87</a></span>&#160; <span class="keyword">inline</span> Condition <a class="code" href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">condOr</a>(<span class="keyword">const</span> Condition&amp; lhs, <span class="keyword">const</span> Condition&amp; rhs)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#ac063ed06c3495b790c02fe57c781b34e">Condition::OR</a>(lhs,rhs);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a620d53b9af8dd30523c478f4e9655817"> 91</a></span>&#160; <span class="keyword">inline</span> Condition <a class="code" href="classSVF_1_1SaberCondAllocator.html#a620d53b9af8dd30523c478f4e9655817">condNeg</a>(<span class="keyword">const</span> Condition&amp; cond)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#a9a545e516e6dee37310ad02481a84356">Condition::NEG</a>(cond);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3"> 95</a></span>&#160; <span class="keyword">inline</span> Condition <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#aaa0c9122f34208235a2d830432665752">Condition::getTrueCond</a>();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4"> 99</a></span>&#160; <span class="keyword">inline</span> Condition <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#af541505af93ccebf57543793658cf495">Condition::getFalseCond</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a87205db039579f05214507c48d6befec"> 104</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a87205db039579f05214507c48d6befec">exactCondElem</a>(<span class="keyword">const</span> Condition&amp; cond)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> elems;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9f43fe1cacf419f03276d66c3a54fe77">extractSubConds</a>(cond, elems);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> elems;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a100c1962eac6d7af420defc827a025ed"> 111</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a100c1962eac6d7af420defc827a025ed">dumpCond</a>(<span class="keyword">const</span> Condition&amp; cond)<span class="keyword"> const</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#a56ba65487cc91248259e29d3ebb5bdb0">Condition::dumpStr</a>(cond);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; Condition <a class="code" href="classSVF_1_1SaberCondAllocator.html#a5a39b2efcec1c77e7f06dda7b64c9765">newCond</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a0014c59d7f3c7bd0845548aea05a9a5b">allocate</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">//{@</span></div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a91994fe743ecec3477da5d303c8f004b"> 124</a></span>&#160; <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_1SaberCondAllocator.html#a91994fe743ecec3477da5d303c8f004b">getCondInst</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; IndexToTermInstMap::const_iterator it = <a class="code" href="classSVF_1_1SaberCondAllocator.html#aee401aa2c7884888bbd26544bcd92881">idToTermInstMap</a>.find(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; assert(it != <a class="code" href="classSVF_1_1SaberCondAllocator.html#aee401aa2c7884888bbd26544bcd92881">idToTermInstMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;this should be a fresh condition&quot;</span>);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#ae7ba47d494686df48a2a7e86b1f386b4"> 131</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ae7ba47d494686df48a2a7e86b1f386b4">setCondInst</a>(<span class="keyword">const</span> Condition &amp;condition, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; assert(<a class="code" href="classSVF_1_1SaberCondAllocator.html#aee401aa2c7884888bbd26544bcd92881">idToTermInstMap</a>.find(condition.<a class="code" href="classSVF_1_1Z3Expr.html#acdb4fbb53f19bac033e79cfe96ce82ca">id</a>()) == <a class="code" href="classSVF_1_1SaberCondAllocator.html#aee401aa2c7884888bbd26544bcd92881">idToTermInstMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;this should be a fresh condition&quot;</span>);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#aee401aa2c7884888bbd26544bcd92881">idToTermInstMap</a>[condition.<a class="code" href="classSVF_1_1Z3Expr.html#acdb4fbb53f19bac033e79cfe96ce82ca">id</a>()] = inst;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#ad5d27f65374025b6a105ea7a92cbdb50"> 138</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ad5d27f65374025b6a105ea7a92cbdb50">isNegCond</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a4267ed81d5100d49581a4216f46e660c">negConds</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">test</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#acf93725fa53eda82ea30b8efa1940016"> 144</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* <a class="code" href="classSVF_1_1SaberCondAllocator.html#acf93725fa53eda82ea30b8efa1940016">getDT</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ac9a70a1f69abe85197d95945b6c4ed97">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#afb3864bae4ac95c7d3b731634c1abdab">getDT</a>(fun);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#ad19b88bca27044d0d9a6999c88afde97"> 149</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>* <a class="code" href="classSVF_1_1SaberCondAllocator.html#ad19b88bca27044d0d9a6999c88afde97">getPostDT</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ac9a70a1f69abe85197d95945b6c4ed97">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a00e3339dab62325354e8ecd8251da0f1">getPostDT</a>(fun);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a44932e57515b7ddcc192796679dd69be"> 154</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a>* <a class="code" href="classSVF_1_1SaberCondAllocator.html#a44932e57515b7ddcc192796679dd69be">getLoopInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* f)</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ac9a70a1f69abe85197d95945b6c4ed97">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">getLoopInfo</a>(f);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keyword">virtual</span> Condition <a class="code" href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">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="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">virtual</span> Condition <a class="code" href="classSVF_1_1SaberCondAllocator.html#a25f4b168340871cf5641fb79d008685a">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="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">virtual</span> Condition <a class="code" href="classSVF_1_1SaberCondAllocator.html#a3934d1ebdc728a89db9cec42436004c4">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="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keyword">virtual</span> Condition <a class="code" href="classSVF_1_1SaberCondAllocator.html#a79d103da4190c9e868c2446a4bc62f44">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="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a5406e73b860c419143035ee3774e7c1c"> 170</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a5406e73b860c419143035ee3774e7c1c">clearCFCond</a>()</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#a6d29487d00d66dadae7b4b79f9bf50e9">bbToCondMap</a>.clear();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#ae717f565b947a72651c0de19bf6bcca0"> 175</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ae717f565b947a72651c0de19bf6bcca0">setCurEvalSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#a4ac9b5ec6bfd7a7b468cb13a5e8803e0">curEvalSVFGNode</a> = node;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a9aec07a64b97d546cfa0efe10f888b6a"> 180</a></span>&#160; <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_1SaberCondAllocator.html#a9aec07a64b97d546cfa0efe10f888b6a">getCurEvalSVFGNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a4ac9b5ec6bfd7a7b468cb13a5e8803e0">curEvalSVFGNode</a>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a389fd522c1de5b4feed34f29b9709d03">printPathCond</a>();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a7c132cc105a97a5dbf0c9b9d16b4b72a">isSatisfiable</a>(<span class="keyword">const</span> Condition&amp; condition);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a246da0431273c312800459aa85d80a86"> 193</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a246da0431273c312800459aa85d80a86">isAllPathReachable</a>(Condition&amp; condition)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#aa9027574586fd4fbb12039f595ecec71">isEquivalentBranchCond</a>(condition, <a class="code" href="classSVF_1_1Z3Expr.html#aaa0c9122f34208235a2d830432665752">Condition::getTrueCond</a>());</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#aa9027574586fd4fbb12039f595ecec71">isEquivalentBranchCond</a>(<span class="keyword">const</span> Condition &amp;lhs, <span class="keyword">const</span> Condition &amp;rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a6bd67514e0ea9a2704ae83a38c9f2592"> 201</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* <a class="code" href="classSVF_1_1SaberCondAllocator.html#a6bd67514e0ea9a2704ae83a38c9f2592">getICFG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>();</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b"> 208</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">setCFCond</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> Condition&amp; cond)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; BBToCondMap::iterator it = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a6d29487d00d66dadae7b4b79f9bf50e9">bbToCondMap</a>.find(bb);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="comment">// until a fixed-point is reached (condition is not changed)</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1SaberCondAllocator.html#a6d29487d00d66dadae7b4b79f9bf50e9">bbToCondMap</a>.end() &amp;&amp; <a class="code" href="classSVF_1_1SaberCondAllocator.html#aa9027574586fd4fbb12039f595ecec71">isEquivalentBranchCond</a>(it-&gt;second, cond))</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#a6d29487d00d66dadae7b4b79f9bf50e9">bbToCondMap</a>[bb] = cond;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f"> 218</a></span>&#160; <span class="keyword">inline</span> Condition <a class="code" href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">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="l00219"></a><span class="lineno"> 219</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; BBToCondMap::const_iterator it = <a class="code" href="classSVF_1_1SaberCondAllocator.html#a6d29487d00d66dadae7b4b79f9bf50e9">bbToCondMap</a>.find(bb);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">if</span>(it==<a class="code" href="classSVF_1_1SaberCondAllocator.html#a6d29487d00d66dadae7b4b79f9bf50e9">bbToCondMap</a>.end())</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a22b71f885c07fff3c35006337ec41ee7"> 231</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a22b71f885c07fff3c35006337ec41ee7">setNegCondInst</a>(<span class="keyword">const</span> Condition &amp;condition, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst)</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#ae7ba47d494686df48a2a7e86b1f386b4">setCondInst</a>(condition, inst);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html#a4267ed81d5100d49581a4216f46e660c">negConds</a>.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(condition.<a class="code" href="classSVF_1_1Z3Expr.html#acdb4fbb53f19bac033e79cfe96ce82ca">id</a>());</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a6e1f93e7f0a5f9f78aa199982b698f9f">allocateForBB</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>&amp; bb);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#af3d224fdc92de272363f411b8f8c2a09">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, <span class="keyword">const</span> Condition&amp; cond);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; Condition <a class="code" href="classSVF_1_1SaberCondAllocator.html#a2b1c2e7764631d40a5b8d0ce2cc73442">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="l00248"></a><span class="lineno"> 248</span>&#160; Condition <a class="code" href="classSVF_1_1SaberCondAllocator.html#a8926da3e50d32bd1fcf0a011417d445c">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="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; Condition <a class="code" href="classSVF_1_1SaberCondAllocator.html#a4d334bb764e2f3feb5da892e0c21b8ed">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="l00255"></a><span class="lineno"> 255</span>&#160; Condition <a class="code" href="classSVF_1_1SaberCondAllocator.html#a4c3945abc15c6caeb9d026f47e78a340">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="l00257"></a><span class="lineno"> 257</span>&#160; Condition <a class="code" href="classSVF_1_1SaberCondAllocator.html#ad049eeed763a5f18267b9288f728b070">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="l00259"></a><span class="lineno"> 259</span>&#160; Condition <a class="code" href="classSVF_1_1SaberCondAllocator.html#aac1988c13622c0755d491f0bc2b834df">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="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#adcb9b49512179e016765b50277fc058f">collectBBCallingProgExit</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>&amp; bb);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a7f5f1fb437153d2a797cf509b8f97c7f">isBBCallsProgExit</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a61a5b10b610d56f7585cf709eb2b2d5b">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="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ab254027728c09a23cff8825b335da1c8">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="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a0244cfcb0f23614e8f870383a6bd44b3">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="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a8ffebb3dec9884434be8e432ab1f0063">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="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a7a7fbd17d13c81a9b259641d6e1cc857">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="l00278"></a><span class="lineno"> 278</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a59e01031d81c2e06bbc6577036b51732"> 280</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a59e01031d81c2e06bbc6577036b51732">destroy</a>()</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a9f43fe1cacf419f03276d66c3a54fe77">extractSubConds</a>(<span class="keyword">const</span> Condition &amp;condition, <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> &amp;support) <span class="keyword">const</span>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#ac9a70a1f69abe85197d95945b6c4ed97"> 289</a></span>&#160; <a class="code" href="classSVF_1_1PTACFInfoBuilder.html">PTACFInfoBuilder</a> <a class="code" href="classSVF_1_1SaberCondAllocator.html#ac9a70a1f69abe85197d95945b6c4ed97">cfInfoBuilder</a>; </div><div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#ad1620cc7482aeb464b53cfce64e17cc3"> 290</a></span>&#160; FunToExitBBsMap <a class="code" href="classSVF_1_1SaberCondAllocator.html#ad1620cc7482aeb464b53cfce64e17cc3">funToExitBBsMap</a>; </div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a6d29487d00d66dadae7b4b79f9bf50e9"> 291</a></span>&#160; BBToCondMap <a class="code" href="classSVF_1_1SaberCondAllocator.html#a6d29487d00d66dadae7b4b79f9bf50e9">bbToCondMap</a>; </div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a4ac9b5ec6bfd7a7b468cb13a5e8803e0"> 292</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* <a class="code" href="classSVF_1_1SaberCondAllocator.html#a4ac9b5ec6bfd7a7b468cb13a5e8803e0">curEvalSVFGNode</a>{}; </div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#aee401aa2c7884888bbd26544bcd92881"> 293</a></span>&#160; IndexToTermInstMap <a class="code" href="classSVF_1_1SaberCondAllocator.html#aee401aa2c7884888bbd26544bcd92881">idToTermInstMap</a>; </div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a4267ed81d5100d49581a4216f46e660c"> 294</a></span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a4267ed81d5100d49581a4216f46e660c">negConds</a>; </div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#afd6cf17070e3629ced1ac36b8e2b0bbb"> 295</a></span>&#160; std::vector&lt;Condition&gt; <a class="code" href="classSVF_1_1SaberCondAllocator.html#afd6cf17070e3629ced1ac36b8e2b0bbb">conditionVec</a>; </div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a76fad4d58db94d7c572876ba6f1adf83"> 296</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SaberCondAllocator.html#a76fad4d58db94d7c572876ba6f1adf83">totalCondNum</a>; </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646"> 299</a></span>&#160; BBCondMap <a class="code" href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">bbConds</a>; </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;};</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* PATHALLOCATOR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a009db4214557cbe2ff53b81f0519fbcd"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a009db4214557cbe2ff53b81f0519fbcd">SVF::SaberCondAllocator::~SaberCondAllocator</a></div><div class="ttdeci">virtual ~SaberCondAllocator()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00066">SaberCondAllocator.h:66</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a6d29487d00d66dadae7b4b79f9bf50e9"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a6d29487d00d66dadae7b4b79f9bf50e9">SVF::SaberCondAllocator::bbToCondMap</a></div><div class="ttdeci">BBToCondMap bbToCondMap</div><div class="ttdoc">map a basic block to its path condition starting from root </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00291">SaberCondAllocator.h:291</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_aee401aa2c7884888bbd26544bcd92881"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#aee401aa2c7884888bbd26544bcd92881">SVF::SaberCondAllocator::idToTermInstMap</a></div><div class="ttdeci">IndexToTermInstMap idToTermInstMap</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00293">SaberCondAllocator.h:293</a></div></div>
72
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a25f4b168340871cf5641fb79d008685a"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a25f4b168340871cf5641fb79d008685a">SVF::SaberCondAllocator::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="SaberCondAllocator_8cpp_source.html#l00478">SaberCondAllocator.cpp:478</a></div></div>
72
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a25f4b168340871cf5641fb79d008685a"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a25f4b168340871cf5641fb79d008685a">SVF::SaberCondAllocator::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="SaberCondAllocator_8cpp_source.html#l00476">SaberCondAllocator.cpp:476</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a91994fe743ecec3477da5d303c8f004b"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a91994fe743ecec3477da5d303c8f004b">SVF::SaberCondAllocator::getCondInst</a></div><div class="ttdeci">const Instruction * getCondInst(u32_t id) const</div><div class="ttdoc">Get/Set instruction based on Z3 expression id. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00124">SaberCondAllocator.h:124</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a76fad4d58db94d7c572876ba6f1adf83"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a76fad4d58db94d7c572876ba6f1adf83">SVF::SaberCondAllocator::totalCondNum</a></div><div class="ttdeci">static u32_t totalCondNum</div><div class="ttdoc">vector storing z3expression </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00296">SaberCondAllocator.h:296</a></div></div>
75
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a8926da3e50d32bd1fcf0a011417d445c"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a8926da3e50d32bd1fcf0a011417d445c">SVF::SaberCondAllocator::getEvalBrCond</a></div><div class="ttdeci">Condition getEvalBrCond(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Get a condition, evaluate the value for conditions if necessary (e.g., testNull like express) ...</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00159">SaberCondAllocator.cpp:159</a></div></div>
75
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a8926da3e50d32bd1fcf0a011417d445c"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a8926da3e50d32bd1fcf0a011417d445c">SVF::SaberCondAllocator::getEvalBrCond</a></div><div class="ttdeci">Condition getEvalBrCond(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Get a condition, evaluate the value for conditions if necessary (e.g., testNull like express) ...</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00157">SaberCondAllocator.cpp:157</a></div></div>
76
76
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a49a7146006e286c6ffb5668687a5a92f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a49a7146006e286c6ffb5668687a5a92f">SVF::SaberCondAllocator::getCFCond</a></div><div class="ttdeci">Condition getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00218">SaberCondAllocator.h:218</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#l00071">BasicTypes.h:71</a></div></div>
78
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_aac1988c13622c0755d491f0bc2b834df"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#aac1988c13622c0755d491f0bc2b834df">SVF::SaberCondAllocator::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="SaberCondAllocator_8cpp_source.html#l00217">SaberCondAllocator.cpp:217</a></div></div>
78
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_aac1988c13622c0755d491f0bc2b834df"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#aac1988c13622c0755d491f0bc2b834df">SVF::SaberCondAllocator::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="SaberCondAllocator_8cpp_source.html#l00215">SaberCondAllocator.cpp:215</a></div></div>
79
79
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab4eba98cf7306c89e40975c766d5bf65"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab4eba98cf7306c89e40975c766d5bf65">SVF::SaberCondAllocator::Condition</a></div><div class="ttdeci">Z3Expr Condition</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00052">SaberCondAllocator.h:52</a></div></div>
80
80
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_acf93725fa53eda82ea30b8efa1940016"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#acf93725fa53eda82ea30b8efa1940016">SVF::SaberCondAllocator::getDT</a></div><div class="ttdeci">DominatorTree * getDT(const Function *fun)</div><div class="ttdoc">Get dominators. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00144">SaberCondAllocator.h:144</a></div></div>
81
81
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9b52da69d79746765d0c12a5ce1b08f4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">SVF::SaberCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00099">SaberCondAllocator.h:99</a></div></div>
82
82
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ae717f565b947a72651c0de19bf6bcca0"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae717f565b947a72651c0de19bf6bcca0">SVF::SaberCondAllocator::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="SaberCondAllocator_8h_source.html#l00175">SaberCondAllocator.h:175</a></div></div>
83
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a389fd522c1de5b4feed34f29b9709d03"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a389fd522c1de5b4feed34f29b9709d03">SVF::SaberCondAllocator::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="SaberCondAllocator_8cpp_source.html#l00566">SaberCondAllocator.cpp:566</a></div></div>
83
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a389fd522c1de5b4feed34f29b9709d03"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a389fd522c1de5b4feed34f29b9709d03">SVF::SaberCondAllocator::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="SaberCondAllocator_8cpp_source.html#l00564">SaberCondAllocator.cpp:564</a></div></div>
84
84
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a5406e73b860c419143035ee3774e7c1c"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a5406e73b860c419143035ee3774e7c1c">SVF::SaberCondAllocator::clearCFCond</a></div><div class="ttdeci">void clearCFCond()</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00170">SaberCondAllocator.h:170</a></div></div>
85
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a4b1625597c6b331dfe0e8ceef95731b5"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a4b1625597c6b331dfe0e8ceef95731b5">SVF::SaberCondAllocator::SaberCondAllocator</a></div><div class="ttdeci">SaberCondAllocator()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00052">SaberCondAllocator.cpp:52</a></div></div>
85
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a4b1625597c6b331dfe0e8ceef95731b5"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a4b1625597c6b331dfe0e8ceef95731b5">SVF::SaberCondAllocator::SaberCondAllocator</a></div><div class="ttdeci">SaberCondAllocator()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00050">SaberCondAllocator.cpp:50</a></div></div>
86
86
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a4267ed81d5100d49581a4216f46e660c"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a4267ed81d5100d49581a4216f46e660c">SVF::SaberCondAllocator::negConds</a></div><div class="ttdeci">NodeBS negConds</div><div class="ttdoc">key: z3 expression id, value: instruction </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00294">SaberCondAllocator.h:294</a></div></div>
87
87
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a44932e57515b7ddcc192796679dd69be"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a44932e57515b7ddcc192796679dd69be">SVF::SaberCondAllocator::getLoopInfo</a></div><div class="ttdeci">LoopInfo * getLoopInfo(const Function *f)</div><div class="ttdoc">Get LoopInfo. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00154">SaberCondAllocator.h:154</a></div></div>
88
- <div class="ttc" id="classSVF_1_1Z3Expr_html_ac063ed06c3495b790c02fe57c781b34e"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#ac063ed06c3495b790c02fe57c781b34e">SVF::Z3Expr::OR</a></div><div class="ttdeci">static Z3Expr OR(const Z3Expr &amp;lhs, const Z3Expr &amp;rhs)</div><div class="ttdoc">compute OR, used for branch condition </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8cpp_source.html#l00116">Z3Expr.cpp:116</a></div></div>
88
+ <div class="ttc" id="classSVF_1_1Z3Expr_html_ac063ed06c3495b790c02fe57c781b34e"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#ac063ed06c3495b790c02fe57c781b34e">SVF::Z3Expr::OR</a></div><div class="ttdeci">static Z3Expr OR(const Z3Expr &amp;lhs, const Z3Expr &amp;rhs)</div><div class="ttdoc">compute OR, used for branch condition </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8cpp_source.html#l00130">Z3Expr.cpp:130</a></div></div>
89
89
  <div class="ttc" id="namespaceSVF_html_a77e088bfe47c0b0ddcbbe0693dec6fe5"><div class="ttname"><a href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">SVF::LoopInfo</a></div><div class="ttdeci">llvm::LoopInfo LoopInfo</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00080">BasicTypes.h:80</a></div></div>
90
- <div class="ttc" id="classSVF_1_1Z3Expr_html_a56ba65487cc91248259e29d3ebb5bdb0"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a56ba65487cc91248259e29d3ebb5bdb0">SVF::Z3Expr::dumpStr</a></div><div class="ttdeci">static std::string dumpStr(const Z3Expr &amp;z3Expr)</div><div class="ttdoc">output Z3 expression as a string </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8cpp_source.html#l00154">Z3Expr.cpp:154</a></div></div>
90
+ <div class="ttc" id="classSVF_1_1Z3Expr_html_a56ba65487cc91248259e29d3ebb5bdb0"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a56ba65487cc91248259e29d3ebb5bdb0">SVF::Z3Expr::dumpStr</a></div><div class="ttdeci">static std::string dumpStr(const Z3Expr &amp;z3Expr)</div><div class="ttdoc">output Z3 expression as a string </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8cpp_source.html#l00168">Z3Expr.cpp:168</a></div></div>
91
91
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_aa330cc6a1a3c38601ebeb325ffd87221"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#aa330cc6a1a3c38601ebeb325ffd87221">SVF::SaberCondAllocator::CondPosMap</a></div><div class="ttdeci">Map&lt; u32_t, Condition &gt; CondPosMap</div><div class="ttdoc">id to instruction map for z3 </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00054">SaberCondAllocator.h:54</a></div></div>
92
92
  <div class="ttc" id="classSVF_1_1SparseBitVector_html_a112f2ede1240c95f9fe810f2882fab80"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">SVF::SparseBitVector::test</a></div><div class="ttdeci">bool test(unsigned Idx) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00706">SparseBitVector.h:706</a></div></div>
93
- <div class="ttc" id="classSVF_1_1Z3Expr_html_a9a545e516e6dee37310ad02481a84356"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a9a545e516e6dee37310ad02481a84356">SVF::Z3Expr::NEG</a></div><div class="ttdeci">static Z3Expr NEG(const Z3Expr &amp;z3Expr)</div><div class="ttdoc">compute NEG </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00291">Z3Expr.h:291</a></div></div>
94
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a79d103da4190c9e868c2446a4bc62f44"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a79d103da4190c9e868c2446a4bc62f44">SVF::SaberCondAllocator::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="SaberCondAllocator_8cpp_source.html#l00457">SaberCondAllocator.cpp:457</a></div></div>
93
+ <div class="ttc" id="classSVF_1_1Z3Expr_html_a9a545e516e6dee37310ad02481a84356"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a9a545e516e6dee37310ad02481a84356">SVF::Z3Expr::NEG</a></div><div class="ttdeci">static Z3Expr NEG(const Z3Expr &amp;z3Expr)</div><div class="ttdoc">compute NEG </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00294">Z3Expr.h:294</a></div></div>
94
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a79d103da4190c9e868c2446a4bc62f44"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a79d103da4190c9e868c2446a4bc62f44">SVF::SaberCondAllocator::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="SaberCondAllocator_8cpp_source.html#l00455">SaberCondAllocator.cpp:455</a></div></div>
95
95
  <div class="ttc" id="classSVF_1_1Z3Expr_html"><div class="ttname"><a href="classSVF_1_1Z3Expr.html">SVF::Z3Expr</a></div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00038">Z3Expr.h:38</a></div></div>
96
96
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ac9a70a1f69abe85197d95945b6c4ed97"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ac9a70a1f69abe85197d95945b6c4ed97">SVF::SaberCondAllocator::cfInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder cfInfoBuilder</div><div class="ttdoc">map a function to its loop info </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00289">SaberCondAllocator.h:289</a></div></div>
97
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a7f5f1fb437153d2a797cf509b8f97c7f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a7f5f1fb437153d2a797cf509b8f97c7f">SVF::SaberCondAllocator::isBBCallsProgExit</a></div><div class="ttdeci">bool isBBCallsProgExit(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00434">SaberCondAllocator.cpp:434</a></div></div>
97
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a7f5f1fb437153d2a797cf509b8f97c7f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a7f5f1fb437153d2a797cf509b8f97c7f">SVF::SaberCondAllocator::isBBCallsProgExit</a></div><div class="ttdeci">bool isBBCallsProgExit(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00432">SaberCondAllocator.cpp:432</a></div></div>
98
98
  <div class="ttc" id="SVFG_8h_html"><div class="ttname"><a href="SVFG_8h.html">SVFG.h</a></div></div>
99
99
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a7ad6d5346ff534f59a332f1194e27d93"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a7ad6d5346ff534f59a332f1194e27d93">SVF::SaberCondAllocator::IndexToTermInstMap</a></div><div class="ttdeci">Map&lt; u32_t, const Instruction * &gt; IndexToTermInstMap</div><div class="ttdoc">z3 condition </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00053">SaberCondAllocator.h:53</a></div></div>
100
100
  <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>
101
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_adcb9b49512179e016765b50277fc058f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#adcb9b49512179e016765b50277fc058f">SVF::SaberCondAllocator::collectBBCallingProgExit</a></div><div class="ttdeci">void collectBBCallingProgExit(const BasicBlock &amp;bb)</div><div class="ttdoc">Collect basic block contains program exit function call. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00417">SaberCondAllocator.cpp:417</a></div></div>
101
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_adcb9b49512179e016765b50277fc058f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#adcb9b49512179e016765b50277fc058f">SVF::SaberCondAllocator::collectBBCallingProgExit</a></div><div class="ttdeci">void collectBBCallingProgExit(const BasicBlock &amp;bb)</div><div class="ttdoc">Collect basic block contains program exit function call. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00415">SaberCondAllocator.cpp:415</a></div></div>
102
102
  <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>
103
103
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ae7aea2293ca15894af66a98649d25f5b"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae7aea2293ca15894af66a98649d25f5b">SVF::SaberCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, const Condition &amp;cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00208">SaberCondAllocator.h:208</a></div></div>
104
104
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a80445dc28d9a01c2e0a656f1e2f2a51f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a80445dc28d9a01c2e0a656f1e2f2a51f">SVF::SaberCondAllocator::BBCondMap</a></div><div class="ttdeci">Map&lt; const BasicBlock *, CondPosMap &gt; BBCondMap</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00055">SaberCondAllocator.h:55</a></div></div>
@@ -107,13 +107,13 @@ $(function() {
107
107
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
108
108
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a4ac9b5ec6bfd7a7b468cb13a5e8803e0"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a4ac9b5ec6bfd7a7b468cb13a5e8803e0">SVF::SaberCondAllocator::curEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * curEvalSVFGNode</div><div class="ttdoc">current llvm value to evaluate branch condition when computing guards </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00292">SaberCondAllocator.h:292</a></div></div>
109
109
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_afd6cf17070e3629ced1ac36b8e2b0bbb"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#afd6cf17070e3629ced1ac36b8e2b0bbb">SVF::SaberCondAllocator::conditionVec</a></div><div class="ttdeci">std::vector&lt; Condition &gt; conditionVec</div><div class="ttdoc">bit vector for distinguish neg </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00295">SaberCondAllocator.h:295</a></div></div>
110
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a94ef09be5ef07f4d5222059b99619bc2"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">SVF::SaberCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks) </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00508">SaberCondAllocator.cpp:508</a></div></div>
111
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a61a5b10b610d56f7585cf709eb2b2d5b"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a61a5b10b610d56f7585cf709eb2b2d5b">SVF::SaberCondAllocator::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="SaberCondAllocator_8cpp_source.html#l00341">SaberCondAllocator.cpp:341</a></div></div>
110
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a94ef09be5ef07f4d5222059b99619bc2"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">SVF::SaberCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks) </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00506">SaberCondAllocator.cpp:506</a></div></div>
111
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a61a5b10b610d56f7585cf709eb2b2d5b"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a61a5b10b610d56f7585cf709eb2b2d5b">SVF::SaberCondAllocator::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="SaberCondAllocator_8cpp_source.html#l00339">SaberCondAllocator.cpp:339</a></div></div>
112
112
  <div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_a00e3339dab62325354e8ecd8251da0f1"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#a00e3339dab62325354e8ecd8251da0f1">SVF::PTACFInfoBuilder::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *f)</div><div class="ttdoc">Get post dominator tree of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00092">DataFlowUtil.cpp:92</a></div></div>
113
113
  <div class="ttc" id="namespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00110">BasicTypes.h:110</a></div></div>
114
114
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ad1620cc7482aeb464b53cfce64e17cc3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad1620cc7482aeb464b53cfce64e17cc3">SVF::SaberCondAllocator::funToExitBBsMap</a></div><div class="ttdeci">FunToExitBBsMap funToExitBBsMap</div><div class="ttdoc">map a function to all its basic blocks calling program exit </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00290">SaberCondAllocator.h:290</a></div></div>
115
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_aa9027574586fd4fbb12039f595ecec71"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#aa9027574586fd4fbb12039f595ecec71">SVF::SaberCondAllocator::isEquivalentBranchCond</a></div><div class="ttdeci">bool isEquivalentBranchCond(const Condition &amp;lhs, const Condition &amp;rhs) const</div><div class="ttdoc">Whether lhs and rhs are equivalent branch conditions. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00606">SaberCondAllocator.cpp:606</a></div></div>
116
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a2b1c2e7764631d40a5b8d0ce2cc73442"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a2b1c2e7764631d40a5b8d0ce2cc73442">SVF::SaberCondAllocator::getBranchCond</a></div><div class="ttdeci">Condition getBranchCond(const BasicBlock *bb, const BasicBlock *succ) const</div><div class="ttdoc">Get branch condition. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00144">SaberCondAllocator.cpp:144</a></div></div>
115
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_aa9027574586fd4fbb12039f595ecec71"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#aa9027574586fd4fbb12039f595ecec71">SVF::SaberCondAllocator::isEquivalentBranchCond</a></div><div class="ttdeci">bool isEquivalentBranchCond(const Condition &amp;lhs, const Condition &amp;rhs) const</div><div class="ttdoc">Whether lhs and rhs are equivalent branch conditions. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00604">SaberCondAllocator.cpp:604</a></div></div>
116
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a2b1c2e7764631d40a5b8d0ce2cc73442"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a2b1c2e7764631d40a5b8d0ce2cc73442">SVF::SaberCondAllocator::getBranchCond</a></div><div class="ttdeci">Condition getBranchCond(const BasicBlock *bb, const BasicBlock *succ) const</div><div class="ttdoc">Get branch condition. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00142">SaberCondAllocator.cpp:142</a></div></div>
117
117
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a620d53b9af8dd30523c478f4e9655817"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a620d53b9af8dd30523c478f4e9655817">SVF::SaberCondAllocator::condNeg</a></div><div class="ttdeci">Condition condNeg(const Condition &amp;cond)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00091">SaberCondAllocator.h:91</a></div></div>
118
118
  <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00105">SVFBasicTypes.h:105</a></div></div>
119
119
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a5c129ebf5ae55eb3af8bd670c921a646"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a5c129ebf5ae55eb3af8bd670c921a646">SVF::SaberCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">a counter for fresh condition </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00299">SaberCondAllocator.h:299</a></div></div>
@@ -125,55 +125,55 @@ $(function() {
125
125
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
126
126
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a79682a4e4da23d0eaf0066a91c2f7bd4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">SVF::SaberCondAllocator::condAnd</a></div><div class="ttdeci">Condition condAnd(const Condition &amp;lhs, const Condition &amp;rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00083">SaberCondAllocator.h:83</a></div></div>
127
127
  <div class="ttc" id="classSVF_1_1BranchStmt_html"><div class="ttname"><a href="classSVF_1_1BranchStmt.html">SVF::BranchStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00938">SVFStatements.h:938</a></div></div>
128
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a7a7fbd17d13c81a9b259641d6e1cc857"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a7a7fbd17d13c81a9b259641d6e1cc857">SVF::SaberCondAllocator::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="SaberCondAllocator_8cpp_source.html#l00381">SaberCondAllocator.cpp:381</a></div></div>
128
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a7a7fbd17d13c81a9b259641d6e1cc857"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a7a7fbd17d13c81a9b259641d6e1cc857">SVF::SaberCondAllocator::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="SaberCondAllocator_8cpp_source.html#l00379">SaberCondAllocator.cpp:379</a></div></div>
129
129
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a52ec71159bc70b450895990dfebdedac"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a52ec71159bc70b450895990dfebdedac">SVF::SaberCondAllocator::CFWorkList</a></div><div class="ttdeci">FIFOWorkList&lt; const BasicBlock * &gt; CFWorkList</div><div class="ttdoc">worklist for control-flow guard computation </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00059">SaberCondAllocator.h:59</a></div></div>
130
130
  <div class="ttc" id="Z3Expr_8h_html"><div class="ttname"><a href="Z3Expr_8h.html">Z3Expr.h</a></div></div>
131
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a4c3945abc15c6caeb9d026f47e78a340"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a4c3945abc15c6caeb9d026f47e78a340">SVF::SaberCondAllocator::evaluateLoopExitBranch</a></div><div class="ttdeci">Condition evaluateLoopExitBranch(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Evaluate loop exit branch. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00261">SaberCondAllocator.cpp:261</a></div></div>
131
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a4c3945abc15c6caeb9d026f47e78a340"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a4c3945abc15c6caeb9d026f47e78a340">SVF::SaberCondAllocator::evaluateLoopExitBranch</a></div><div class="ttdeci">Condition evaluateLoopExitBranch(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Evaluate loop exit branch. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00259">SaberCondAllocator.cpp:259</a></div></div>
132
132
  <div class="ttc" id="namespaceSVF_html_aecbb42b8e9d17fa0189c50dda9fd5fdd"><div class="ttname"><a href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">SVF::DominatorTree</a></div><div class="ttdeci">llvm::DominatorTree DominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00109">BasicTypes.h:109</a></div></div>
133
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a3934d1ebdc728a89db9cec42436004c4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a3934d1ebdc728a89db9cec42436004c4">SVF::SaberCondAllocator::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="SaberCondAllocator_8cpp_source.html#l00495">SaberCondAllocator.cpp:495</a></div></div>
133
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a3934d1ebdc728a89db9cec42436004c4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a3934d1ebdc728a89db9cec42436004c4">SVF::SaberCondAllocator::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="SaberCondAllocator_8cpp_source.html#l00493">SaberCondAllocator.cpp:493</a></div></div>
134
134
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a6bd67514e0ea9a2704ae83a38c9f2592"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a6bd67514e0ea9a2704ae83a38c9f2592">SVF::SaberCondAllocator::getICFG</a></div><div class="ttdeci">ICFG * getICFG() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00201">SaberCondAllocator.h:201</a></div></div>
135
135
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a246da0431273c312800459aa85d80a86"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a246da0431273c312800459aa85d80a86">SVF::SaberCondAllocator::isAllPathReachable</a></div><div class="ttdeci">bool isAllPathReachable(Condition &amp;condition)</div><div class="ttdoc">whether condition is satisfiable for all possible boolean guards </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00193">SaberCondAllocator.h:193</a></div></div>
136
136
  <div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_afb3864bae4ac95c7d3b731634c1abdab"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#afb3864bae4ac95c7d3b731634c1abdab">SVF::PTACFInfoBuilder::getDT</a></div><div class="ttdeci">DominatorTree * getDT(const Function *f)</div><div class="ttdoc">Get dominator tree of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00111">DataFlowUtil.cpp:111</a></div></div>
137
- <div class="ttc" id="classSVF_1_1Z3Expr_html_af541505af93ccebf57543793658cf495"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#af541505af93ccebf57543793658cf495">SVF::Z3Expr::getFalseCond</a></div><div class="ttdeci">static Z3Expr getFalseCond()</div><div class="ttdoc">Return the unique false condition. </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00285">Z3Expr.h:285</a></div></div>
138
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9f43fe1cacf419f03276d66c3a54fe77"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9f43fe1cacf419f03276d66c3a54fe77">SVF::SaberCondAllocator::extractSubConds</a></div><div class="ttdeci">void extractSubConds(const Condition &amp;condition, NodeBS &amp;support) const</div><div class="ttdoc">extract subexpression from a Z3 expression </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00629">SaberCondAllocator.cpp:629</a></div></div>
137
+ <div class="ttc" id="classSVF_1_1Z3Expr_html_af541505af93ccebf57543793658cf495"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#af541505af93ccebf57543793658cf495">SVF::Z3Expr::getFalseCond</a></div><div class="ttdeci">static Z3Expr getFalseCond()</div><div class="ttdoc">Return the unique false condition. </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00288">Z3Expr.h:288</a></div></div>
138
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9f43fe1cacf419f03276d66c3a54fe77"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9f43fe1cacf419f03276d66c3a54fe77">SVF::SaberCondAllocator::extractSubConds</a></div><div class="ttdeci">void extractSubConds(const Condition &amp;condition, NodeBS &amp;support) const</div><div class="ttdoc">extract subexpression from a Z3 expression </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00627">SaberCondAllocator.cpp:627</a></div></div>
139
139
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ae7ba47d494686df48a2a7e86b1f386b4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae7ba47d494686df48a2a7e86b1f386b4">SVF::SaberCondAllocator::setCondInst</a></div><div class="ttdeci">void setCondInst(const Condition &amp;condition, const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00131">SaberCondAllocator.h:131</a></div></div>
140
140
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a100c1962eac6d7af420defc827a025ed"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a100c1962eac6d7af420defc827a025ed">SVF::SaberCondAllocator::dumpCond</a></div><div class="ttdeci">std::string dumpCond(const Condition &amp;cond) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00111">SaberCondAllocator.h:111</a></div></div>
141
141
  <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#l00047">ICFG.h:47</a></div></div>
142
142
  <div class="ttc" id="DataFlowUtil_8h_html"><div class="ttname"><a href="DataFlowUtil_8h.html">DataFlowUtil.h</a></div></div>
143
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a7c132cc105a97a5dbf0c9b9d16b4b72a"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a7c132cc105a97a5dbf0c9b9d16b4b72a">SVF::SaberCondAllocator::isSatisfiable</a></div><div class="ttdeci">bool isSatisfiable(const Condition &amp;condition)</div><div class="ttdoc">whether condition is satisfiable </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00617">SaberCondAllocator.cpp:617</a></div></div>
144
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab254027728c09a23cff8825b335da1c8"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab254027728c09a23cff8825b335da1c8">SVF::SaberCondAllocator::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="SaberCondAllocator_8cpp_source.html#l00346">SaberCondAllocator.cpp:346</a></div></div>
143
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a7c132cc105a97a5dbf0c9b9d16b4b72a"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a7c132cc105a97a5dbf0c9b9d16b4b72a">SVF::SaberCondAllocator::isSatisfiable</a></div><div class="ttdeci">bool isSatisfiable(const Condition &amp;condition)</div><div class="ttdoc">whether condition is satisfiable </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00615">SaberCondAllocator.cpp:615</a></div></div>
144
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab254027728c09a23cff8825b335da1c8"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab254027728c09a23cff8825b335da1c8">SVF::SaberCondAllocator::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="SaberCondAllocator_8cpp_source.html#l00344">SaberCondAllocator.cpp:344</a></div></div>
145
145
  <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>
146
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a4d334bb764e2f3feb5da892e0c21b8ed"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a4d334bb764e2f3feb5da892e0c21b8ed">SVF::SaberCondAllocator::evaluateBranchCond</a></div><div class="ttdeci">Condition evaluateBranchCond(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Evaluate branch conditions. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00301">SaberCondAllocator.cpp:301</a></div></div>
146
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a4d334bb764e2f3feb5da892e0c21b8ed"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a4d334bb764e2f3feb5da892e0c21b8ed">SVF::SaberCondAllocator::evaluateBranchCond</a></div><div class="ttdeci">Condition evaluateBranchCond(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Evaluate branch conditions. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00299">SaberCondAllocator.cpp:299</a></div></div>
147
147
  <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#l00123">DataFlowUtil.h:123</a></div></div>
148
- <div class="ttc" id="classSVF_1_1Z3Expr_html_a4f56bd6d3a31df94e19af9ce6e685fea"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a4f56bd6d3a31df94e19af9ce6e685fea">SVF::Z3Expr::AND</a></div><div class="ttdeci">static Z3Expr AND(const Z3Expr &amp;lhs, const Z3Expr &amp;rhs)</div><div class="ttdoc">compute AND, used for branch condition </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8cpp_source.html#l00078">Z3Expr.cpp:78</a></div></div>
148
+ <div class="ttc" id="classSVF_1_1Z3Expr_html_a4f56bd6d3a31df94e19af9ce6e685fea"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#a4f56bd6d3a31df94e19af9ce6e685fea">SVF::Z3Expr::AND</a></div><div class="ttdeci">static Z3Expr AND(const Z3Expr &amp;lhs, const Z3Expr &amp;rhs)</div><div class="ttdoc">compute AND, used for branch condition </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8cpp_source.html#l00092">Z3Expr.cpp:92</a></div></div>
149
149
  <div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00460">SparseBitVector.h:460</a></div></div>
150
150
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a22b71f885c07fff3c35006337ec41ee7"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a22b71f885c07fff3c35006337ec41ee7">SVF::SaberCondAllocator::setNegCondInst</a></div><div class="ttdeci">void setNegCondInst(const Condition &amp;condition, const Instruction *inst)</div><div class="ttdoc">mark neg Z3 expression </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00231">SaberCondAllocator.h:231</a></div></div>
151
151
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a9aec07a64b97d546cfa0efe10f888b6a"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9aec07a64b97d546cfa0efe10f888b6a">SVF::SaberCondAllocator::getCurEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * getCurEvalSVFGNode() const</div><div class="ttdoc">Get current value for branch condition evaluation. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00180">SaberCondAllocator.h:180</a></div></div>
152
152
  <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="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
153
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ad049eeed763a5f18267b9288f728b070"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad049eeed763a5f18267b9288f728b070">SVF::SaberCondAllocator::evaluateTestNullLikeExpr</a></div><div class="ttdeci">Condition evaluateTestNullLikeExpr(const BranchStmt *branchStmt, const BasicBlock *succ)</div><div class="ttdoc">Return branch condition after evaluating test null like expression. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00188">SaberCondAllocator.cpp:188</a></div></div>
153
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ad049eeed763a5f18267b9288f728b070"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad049eeed763a5f18267b9288f728b070">SVF::SaberCondAllocator::evaluateTestNullLikeExpr</a></div><div class="ttdeci">Condition evaluateTestNullLikeExpr(const BranchStmt *branchStmt, const BasicBlock *succ)</div><div class="ttdoc">Return branch condition after evaluating test null like expression. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00186">SaberCondAllocator.cpp:186</a></div></div>
154
154
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ad19b88bca27044d0d9a6999c88afde97"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad19b88bca27044d0d9a6999c88afde97">SVF::SaberCondAllocator::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *fun)</div><div class="ttdoc">Get Postdominators. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00149">SaberCondAllocator.h:149</a></div></div>
155
155
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a59e01031d81c2e06bbc6577036b51732"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a59e01031d81c2e06bbc6577036b51732">SVF::SaberCondAllocator::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Release memory. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00280">SaberCondAllocator.h:280</a></div></div>
156
156
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ac0060d6660cb022e599dbcb9eabc5aaa"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ac0060d6660cb022e599dbcb9eabc5aaa">SVF::SaberCondAllocator::getMemUsage</a></div><div class="ttdeci">std::string getMemUsage()</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00071">SaberCondAllocator.h:71</a></div></div>
157
157
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00095">SaberCondAllocator.h:95</a></div></div>
158
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a0244cfcb0f23614e8f870383a6bd44b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a0244cfcb0f23614e8f870383a6bd44b3">SVF::SaberCondAllocator::isTestNullExpr</a></div><div class="ttdeci">bool isTestNullExpr(const Value *test) const</div><div class="ttdoc">Return true if this is a test null expression. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00351">SaberCondAllocator.cpp:351</a></div></div>
159
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a8ffebb3dec9884434be8e432ab1f0063"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a8ffebb3dec9884434be8e432ab1f0063">SVF::SaberCondAllocator::isTestNotNullExpr</a></div><div class="ttdeci">bool isTestNotNullExpr(const Value *test) const</div><div class="ttdoc">Return true if this is a test not null expression. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00360">SaberCondAllocator.cpp:360</a></div></div>
158
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a0244cfcb0f23614e8f870383a6bd44b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a0244cfcb0f23614e8f870383a6bd44b3">SVF::SaberCondAllocator::isTestNullExpr</a></div><div class="ttdeci">bool isTestNullExpr(const Value *test) const</div><div class="ttdoc">Return true if this is a test null expression. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00349">SaberCondAllocator.cpp:349</a></div></div>
159
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a8ffebb3dec9884434be8e432ab1f0063"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a8ffebb3dec9884434be8e432ab1f0063">SVF::SaberCondAllocator::isTestNotNullExpr</a></div><div class="ttdeci">bool isTestNotNullExpr(const Value *test) const</div><div class="ttdoc">Return true if this is a test not null expression. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00358">SaberCondAllocator.cpp:358</a></div></div>
160
160
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a634376c35eceaf4dc995a71484d9bc7c"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a634376c35eceaf4dc995a71484d9bc7c">SVF::SaberCondAllocator::getCondNum</a></div><div class="ttdeci">u32_t getCondNum()</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00075">SaberCondAllocator.h:75</a></div></div>
161
161
  <div class="ttc" id="classSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00745">SparseBitVector.h:745</a></div></div>
162
162
  <div class="ttc" id="SVFModule_8h_html"><div class="ttname"><a href="SVFModule_8h.html">SVFModule.h</a></div></div>
163
163
  <div class="ttc" id="WorkList_8h_html"><div class="ttname"><a href="WorkList_8h.html">WorkList.h</a></div></div>
164
164
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_ae4dea0585e5fad34cbfc10fa535b1426"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae4dea0585e5fad34cbfc10fa535b1426">SVF::SaberCondAllocator::BasicBlockSet</a></div><div class="ttdeci">Set&lt; const BasicBlock * &gt; BasicBlockSet</div><div class="ttdoc">map bb to a Condition </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00056">SaberCondAllocator.h:56</a></div></div>
165
165
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a43782d54ecac8b538c4f8484e8b32dab"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a43782d54ecac8b538c4f8484e8b32dab">SVF::SaberCondAllocator::BBToCondMap</a></div><div class="ttdeci">Map&lt; const BasicBlock *, Condition &gt; 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="SaberCondAllocator_8h_source.html#l00058">SaberCondAllocator.h:58</a></div></div>
166
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a0014c59d7f3c7bd0845548aea05a9a5b"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a0014c59d7f3c7bd0845548aea05a9a5b">SVF::SaberCondAllocator::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="SaberCondAllocator_8cpp_source.html#l00060">SaberCondAllocator.cpp:60</a></div></div>
167
- <div class="ttc" id="classSVF_1_1Z3Expr_html_aaa0c9122f34208235a2d830432665752"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#aaa0c9122f34208235a2d830432665752">SVF::Z3Expr::getTrueCond</a></div><div class="ttdeci">static Z3Expr getTrueCond()</div><div class="ttdoc">Return the unique true condition. </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00278">Z3Expr.h:278</a></div></div>
168
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a5a39b2efcec1c77e7f06dda7b64c9765"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a5a39b2efcec1c77e7f06dda7b64c9765">SVF::SaberCondAllocator::newCond</a></div><div class="ttdeci">Condition newCond(const Instruction *inst)</div><div class="ttdoc">Allocate a new condition. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00593">SaberCondAllocator.cpp:593</a></div></div>
169
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a6e1f93e7f0a5f9f78aa199982b698f9f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a6e1f93e7f0a5f9f78aa199982b698f9f">SVF::SaberCondAllocator::allocateForBB</a></div><div class="ttdeci">virtual void allocateForBB(const BasicBlock &amp;bb)</div><div class="ttdoc">Allocate path condition for every basic block. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00088">SaberCondAllocator.cpp:88</a></div></div>
166
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a0014c59d7f3c7bd0845548aea05a9a5b"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a0014c59d7f3c7bd0845548aea05a9a5b">SVF::SaberCondAllocator::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="SaberCondAllocator_8cpp_source.html#l00058">SaberCondAllocator.cpp:58</a></div></div>
167
+ <div class="ttc" id="classSVF_1_1Z3Expr_html_aaa0c9122f34208235a2d830432665752"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#aaa0c9122f34208235a2d830432665752">SVF::Z3Expr::getTrueCond</a></div><div class="ttdeci">static Z3Expr getTrueCond()</div><div class="ttdoc">Return the unique true condition. </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00281">Z3Expr.h:281</a></div></div>
168
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a5a39b2efcec1c77e7f06dda7b64c9765"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a5a39b2efcec1c77e7f06dda7b64c9765">SVF::SaberCondAllocator::newCond</a></div><div class="ttdeci">Condition newCond(const Instruction *inst)</div><div class="ttdoc">Allocate a new condition. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00591">SaberCondAllocator.cpp:591</a></div></div>
169
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a6e1f93e7f0a5f9f78aa199982b698f9f"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a6e1f93e7f0a5f9f78aa199982b698f9f">SVF::SaberCondAllocator::allocateForBB</a></div><div class="ttdeci">virtual void allocateForBB(const BasicBlock &amp;bb)</div><div class="ttdoc">Allocate path condition for every basic block. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00086">SaberCondAllocator.cpp:86</a></div></div>
170
170
  <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
171
  <div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
172
172
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
173
- <div class="ttc" id="classSVF_1_1Z3Expr_html_acdb4fbb53f19bac033e79cfe96ce82ca"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#acdb4fbb53f19bac033e79cfe96ce82ca">SVF::Z3Expr::id</a></div><div class="ttdeci">u32_t id() const</div><div class="ttdoc">get id </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00101">Z3Expr.h:101</a></div></div>
173
+ <div class="ttc" id="classSVF_1_1Z3Expr_html_acdb4fbb53f19bac033e79cfe96ce82ca"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#acdb4fbb53f19bac033e79cfe96ce82ca">SVF::Z3Expr::id</a></div><div class="ttdeci">u32_t id() const</div><div class="ttdoc">get id </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00104">Z3Expr.h:104</a></div></div>
174
174
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html">SVF::SaberCondAllocator</a></div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00047">SaberCondAllocator.h:47</a></div></div>
175
175
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a87205db039579f05214507c48d6befec"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a87205db039579f05214507c48d6befec">SVF::SaberCondAllocator::exactCondElem</a></div><div class="ttdeci">NodeBS exactCondElem(const Condition &amp;cond)</div><div class="ttdoc">Iterator every element of the condition. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00104">SaberCondAllocator.h:104</a></div></div>
176
- <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_af3d224fdc92de272363f411b8f8c2a09"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#af3d224fdc92de272363f411b8f8c2a09">SVF::SaberCondAllocator::setBranchCond</a></div><div class="ttdeci">void setBranchCond(const BasicBlock *bb, const BasicBlock *succ, const Condition &amp;cond)</div><div class="ttdoc">Get/Set a branch condition, and its terminator instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00170">SaberCondAllocator.cpp:170</a></div></div>
176
+ <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_af3d224fdc92de272363f411b8f8c2a09"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#af3d224fdc92de272363f411b8f8c2a09">SVF::SaberCondAllocator::setBranchCond</a></div><div class="ttdeci">void setBranchCond(const BasicBlock *bb, const BasicBlock *succ, const Condition &amp;cond)</div><div class="ttdoc">Get/Set a branch condition, and its terminator instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00168">SaberCondAllocator.cpp:168</a></div></div>
177
177
  <div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
178
178
  <div class="ttc" id="classSVF_1_1SaberCondAllocator_html_a37b7a293dcd12bd13639c55482e856e1"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a37b7a293dcd12bd13639c55482e856e1">SVF::SaberCondAllocator::FunToExitBBsMap</a></div><div class="ttdeci">Map&lt; const Function *, BasicBlockSet &gt; FunToExitBBsMap</div><div class="ttdoc">map a function to all its basic blocks calling program exit </div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00057">SaberCondAllocator.h:57</a></div></div>
179
179
  </div><!-- fragment --></div><!-- contents -->