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
@@ -67,9 +67,9 @@ $(function() {
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
69
  <a href="ExeState_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">//===- ExeState.h -- Execution State ----------------------------//</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;<span class="comment">/*</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * ExeState.h</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * Created on: April 29, 2022</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Author: Xiao</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#ifndef SVF_EXESTATE_H</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#define SVF_EXESTATE_H</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</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="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFVariables_8h.html">MemoryModel/SVFVariables.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;{</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="ExeState_8h.html#a9c5bf91d8f58ded0fd8f57c04f26b56f"> 37</a></span>&#160;<span class="preprocessor">#define AddressMask 0x7f000000</span></div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="ExeState_8h.html#aec682540f2c8aa9deb79f610e4399411"> 38</a></span>&#160;<span class="preprocessor">#define FlippedAddressMask (AddressMask^0xffffffff)</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"><a class="line" href="classSVF_1_1ExeState.html"> 40</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1ExeState.html">ExeState</a></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#afc4aad166cd39a6cfbd8e9b897104f3f"> 43</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;u32_t, Z3Expr&gt;</a> <a class="code" href="classSVF_1_1ExeState.html#afc4aad166cd39a6cfbd8e9b897104f3f">VarToValMap</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a887d6f9108cbbe7dca68dea67f70c392"> 44</a></span>&#160; <span class="keyword">typedef</span> VarToValMap <a class="code" href="classSVF_1_1ExeState.html#a887d6f9108cbbe7dca68dea67f70c392">LocToValMap</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a32a5c65de2656ecfd2e33100a44dc02f"> 47</a></span>&#160; VarToValMap <a class="code" href="classSVF_1_1ExeState.html#a32a5c65de2656ecfd2e33100a44dc02f">varToVal</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a55464ae666ae16656ad8903894ec14da"> 48</a></span>&#160; LocToValMap <a class="code" href="classSVF_1_1ExeState.html#a55464ae666ae16656ad8903894ec14da">locToVal</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a7a9c5c2275246a43414503f6822073b1"> 49</a></span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> <a class="code" href="classSVF_1_1ExeState.html#a7a9c5c2275246a43414503f6822073b1">pathConstraint</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a83ce58a2551d511448d0224a96ca1bd7"> 52</a></span>&#160; <a class="code" href="classSVF_1_1ExeState.html#a83ce58a2551d511448d0224a96ca1bd7">ExeState</a>() : pathConstraint(<a class="code" href="classSVF_1_1ExeState.html#ac7a74f57945b7f076a5cfe9435fd34e8">getContext</a>().bool_val(<a class="code" href="cJSON_8cpp.html#a930920b2bc42824a5c03be681830f4b2">true</a>)) {}</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a02e0a7dd5e66255be3838fa10e3e1cab"> 54</a></span>&#160; <a class="code" href="classSVF_1_1ExeState.html#a02e0a7dd5e66255be3838fa10e3e1cab">ExeState</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &amp;_pc, VarToValMap &amp;_varToValMap, LocToValMap &amp;_locToValMap) : varToVal(_varToValMap),</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; locToVal(_locToValMap),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; pathConstraint(_pc) {}</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a62bef487b31f2a4ca27b4e9b183bdef5"> 58</a></span>&#160; <a class="code" href="classSVF_1_1ExeState.html#a62bef487b31f2a4ca27b4e9b183bdef5">ExeState</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ExeState.html">ExeState</a> &amp;rhs) : varToVal(rhs.<a class="code" href="classSVF_1_1ExeState.html#abf1237f5e4661a2da6e479f147957b18">getVarToVal</a>()), locToVal(rhs.<a class="code" href="classSVF_1_1ExeState.html#a4ee40de7eca22ac055b52360e0101623">getLocToVal</a>()),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; pathConstraint(rhs.<a class="code" href="classSVF_1_1ExeState.html#a00bd54e2dc70a8547581008e27790eb8">getPathConstraint</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="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1ExeState.html#a56dc11162e701d8d48ea354f9d380167">~ExeState</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classSVF_1_1ExeState.html">ExeState</a> &amp;<a class="code" href="classSVF_1_1ExeState.html#a0c6a0cd40fc94cc2c3829d6ae0a21270">operator=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ExeState.html">ExeState</a> &amp;rhs);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExeState.html#a0e4c8a41aa861ff2862d8b620c902f21">operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ExeState.html">ExeState</a> &amp;rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a4ee62e9c0cc0eb34c72effc2c203506a"> 72</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExeState.html#a4ee62e9c0cc0eb34c72effc2c203506a">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ExeState.html">ExeState</a> &amp;rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExeState.html#a10a12722f1974d466ef07a35d9dff108">operator&lt;</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ExeState.html">ExeState</a> &amp;rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#ac7a74f57945b7f076a5cfe9435fd34e8"> 82</a></span>&#160; z3::context &amp;<a class="code" href="classSVF_1_1ExeState.html#ac7a74f57945b7f076a5cfe9435fd34e8">getContext</a>()</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Z3Expr::getContext</a>();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</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_1ExeState.html#abf1237f5e4661a2da6e479f147957b18"> 87</a></span>&#160; <span class="keyword">const</span> VarToValMap &amp;<a class="code" href="classSVF_1_1ExeState.html#abf1237f5e4661a2da6e479f147957b18">getVarToVal</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="keyword"> </span>{</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_1ExeState.html#a32a5c65de2656ecfd2e33100a44dc02f">varToVal</a>;</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"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a4ee40de7eca22ac055b52360e0101623"> 92</a></span>&#160; <span class="keyword">const</span> LocToValMap &amp;<a class="code" href="classSVF_1_1ExeState.html#a4ee40de7eca22ac055b52360e0101623">getLocToVal</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ExeState.html#a55464ae666ae16656ad8903894ec14da">locToVal</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a00bd54e2dc70a8547581008e27790eb8"> 97</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &amp;<a class="code" href="classSVF_1_1ExeState.html#a00bd54e2dc70a8547581008e27790eb8">getPathConstraint</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ExeState.html#a7a9c5c2275246a43414503f6822073b1">pathConstraint</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#abb73aa9e213818e89e1fb8abdd7a3309"> 102</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ExeState.html#abb73aa9e213818e89e1fb8abdd7a3309">setPathConstraint</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &amp;pc)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; pathConstraint = pc.<a class="code" href="classSVF_1_1Z3Expr.html#afb3478316592a395c6d473791b5a0981">simplify</a>();</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;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#af539858577135d706304bb0703f1530d"> 107</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &amp;<a class="code" href="classSVF_1_1ExeState.html#af539858577135d706304bb0703f1530d">operator[]</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> varId)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ExeState.html#ab52debe3aae77d1efd5de4d220dbed2f">getZ3Expr</a>(varId);</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"> 111</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ExeState.html#a7b3013578baac3ce73bc544569c3dbbf">initValVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a> *valVar, <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &amp;e);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ExeState.html#af4018e9053baa373b590230bc53b7ccb">initObjVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a> *objVar, <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &amp;e);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &amp;<a class="code" href="classSVF_1_1ExeState.html#ab52debe3aae77d1efd5de4d220dbed2f">getZ3Expr</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> varId);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ExeState.html#a08db85e0e599d17b54743feb03a7717a">store</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &amp;loc, <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &amp;value);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &amp;<a class="code" href="classSVF_1_1ExeState.html#a80bd7f3746198459bbcb59274cebc013">load</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &amp;loc);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#af97d422306089e69c2910c6084475c51"> 128</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1ExeState.html#af97d422306089e69c2910c6084475c51">getVirtualMemAddress</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> idx)<span class="keyword"> const</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> <a class="code" href="ExeState_8h.html#a9c5bf91d8f58ded0fd8f57c04f26b56f">AddressMask</a> + idx;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a2d5f2c2de23c919a47432501c3ad8adb"> 134</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExeState.html#a2d5f2c2de23c919a47432501c3ad8adb">isVirtualMemAddress</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> val)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> (val &amp; 0xff000000) == <a class="code" href="ExeState_8h.html#a9c5bf91d8f58ded0fd8f57c04f26b56f">AddressMask</a>;</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"> 138</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a2535d6ef4a91b2bd2366b6a89265ab91"> 140</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1ExeState.html#a2535d6ef4a91b2bd2366b6a89265ab91">getInternalID</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> idx)<span class="keyword"> const</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">return</span> (idx &amp; <a class="code" href="ExeState_8h.html#aec682540f2c8aa9deb79f610e4399411">FlippedAddressMask</a>);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#ab931a1b6a85d3db047bc50741a22c8a6"> 146</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> <a class="code" href="classSVF_1_1ExeState.html#ab931a1b6a85d3db047bc50741a22c8a6">z3Expr2NumValue</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &amp;e)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; assert(e.<a class="code" href="classSVF_1_1Z3Expr.html#ad1802109545427278e3a8bde52e016b0">is_numeral</a>() &amp;&amp; <span class="stringliteral">&quot;not numeral?&quot;</span>);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> e.<a class="code" href="classSVF_1_1Z3Expr.html#ad94bbaa31e6df4e8b8238d69b8f4ae06">get_numeral_int64</a>();</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;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ExeState.html#aee8eece3daa2b7cbebb8dcde761931c2">printExprValues</a>();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExeState.html#a8447b7c20dd6bb724270026f55cbdece">eqVarToValMap</a>(<span class="keyword">const</span> VarToValMap &amp;lhs, <span class="keyword">const</span> VarToValMap &amp;rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExeState.html#a29c29c85982ffafd4c496e293a80eeeb">lessThanVarToValMap</a>(<span class="keyword">const</span> VarToValMap &amp;lhs, <span class="keyword">const</span> VarToValMap &amp;rhs) <span class="keyword">const</span>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#ade4fc12b40dd05bf840c313f2b723879"> 159</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ExeState.html#ade4fc12b40dd05bf840c313f2b723879">store</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> objId, <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &amp;z3Expr)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; locToVal[objId] = z3Expr.<a class="code" href="classSVF_1_1Z3Expr.html#afb3478316592a395c6d473791b5a0981">simplify</a>();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a8b58d74bd718d66cde9ad7e868d6137a"> 164</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &amp;<a class="code" href="classSVF_1_1ExeState.html#a8b58d74bd718d66cde9ad7e868d6137a">load</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> objId)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">return</span> locToVal[objId];</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;};</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"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1ExeState_01_4.html"> 172</a></span>&#160;<span class="keyword">struct </span>std::hash&lt;<a class="code" href="namespaceSVF.html">SVF</a>::<a class="code" href="classSVF_1_1ExeState.html#a83ce58a2551d511448d0224a96ca1bd7">ExeState</a>&gt;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;{</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01SVF_1_1ExeState_01_4.html#a99f262842505ca11c987d68a790aee10"> 174</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structstd_1_1hash_3_01SVF_1_1ExeState_01_4.html#a99f262842505ca11c987d68a790aee10">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ExeState.html">SVF::ExeState</a> &amp;exeState)<span class="keyword"> const</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="keyword"> </span>{</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; <span class="keywordtype">size_t</span> h = exeState.<a class="code" href="classSVF_1_1ExeState.html#abf1237f5e4661a2da6e479f147957b18">getVarToVal</a>().size() * 2;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <a class="code" href="structSVF_1_1Hash.html">SVF::Hash&lt;SVF::u32_t&gt;</a> hf;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;t: exeState.<a class="code" href="classSVF_1_1ExeState.html#abf1237f5e4661a2da6e479f147957b18">getVarToVal</a>())</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; h ^= hf(t.first) + 0x9e3779b9 + (h &lt;&lt; 6) + (h &gt;&gt; 2);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; h ^= hf(t.second.id()) + 0x9e3779b9 + (h &lt;&lt; 6) + (h &gt;&gt; 2);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordtype">size_t</span> h2 = exeState.<a class="code" href="classSVF_1_1ExeState.html#abf1237f5e4661a2da6e479f147957b18">getVarToVal</a>().size() * 2;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;t: exeState.<a class="code" href="classSVF_1_1ExeState.html#a4ee40de7eca22ac055b52360e0101623">getLocToVal</a>())</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; h2 ^= hf(t.first) + 0x9e3779b9 + (h2 &lt;&lt; 6) + (h2 &gt;&gt; 2);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; h2 ^= hf(t.second.id()) + 0x9e3779b9 + (h2 &lt;&lt; 6) + (h2 &gt;&gt; 2);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="code" href="structSVF_1_1Hash.html">SVF::Hash&lt;std::pair&lt;SVF::u32_t, SVF::u32_t&gt;</a>&gt; pairH;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">return</span> pairH(make_pair(pairH(make_pair(h, h2)), exeState.<a class="code" href="classSVF_1_1ExeState.html#a00bd54e2dc70a8547581008e27790eb8">getPathConstraint</a>().<a class="code" href="classSVF_1_1Z3Expr.html#acdb4fbb53f19bac033e79cfe96ce82ca">id</a>()));</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; }</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;<span class="preprocessor">#endif //SVF_EXESTATE_H</span></div><div class="ttc" id="classSVF_1_1ExeState_html_a56dc11162e701d8d48ea354f9d380167"><div class="ttname"><a href="classSVF_1_1ExeState.html#a56dc11162e701d8d48ea354f9d380167">SVF::ExeState::~ExeState</a></div><div class="ttdeci">virtual ~ExeState()=default</div></div>
70
- <div class="ttc" id="classSVF_1_1Z3Expr_html_ad1802109545427278e3a8bde52e016b0"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#ad1802109545427278e3a8bde52e016b0">SVF::Z3Expr::is_numeral</a></div><div class="ttdeci">bool is_numeral() const</div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00117">Z3Expr.h:117</a></div></div>
70
+ <div class="ttc" id="classSVF_1_1Z3Expr_html_ad1802109545427278e3a8bde52e016b0"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#ad1802109545427278e3a8bde52e016b0">SVF::Z3Expr::is_numeral</a></div><div class="ttdeci">bool is_numeral() const</div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00120">Z3Expr.h:120</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1ValVar_html"><div class="ttname"><a href="classSVF_1_1ValVar.html">SVF::ValVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00256">SVFVariables.h:256</a></div></div>
72
- <div class="ttc" id="classSVF_1_1ExeState_html_a80bd7f3746198459bbcb59274cebc013"><div class="ttname"><a href="classSVF_1_1ExeState.html#a80bd7f3746198459bbcb59274cebc013">SVF::ExeState::load</a></div><div class="ttdeci">Z3Expr &amp; load(const Z3Expr &amp;loc)</div><div class="ttdoc">Load value at location. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00243">ExeState.cpp:243</a></div></div>
72
+ <div class="ttc" id="classSVF_1_1ExeState_html_a80bd7f3746198459bbcb59274cebc013"><div class="ttname"><a href="classSVF_1_1ExeState.html#a80bd7f3746198459bbcb59274cebc013">SVF::ExeState::load</a></div><div class="ttdeci">Z3Expr &amp; load(const Z3Expr &amp;loc)</div><div class="ttdoc">Load value at location. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00242">ExeState.cpp:242</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1ExeState_html_a4ee40de7eca22ac055b52360e0101623"><div class="ttname"><a href="classSVF_1_1ExeState.html#a4ee40de7eca22ac055b52360e0101623">SVF::ExeState::getLocToVal</a></div><div class="ttdeci">const LocToValMap &amp; getLocToVal() const</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00092">ExeState.h:92</a></div></div>
74
74
  <div class="ttc" id="ExeState_8h_html_aec682540f2c8aa9deb79f610e4399411"><div class="ttname"><a href="ExeState_8h.html#aec682540f2c8aa9deb79f610e4399411">FlippedAddressMask</a></div><div class="ttdeci">#define FlippedAddressMask</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00038">ExeState.h:38</a></div></div>
75
75
  <div class="ttc" id="classSVF_1_1ExeState_html_af97d422306089e69c2910c6084475c51"><div class="ttname"><a href="classSVF_1_1ExeState.html#af97d422306089e69c2910c6084475c51">SVF::ExeState::getVirtualMemAddress</a></div><div class="ttdeci">u32_t getVirtualMemAddress(u32_t idx) const</div><div class="ttdoc">The physical address starts with 0x7f...... + idx. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00128">ExeState.h:128</a></div></div>
@@ -77,48 +77,48 @@ $(function() {
77
77
  <div class="ttc" id="classSVF_1_1ExeState_html_abb73aa9e213818e89e1fb8abdd7a3309"><div class="ttname"><a href="classSVF_1_1ExeState.html#abb73aa9e213818e89e1fb8abdd7a3309">SVF::ExeState::setPathConstraint</a></div><div class="ttdeci">void setPathConstraint(const Z3Expr &amp;pc)</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00102">ExeState.h:102</a></div></div>
78
78
  <div class="ttc" id="classSVF_1_1ExeState_html_a7a9c5c2275246a43414503f6822073b1"><div class="ttname"><a href="classSVF_1_1ExeState.html#a7a9c5c2275246a43414503f6822073b1">SVF::ExeState::pathConstraint</a></div><div class="ttdeci">Z3Expr pathConstraint</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00049">ExeState.h:49</a></div></div>
79
79
  <div class="ttc" id="structSVF_1_1Hash_html"><div class="ttname"><a href="structSVF_1_1Hash.html">SVF::Hash</a></div><div class="ttdoc">provide extra hash function for std::pair handling </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00056">SVFBasicTypes.h:56</a></div></div>
80
- <div class="ttc" id="classSVF_1_1ExeState_html_a10a12722f1974d466ef07a35d9dff108"><div class="ttname"><a href="classSVF_1_1ExeState.html#a10a12722f1974d466ef07a35d9dff108">SVF::ExeState::operator&lt;</a></div><div class="ttdeci">bool operator&lt;(const ExeState &amp;rhs) const</div><div class="ttdoc">Overloading Operator==. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00187">ExeState.cpp:187</a></div></div>
80
+ <div class="ttc" id="classSVF_1_1ExeState_html_a10a12722f1974d466ef07a35d9dff108"><div class="ttname"><a href="classSVF_1_1ExeState.html#a10a12722f1974d466ef07a35d9dff108">SVF::ExeState::operator&lt;</a></div><div class="ttdeci">bool operator&lt;(const ExeState &amp;rhs) const</div><div class="ttdoc">Overloading Operator==. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00186">ExeState.cpp:186</a></div></div>
81
81
  <div class="ttc" id="classSVF_1_1ExeState_html_ac7a74f57945b7f076a5cfe9435fd34e8"><div class="ttname"><a href="classSVF_1_1ExeState.html#ac7a74f57945b7f076a5cfe9435fd34e8">SVF::ExeState::getContext</a></div><div class="ttdeci">z3::context &amp; getContext()</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00082">ExeState.h:82</a></div></div>
82
82
  <div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00086">SVFBasicTypes.h:86</a></div></div>
83
83
  <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>
84
84
  <div class="ttc" id="classSVF_1_1ObjVar_html"><div class="ttname"><a href="classSVF_1_1ObjVar.html">SVF::ObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00304">SVFVariables.h:304</a></div></div>
85
85
  <div class="ttc" id="classSVF_1_1ExeState_html_afc4aad166cd39a6cfbd8e9b897104f3f"><div class="ttname"><a href="classSVF_1_1ExeState.html#afc4aad166cd39a6cfbd8e9b897104f3f">SVF::ExeState::VarToValMap</a></div><div class="ttdeci">Map&lt; u32_t, Z3Expr &gt; VarToValMap</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00043">ExeState.h:43</a></div></div>
86
86
  <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00110">SVFBasicTypes.h:110</a></div></div>
87
- <div class="ttc" id="classSVF_1_1ExeState_html_a08db85e0e599d17b54743feb03a7717a"><div class="ttname"><a href="classSVF_1_1ExeState.html#a08db85e0e599d17b54743feb03a7717a">SVF::ExeState::store</a></div><div class="ttdeci">void store(const Z3Expr &amp;loc, const Z3Expr &amp;value)</div><div class="ttdoc">Store value to location. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00230">ExeState.cpp:230</a></div></div>
87
+ <div class="ttc" id="classSVF_1_1ExeState_html_a08db85e0e599d17b54743feb03a7717a"><div class="ttname"><a href="classSVF_1_1ExeState.html#a08db85e0e599d17b54743feb03a7717a">SVF::ExeState::store</a></div><div class="ttdeci">void store(const Z3Expr &amp;loc, const Z3Expr &amp;value)</div><div class="ttdoc">Store value to location. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00229">ExeState.cpp:229</a></div></div>
88
88
  <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>
89
89
  <div class="ttc" id="classSVF_1_1ExeState_html_a32a5c65de2656ecfd2e33100a44dc02f"><div class="ttname"><a href="classSVF_1_1ExeState.html#a32a5c65de2656ecfd2e33100a44dc02f">SVF::ExeState::varToVal</a></div><div class="ttdeci">VarToValMap varToVal</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00047">ExeState.h:47</a></div></div>
90
- <div class="ttc" id="classSVF_1_1Z3Expr_html_acfdff582a0188678c10939165a40df30"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">SVF::Z3Expr::getContext</a></div><div class="ttdeci">static z3::context &amp; getContext()</div><div class="ttdoc">Get z3 context, singleton design here to make sure we only have one context. </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8cpp_source.html#l00052">Z3Expr.cpp:52</a></div></div>
90
+ <div class="ttc" id="classSVF_1_1Z3Expr_html_acfdff582a0188678c10939165a40df30"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">SVF::Z3Expr::getContext</a></div><div class="ttdeci">static z3::context &amp; getContext()</div><div class="ttdoc">Get z3 context, singleton design here to make sure we only have one context. </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8cpp_source.html#l00066">Z3Expr.cpp:66</a></div></div>
91
91
  <div class="ttc" id="classSVF_1_1ExeState_html"><div class="ttname"><a href="classSVF_1_1ExeState.html">SVF::ExeState</a></div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00040">ExeState.h:40</a></div></div>
92
92
  <div class="ttc" id="SVFVariables_8h_html"><div class="ttname"><a href="SVFVariables_8h.html">SVFVariables.h</a></div></div>
93
93
  <div class="ttc" id="classSVF_1_1ExeState_html_ade4fc12b40dd05bf840c313f2b723879"><div class="ttname"><a href="classSVF_1_1ExeState.html#ade4fc12b40dd05bf840c313f2b723879">SVF::ExeState::store</a></div><div class="ttdeci">void store(u32_t objId, const Z3Expr &amp;z3Expr)</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00159">ExeState.h:159</a></div></div>
94
94
  <div class="ttc" id="classSVF_1_1ExeState_html_a00bd54e2dc70a8547581008e27790eb8"><div class="ttname"><a href="classSVF_1_1ExeState.html#a00bd54e2dc70a8547581008e27790eb8">SVF::ExeState::getPathConstraint</a></div><div class="ttdeci">const Z3Expr &amp; getPathConstraint() const</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00097">ExeState.h:97</a></div></div>
95
- <div class="ttc" id="classSVF_1_1Z3Expr_html_afb3478316592a395c6d473791b5a0981"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#afb3478316592a395c6d473791b5a0981">SVF::Z3Expr::simplify</a></div><div class="ttdeci">Z3Expr simplify() const</div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00127">Z3Expr.h:127</a></div></div>
95
+ <div class="ttc" id="classSVF_1_1Z3Expr_html_afb3478316592a395c6d473791b5a0981"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#afb3478316592a395c6d473791b5a0981">SVF::Z3Expr::simplify</a></div><div class="ttdeci">Z3Expr simplify() const</div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00130">Z3Expr.h:130</a></div></div>
96
96
  <div class="ttc" id="cJSON_8cpp_html_a930920b2bc42824a5c03be681830f4b2"><div class="ttname"><a href="cJSON_8cpp.html#a930920b2bc42824a5c03be681830f4b2">true</a></div><div class="ttdeci">return true</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02295">cJSON.cpp:2295</a></div></div>
97
- <div class="ttc" id="classSVF_1_1ExeState_html_aee8eece3daa2b7cbebb8dcde761931c2"><div class="ttname"><a href="classSVF_1_1ExeState.html#aee8eece3daa2b7cbebb8dcde761931c2">SVF::ExeState::printExprValues</a></div><div class="ttdeci">void printExprValues()</div><div class="ttdoc">Print values of all expressions. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00256">ExeState.cpp:256</a></div></div>
97
+ <div class="ttc" id="classSVF_1_1ExeState_html_aee8eece3daa2b7cbebb8dcde761931c2"><div class="ttname"><a href="classSVF_1_1ExeState.html#aee8eece3daa2b7cbebb8dcde761931c2">SVF::ExeState::printExprValues</a></div><div class="ttdeci">void printExprValues()</div><div class="ttdoc">Print values of all expressions. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00255">ExeState.cpp:255</a></div></div>
98
98
  <div class="ttc" id="structstd_1_1hash_3_01SVF_1_1ExeState_01_4_html_a99f262842505ca11c987d68a790aee10"><div class="ttname"><a href="structstd_1_1hash_3_01SVF_1_1ExeState_01_4.html#a99f262842505ca11c987d68a790aee10">std::hash&lt; SVF::ExeState &gt;::operator()</a></div><div class="ttdeci">size_t operator()(const SVF::ExeState &amp;exeState) const</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00174">ExeState.h:174</a></div></div>
99
99
  <div class="ttc" id="classSVF_1_1ExeState_html_a4ee62e9c0cc0eb34c72effc2c203506a"><div class="ttname"><a href="classSVF_1_1ExeState.html#a4ee62e9c0cc0eb34c72effc2c203506a">SVF::ExeState::operator!=</a></div><div class="ttdeci">bool operator!=(const ExeState &amp;rhs) const</div><div class="ttdoc">Overloading Operator!=. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00072">ExeState.h:72</a></div></div>
100
100
  <div class="ttc" id="classSVF_1_1ExeState_html_abf1237f5e4661a2da6e479f147957b18"><div class="ttname"><a href="classSVF_1_1ExeState.html#abf1237f5e4661a2da6e479f147957b18">SVF::ExeState::getVarToVal</a></div><div class="ttdeci">const VarToValMap &amp; getVarToVal() const</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00087">ExeState.h:87</a></div></div>
101
101
  <div class="ttc" id="Z3Expr_8h_html"><div class="ttname"><a href="Z3Expr_8h.html">Z3Expr.h</a></div></div>
102
102
  <div class="ttc" id="classSVF_1_1ExeState_html_af539858577135d706304bb0703f1530d"><div class="ttname"><a href="classSVF_1_1ExeState.html#af539858577135d706304bb0703f1530d">SVF::ExeState::operator[]</a></div><div class="ttdeci">Z3Expr &amp; operator[](u32_t varId)</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00107">ExeState.h:107</a></div></div>
103
103
  <div class="ttc" id="classSVF_1_1ExeState_html_a8b58d74bd718d66cde9ad7e868d6137a"><div class="ttname"><a href="classSVF_1_1ExeState.html#a8b58d74bd718d66cde9ad7e868d6137a">SVF::ExeState::load</a></div><div class="ttdeci">Z3Expr &amp; load(u32_t objId)</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00164">ExeState.h:164</a></div></div>
104
- <div class="ttc" id="classSVF_1_1ExeState_html_ab52debe3aae77d1efd5de4d220dbed2f"><div class="ttname"><a href="classSVF_1_1ExeState.html#ab52debe3aae77d1efd5de4d220dbed2f">SVF::ExeState::getZ3Expr</a></div><div class="ttdeci">Z3Expr &amp; getZ3Expr(u32_t varId)</div><div class="ttdoc">Return Z3 expression based on SVFVar ID. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00134">ExeState.cpp:134</a></div></div>
105
- <div class="ttc" id="classSVF_1_1Z3Expr_html_ad94bbaa31e6df4e8b8238d69b8f4ae06"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#ad94bbaa31e6df4e8b8238d69b8f4ae06">SVF::Z3Expr::get_numeral_int64</a></div><div class="ttdeci">int64_t get_numeral_int64() const</div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00132">Z3Expr.h:132</a></div></div>
106
- <div class="ttc" id="classSVF_1_1ExeState_html_a0e4c8a41aa861ff2862d8b620c902f21"><div class="ttname"><a href="classSVF_1_1ExeState.html#a0e4c8a41aa861ff2862d8b620c902f21">SVF::ExeState::operator==</a></div><div class="ttdeci">bool operator==(const ExeState &amp;rhs) const</div><div class="ttdoc">Overloading Operator==. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00176">ExeState.cpp:176</a></div></div>
107
- <div class="ttc" id="classSVF_1_1ExeState_html_af4018e9053baa373b590230bc53b7ccb"><div class="ttname"><a href="classSVF_1_1ExeState.html#af4018e9053baa373b590230bc53b7ccb">SVF::ExeState::initObjVar</a></div><div class="ttdeci">void initObjVar(const ObjVar *objVar, Z3Expr &amp;e)</div><div class="ttdoc">Init Z3Expr for ObjVar. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00076">ExeState.cpp:76</a></div></div>
104
+ <div class="ttc" id="classSVF_1_1ExeState_html_ab52debe3aae77d1efd5de4d220dbed2f"><div class="ttname"><a href="classSVF_1_1ExeState.html#ab52debe3aae77d1efd5de4d220dbed2f">SVF::ExeState::getZ3Expr</a></div><div class="ttdeci">Z3Expr &amp; getZ3Expr(u32_t varId)</div><div class="ttdoc">Return Z3 expression based on SVFVar ID. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00133">ExeState.cpp:133</a></div></div>
105
+ <div class="ttc" id="classSVF_1_1Z3Expr_html_ad94bbaa31e6df4e8b8238d69b8f4ae06"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#ad94bbaa31e6df4e8b8238d69b8f4ae06">SVF::Z3Expr::get_numeral_int64</a></div><div class="ttdeci">int64_t get_numeral_int64() const</div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00135">Z3Expr.h:135</a></div></div>
106
+ <div class="ttc" id="classSVF_1_1ExeState_html_a0e4c8a41aa861ff2862d8b620c902f21"><div class="ttname"><a href="classSVF_1_1ExeState.html#a0e4c8a41aa861ff2862d8b620c902f21">SVF::ExeState::operator==</a></div><div class="ttdeci">bool operator==(const ExeState &amp;rhs) const</div><div class="ttdoc">Overloading Operator==. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00175">ExeState.cpp:175</a></div></div>
107
+ <div class="ttc" id="classSVF_1_1ExeState_html_af4018e9053baa373b590230bc53b7ccb"><div class="ttname"><a href="classSVF_1_1ExeState.html#af4018e9053baa373b590230bc53b7ccb">SVF::ExeState::initObjVar</a></div><div class="ttdeci">void initObjVar(const ObjVar *objVar, Z3Expr &amp;e)</div><div class="ttdoc">Init Z3Expr for ObjVar. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00075">ExeState.cpp:75</a></div></div>
108
108
  <div class="ttc" id="classSVF_1_1ExeState_html_ab931a1b6a85d3db047bc50741a22c8a6"><div class="ttname"><a href="classSVF_1_1ExeState.html#ab931a1b6a85d3db047bc50741a22c8a6">SVF::ExeState::z3Expr2NumValue</a></div><div class="ttdeci">s32_t z3Expr2NumValue(const Z3Expr &amp;e)</div><div class="ttdoc">Return int value from an expression if it is a numeral, otherwise return an approximate value...</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00146">ExeState.h:146</a></div></div>
109
109
  <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>
110
110
  <div class="ttc" id="classSVF_1_1ExeState_html_a55464ae666ae16656ad8903894ec14da"><div class="ttname"><a href="classSVF_1_1ExeState.html#a55464ae666ae16656ad8903894ec14da">SVF::ExeState::locToVal</a></div><div class="ttdeci">LocToValMap locToVal</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00048">ExeState.h:48</a></div></div>
111
111
  <div class="ttc" id="classSVF_1_1ExeState_html_a887d6f9108cbbe7dca68dea67f70c392"><div class="ttname"><a href="classSVF_1_1ExeState.html#a887d6f9108cbbe7dca68dea67f70c392">SVF::ExeState::LocToValMap</a></div><div class="ttdeci">VarToValMap LocToValMap</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00044">ExeState.h:44</a></div></div>
112
112
  <div class="ttc" id="classSVF_1_1ExeState_html_a2d5f2c2de23c919a47432501c3ad8adb"><div class="ttname"><a href="classSVF_1_1ExeState.html#a2d5f2c2de23c919a47432501c3ad8adb">SVF::ExeState::isVirtualMemAddress</a></div><div class="ttdeci">bool isVirtualMemAddress(u32_t val)</div><div class="ttdoc">Check bit value of val start with 0x7F000000, filter by 0xFF000000. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00134">ExeState.h:134</a></div></div>
113
- <div class="ttc" id="classSVF_1_1ExeState_html_a29c29c85982ffafd4c496e293a80eeeb"><div class="ttname"><a href="classSVF_1_1ExeState.html#a29c29c85982ffafd4c496e293a80eeeb">SVF::ExeState::lessThanVarToValMap</a></div><div class="ttdeci">bool lessThanVarToValMap(const VarToValMap &amp;lhs, const VarToValMap &amp;rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00210">ExeState.cpp:210</a></div></div>
114
- <div class="ttc" id="classSVF_1_1ExeState_html_a0c6a0cd40fc94cc2c3829d6ae0a21270"><div class="ttname"><a href="classSVF_1_1ExeState.html#a0c6a0cd40fc94cc2c3829d6ae0a21270">SVF::ExeState::operator=</a></div><div class="ttdeci">ExeState &amp; operator=(const ExeState &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00160">ExeState.cpp:160</a></div></div>
113
+ <div class="ttc" id="classSVF_1_1ExeState_html_a29c29c85982ffafd4c496e293a80eeeb"><div class="ttname"><a href="classSVF_1_1ExeState.html#a29c29c85982ffafd4c496e293a80eeeb">SVF::ExeState::lessThanVarToValMap</a></div><div class="ttdeci">bool lessThanVarToValMap(const VarToValMap &amp;lhs, const VarToValMap &amp;rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00209">ExeState.cpp:209</a></div></div>
114
+ <div class="ttc" id="classSVF_1_1ExeState_html_a0c6a0cd40fc94cc2c3829d6ae0a21270"><div class="ttname"><a href="classSVF_1_1ExeState.html#a0c6a0cd40fc94cc2c3829d6ae0a21270">SVF::ExeState::operator=</a></div><div class="ttdeci">ExeState &amp; operator=(const ExeState &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00159">ExeState.cpp:159</a></div></div>
115
115
  <div class="ttc" id="classSVF_1_1ExeState_html_a62bef487b31f2a4ca27b4e9b183bdef5"><div class="ttname"><a href="classSVF_1_1ExeState.html#a62bef487b31f2a4ca27b4e9b183bdef5">SVF::ExeState::ExeState</a></div><div class="ttdeci">ExeState(const ExeState &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00058">ExeState.h:58</a></div></div>
116
116
  <div class="ttc" id="classSVF_1_1ExeState_html_a02e0a7dd5e66255be3838fa10e3e1cab"><div class="ttname"><a href="classSVF_1_1ExeState.html#a02e0a7dd5e66255be3838fa10e3e1cab">SVF::ExeState::ExeState</a></div><div class="ttdeci">ExeState(const Z3Expr &amp;_pc, VarToValMap &amp;_varToValMap, LocToValMap &amp;_locToValMap)</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00054">ExeState.h:54</a></div></div>
117
117
  <div class="ttc" id="classSVF_1_1ExeState_html_a2535d6ef4a91b2bd2366b6a89265ab91"><div class="ttname"><a href="classSVF_1_1ExeState.html#a2535d6ef4a91b2bd2366b6a89265ab91">SVF::ExeState::getInternalID</a></div><div class="ttdeci">u32_t getInternalID(u32_t idx) const</div><div class="ttdoc">Return the internal index if idx is an address otherwise return the value of idx. ...</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00140">ExeState.h:140</a></div></div>
118
- <div class="ttc" id="classSVF_1_1ExeState_html_a7b3013578baac3ce73bc544569c3dbbf"><div class="ttname"><a href="classSVF_1_1ExeState.html#a7b3013578baac3ce73bc544569c3dbbf">SVF::ExeState::initValVar</a></div><div class="ttdeci">void initValVar(const ValVar *valVar, Z3Expr &amp;e)</div><div class="ttdoc">Init Z3Expr for ValVar. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00043">ExeState.cpp:43</a></div></div>
119
- <div class="ttc" id="classSVF_1_1ExeState_html_a8447b7c20dd6bb724270026f55cbdece"><div class="ttname"><a href="classSVF_1_1ExeState.html#a8447b7c20dd6bb724270026f55cbdece">SVF::ExeState::eqVarToValMap</a></div><div class="ttdeci">bool eqVarToValMap(const VarToValMap &amp;lhs, const VarToValMap &amp;rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00197">ExeState.cpp:197</a></div></div>
118
+ <div class="ttc" id="classSVF_1_1ExeState_html_a7b3013578baac3ce73bc544569c3dbbf"><div class="ttname"><a href="classSVF_1_1ExeState.html#a7b3013578baac3ce73bc544569c3dbbf">SVF::ExeState::initValVar</a></div><div class="ttdeci">void initValVar(const ValVar *valVar, Z3Expr &amp;e)</div><div class="ttdoc">Init Z3Expr for ValVar. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00042">ExeState.cpp:42</a></div></div>
119
+ <div class="ttc" id="classSVF_1_1ExeState_html_a8447b7c20dd6bb724270026f55cbdece"><div class="ttname"><a href="classSVF_1_1ExeState.html#a8447b7c20dd6bb724270026f55cbdece">SVF::ExeState::eqVarToValMap</a></div><div class="ttdeci">bool eqVarToValMap(const VarToValMap &amp;lhs, const VarToValMap &amp;rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00196">ExeState.cpp:196</a></div></div>
120
120
  <div class="ttc" id="classSVF_1_1ExeState_html_a83ce58a2551d511448d0224a96ca1bd7"><div class="ttname"><a href="classSVF_1_1ExeState.html#a83ce58a2551d511448d0224a96ca1bd7">SVF::ExeState::ExeState</a></div><div class="ttdeci">ExeState()</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00052">ExeState.h:52</a></div></div>
121
- <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>
121
+ <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>
122
122
  </div><!-- fragment --></div><!-- contents -->
123
123
  <!-- start footer part -->
124
124
  <hr class="footer"/><address class="footer"><small>
@@ -68,7 +68,7 @@ $(function() {
68
68
  <div class="contents">
69
69
  <a href="ProgSlice_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">//===- ProgSlice.h -- Program slicing based on SVF----------------------------//</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"> * ProgSlice.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 1, 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 PROGSLICE_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define PROGSLICE_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="SaberCondAllocator_8h.html">SABER/SaberCondAllocator.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="WorkList_8h.html">Util/WorkList.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="SVFG_8h.html">Graphs/SVFG.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="DPItem_8h.html">Util/DPItem.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></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"><a class="line" href="classSVF_1_1ProgSlice.html"> 41</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</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="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a4864972e12f3e95f06bcf2bf8c847b3a"> 45</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const SVFGNode*&gt;</a> <a class="code" href="classSVF_1_1ProgSlice.html#a4864972e12f3e95f06bcf2bf8c847b3a">SVFGNodeSet</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#af41c438baa739406a35bcb2e9ba431dd"> 46</a></span>&#160; <span class="keyword">typedef</span> SVFGNodeSet::const_iterator <a class="code" href="classSVF_1_1ProgSlice.html#af41c438baa739406a35bcb2e9ba431dd">SVFGNodeSetIter</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7"> 47</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1Z3Expr.html">SaberCondAllocator::Condition</a> <a class="code" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#adaf0bb2e3104c9d86d997b2e7c93275e"> 48</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFGNode*, Condition&gt;</a> <a class="code" href="classSVF_1_1ProgSlice.html#adaf0bb2e3104c9d86d997b2e7c93275e">SVFGNodeToCondMap</a>; </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"><a class="line" href="classSVF_1_1ProgSlice.html#a684e44ade783439c6f77a8d84eed282c"> 50</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const SVFGNode*&gt;</a> <a class="code" href="classSVF_1_1ProgSlice.html#a684e44ade783439c6f77a8d84eed282c">VFWorkList</a>; </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ab13cc8f64fed5f06b11f7ca67cbc0dc5"> 51</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_1ProgSlice.html#ab13cc8f64fed5f06b11f7ca67cbc0dc5">CFWorkList</a>; </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#afbf864cc47d6d06286529dbcc01c03c0"> 54</a></span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#afbf864cc47d6d06286529dbcc01c03c0">ProgSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src, <a class="code" href="classSVF_1_1SaberCondAllocator.html">SaberCondAllocator</a>* pa, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* graph):</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087">root</a>(src), <a class="code" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">partialReachable</a>(<a class="code" href="cJSON_8cpp.html#a65e9886d74aaee76545e83dd09011727">false</a>), <a class="code" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">fullReachable</a>(<a class="code" href="cJSON_8cpp.html#a65e9886d74aaee76545e83dd09011727">false</a>), <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>(<a class="code" href="cJSON_8cpp.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>(pa), <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a>(nullptr), <a class="code" href="classSVF_1_1ProgSlice.html#a011fcd4f081926e808e15630cb2d4b47">finalCond</a>(pa-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a9d81f792b6a8b15395a63d06daf56573">getFalseCond</a>()), <a class="code" href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde">svfg</a>(graph)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ad761a9848d2dab7700a7fdeb91c2454d"> 61</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1ProgSlice.html#ad761a9848d2dab7700a7fdeb91c2454d">~ProgSlice</a>()</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#a899332b210414ac991b57e83851ee5be">destroy</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#aae54f4e8a827f55abe08762b69d9f84b"> 66</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1ProgSlice.html#aae54f4e8a827f55abe08762b69d9f84b">getForwardSliceSize</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.size();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a967fa01a8baae0dd086b5c09ae0faa7b"> 70</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1ProgSlice.html#a967fa01a8baae0dd086b5c09ae0faa7b">getBackwardSliceSize</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.size();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a0017e160c2a5412947c170f944e593bd"> 76</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#a0017e160c2a5412947c170f944e593bd">addToForwardSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.insert(node);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ac98eccef9fc2521b833a8c14b43e49e1"> 80</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac98eccef9fc2521b833a8c14b43e49e1">addToBackwardSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.insert(node);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a5a4b7f34001cc90f9b60222caee1bde6"> 84</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a5a4b7f34001cc90f9b60222caee1bde6">inForwardSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.find(node)!=<a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.end();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a066430ffa98a3fa0a5ad48d26e0450f7"> 88</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a066430ffa98a3fa0a5ad48d26e0450f7">inBackwardSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.find(node)!=<a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.end();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ae482fcb138aaf345586a39daa34ff895"> 92</a></span>&#160; <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1ProgSlice.html#ae482fcb138aaf345586a39daa34ff895">forwardSliceBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.begin();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#add10d8fd041ac7e6eb611df8a6b1384b"> 96</a></span>&#160; <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1ProgSlice.html#add10d8fd041ac7e6eb611df8a6b1384b">forwardSliceEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.end();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ab5810f8a7a994f0637c54b94d0367a89"> 100</a></span>&#160; <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1ProgSlice.html#ab5810f8a7a994f0637c54b94d0367a89">backwardSliceBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.begin();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#aed4bedc716a3e252e44a6f28e677d61c"> 104</a></span>&#160; <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1ProgSlice.html#aed4bedc716a3e252e44a6f28e677d61c">backwardSliceEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.end();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0"> 112</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_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087">root</a>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#acee5145fb261280a1f8187184e393aed"> 116</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#acee5145fb261280a1f8187184e393aed">addToSinks</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>.insert(node);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a03a1ef4d56958fa4a0c3a3a95806203d"> 120</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> SVFGNodeSet&amp; <a class="code" href="classSVF_1_1ProgSlice.html#a03a1ef4d56958fa4a0c3a3a95806203d">getSinks</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2"> 124</a></span>&#160; <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2">sinksBegin</a>()<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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>.begin();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31"> 128</a></span>&#160; <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31">sinksEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>.end();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#af6f137be08ca0e743424ff07d679777d"> 132</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#af6f137be08ca0e743424ff07d679777d">setPartialReachable</a>()</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">partialReachable</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ae6102647fa4985142c293116516612cd"> 136</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#ae6102647fa4985142c293116516612cd">setAllReachable</a>()</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"> 138</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">fullReachable</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a397632ce0c523c4a54c5dc578606d14d"> 140</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a397632ce0c523c4a54c5dc578606d14d">setReachGlobal</a>()</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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a3822badbbe9ac808296d5248f2dbf8e2"> 144</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a3822badbbe9ac808296d5248f2dbf8e2">isPartialReachable</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="keyword"> </span>{</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_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">partialReachable</a> || <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a2f96f034b7236791fe1d4d351174722e"> 148</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a2f96f034b7236791fe1d4d351174722e">isAllReachable</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">fullReachable</a> || <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a067480a9815fdb728cd259ef9b687e3e"> 152</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a067480a9815fdb728cd259ef9b687e3e">isReachGlobal</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#aa7979418bed24fcecfc6fa04532cd586">AllPathReachableSolve</a>();</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a62a9f2c107f27d6c04c30ef153ffb8ed">isSatisfiableForAll</a>();</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a45fb7711498bcba60e931c9c2a9ccec4">isSatisfiableForPairs</a>();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1ProgSlice.html#a8ae327bc7bf72f892d87730edfc67d0d">getCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge) <span class="keyword">const</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1ProgSlice.html#a07ce77afbf69d5e2a47afaa39eaea886">getRetSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge) <span class="keyword">const</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#aceb26d08f0d12367e4726e1ff0e25953"> 171</a></span>&#160; <span class="keyword">inline</span> Condition <a class="code" href="classSVF_1_1ProgSlice.html#aceb26d08f0d12367e4726e1ff0e25953">condAnd</a>(<span class="keyword">const</span> Condition &amp;lhs, <span class="keyword">const</span> Condition &amp;rhs)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">condAnd</a>(lhs,rhs);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a3e729aba81cd64e8628df630f5a0f416"> 175</a></span>&#160; <span class="keyword">inline</span> Condition <a class="code" href="classSVF_1_1ProgSlice.html#a3e729aba81cd64e8628df630f5a0f416">condOr</a>(<span class="keyword">const</span> Condition &amp;lhs, <span class="keyword">const</span> Condition &amp;rhs)</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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">condOr</a>(lhs,rhs);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a0dfd466a758dd0be4c2bc5832c50fbd8"> 179</a></span>&#160; <span class="keyword">inline</span> Condition <a class="code" href="classSVF_1_1ProgSlice.html#a0dfd466a758dd0be4c2bc5832c50fbd8">condNeg</a>(<span class="keyword">const</span> Condition &amp;cond)</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a620d53b9af8dd30523c478f4e9655817">condNeg</a>(cond);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a59cbb196069a863830b05904f16a190e"> 183</a></span>&#160; <span class="keyword">inline</span> Condition <a class="code" href="classSVF_1_1ProgSlice.html#a59cbb196069a863830b05904f16a190e">getTrueCond</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a9d81f792b6a8b15395a63d06daf56573"> 187</a></span>&#160; <span class="keyword">inline</span> Condition <a class="code" href="classSVF_1_1ProgSlice.html#a9d81f792b6a8b15395a63d06daf56573">getFalseCond</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a03d4ae6a3df1adf7f1ee5eebf1028c9c"> 191</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_1ProgSlice.html#a03d4ae6a3df1adf7f1ee5eebf1028c9c">dumpCond</a>(<span class="keyword">const</span> Condition&amp; cond)<span class="keyword"> const</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a100c1962eac6d7af420defc827a025ed">dumpCond</a>(cond);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1ProgSlice.html#afac06b0be2b04cb8a65af21fd697b756">evalFinalCond</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab1fdec8d39c9890324718607d7464eab">annotatePaths</a>();</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a32ffd130984483b201c485da91ec467f"> 203</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* <a class="code" href="classSVF_1_1ProgSlice.html#a32ffd130984483b201c485da91ec467f">getSVFG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde">svfg</a>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#a899332b210414ac991b57e83851ee5be">destroy</a>();</div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ab514f387ae2122e919030c5006f1bbce"> 211</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab514f387ae2122e919030c5006f1bbce">clearCFCond</a>()</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a5406e73b860c419143035ee3774e7c1c">clearCFCond</a>();</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261"> 219</a></span>&#160; <span class="keyword">inline</span> Condition <a class="code" href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">getVFCond</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)<span class="keyword"> const</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; SVFGNodeToCondMap::const_iterator it = <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.find(node);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span>(it==<a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.end())</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a9d81f792b6a8b15395a63d06daf56573">getFalseCond</a>();</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ab5de7bf99935818ef1b0962e36b8624c"> 228</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab5de7bf99935818ef1b0962e36b8624c">setVFCond</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node, <span class="keyword">const</span> Condition &amp;cond)</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; SVFGNodeToCondMap::iterator it = <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.find(node);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="comment">// until a fixed-point is reached (condition is not changed)</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.end() &amp;&amp; <a class="code" href="classSVF_1_1ProgSlice.html#a6c63e9641e4d3d3f2f8c4a73bfba7a07">isEquivalentBranchCond</a>(it-&gt;second, cond))</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>[node] = cond;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</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;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ac7f56b6a7ce9d7ec22dd76ae9552f5e0"> 242</a></span>&#160; <span class="keyword">inline</span> Condition <a class="code" href="classSVF_1_1ProgSlice.html#ac7f56b6a7ce9d7ec22dd76ae9552f5e0">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="l00243"></a><span class="lineno"> 243</span>&#160; {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a94ef09be5ef07f4d5222059b99619bc2">ComputeIntraVFGGuard</a>(src,dst);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a48dec5bfe186a63b74005013b4cf376d"> 246</a></span>&#160; <span class="keyword">inline</span> Condition <a class="code" href="classSVF_1_1ProgSlice.html#a48dec5bfe186a63b74005013b4cf376d">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="l00247"></a><span class="lineno"> 247</span>&#160; {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a25f4b168340871cf5641fb79d008685a">ComputeInterCallVFGGuard</a>(src,dst,callBB);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#acc7452845c8130b011a078d60e6765b4"> 250</a></span>&#160; <span class="keyword">inline</span> Condition <a class="code" href="classSVF_1_1ProgSlice.html#acc7452845c8130b011a078d60e6765b4">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="l00251"></a><span class="lineno"> 251</span>&#160; {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a3934d1ebdc728a89db9cec42436004c4">ComputeInterRetVFGGuard</a>(src,dst,retBB);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a6c63e9641e4d3d3f2f8c4a73bfba7a07"> 256</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a6c63e9641e4d3d3f2f8c4a73bfba7a07">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="l00257"></a><span class="lineno"> 257</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#aa9027574586fd4fbb12039f595ecec71">isEquivalentBranchCond</a>(lhs, rhs);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; };</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a8b61702d8e35f066bb78e823f2c59ce6"> 264</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* <a class="code" href="classSVF_1_1ProgSlice.html#a8b61702d8e35f066bb78e823f2c59ce6">getSVFGNodeBB</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)<span class="keyword"> const</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = node-&gt;<a class="code" href="classSVF_1_1VFGNode.html#a0675465e11d1d42ee7e2b7ab3c5de829">getICFGNode</a>();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;NullPtrSVFGNode&gt;(node) == <span class="keyword">false</span>)</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">return</span> icfgNode-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">getBB</a>();</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#afad8cd2f720bf01eedd825c3c418abc0"> 276</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_1ProgSlice.html#afad8cd2f720bf01eedd825c3c418abc0">getCurSVFGNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#aee72d029c185c24b2bf01cdc0dcb25d8"> 280</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#aee72d029c185c24b2bf01cdc0dcb25d8">setCurSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</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; <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a> = node;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#ae717f565b947a72651c0de19bf6bcca0">setCurEvalSVFGNode</a>(node);</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="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#af55830503ef47b4b1c15c0e5b3cd6a3f">setFinalCond</a>(<span class="keyword">const</span> Condition &amp;cond)</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"> 289</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#a011fcd4f081926e808e15630cb2d4b47">finalCond</a> = cond;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab"> 293</a></span>&#160; SVFGNodeSet <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>; </div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0"> 294</a></span>&#160; SVFGNodeSet <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>; </div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80"> 295</a></span>&#160; SVFGNodeSet <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>; </div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087"> 296</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* <a class="code" href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087">root</a>; </div><div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce"> 297</a></span>&#160; SVFGNodeToCondMap <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>; </div><div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9"> 298</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">partialReachable</a>; </div><div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f"> 299</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">fullReachable</a>; </div><div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5"> 300</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>; </div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef"> 301</a></span>&#160; <a class="code" href="classSVF_1_1SaberCondAllocator.html">SaberCondAllocator</a>* <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>; </div><div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b"> 302</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a>; </div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a011fcd4f081926e808e15630cb2d4b47"> 303</a></span>&#160; Condition <a class="code" href="classSVF_1_1ProgSlice.html#a011fcd4f081926e808e15630cb2d4b47">finalCond</a>; </div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde"> 304</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* <a class="code" href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde">svfg</a>; </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;};</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* PROGSLICE_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1ProgSlice_html_aeda61b2786b128e8c45089de60dcafce"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">SVF::ProgSlice::svfgNodeToCondMap</a></div><div class="ttdeci">SVFGNodeToCondMap svfgNodeToCondMap</div><div class="ttdoc">map a SVFGNode to its path condition starting from root </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00297">ProgSlice.h:297</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1ProgSlice_html_ac1dc48ea64a89ce37394a22e609a0cd0"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">SVF::ProgSlice::getSource</a></div><div class="ttdeci">const SVFGNode * getSource() const</div><div class="ttdoc">root and sink operations </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00112">ProgSlice.h:112</a></div></div>
71
- <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>
71
+ <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>
72
72
  <div class="ttc" id="classSVF_1_1ProgSlice_html_a59cbb196069a863830b05904f16a190e"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a59cbb196069a863830b05904f16a190e">SVF::ProgSlice::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00183">ProgSlice.h:183</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1ProgSlice_html_afad8cd2f720bf01eedd825c3c418abc0"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#afad8cd2f720bf01eedd825c3c418abc0">SVF::ProgSlice::getCurSVFGNode</a></div><div class="ttdeci">const SVFGNode * getCurSVFGNode() const</div><div class="ttdoc">Get/set current SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00276">ProgSlice.h:276</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1ProgSlice_html_a684e44ade783439c6f77a8d84eed282c"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a684e44ade783439c6f77a8d84eed282c">SVF::ProgSlice::VFWorkList</a></div><div class="ttdeci">FIFOWorkList&lt; const SVFGNode * &gt; VFWorkList</div><div class="ttdoc">worklist for value-flow guard computation </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00050">ProgSlice.h:50</a></div></div>
@@ -107,12 +107,12 @@ $(function() {
107
107
  <div class="ttc" id="classSVF_1_1ProgSlice_html_aceb26d08f0d12367e4726e1ff0e25953"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aceb26d08f0d12367e4726e1ff0e25953">SVF::ProgSlice::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="ProgSlice_8h_source.html#l00171">ProgSlice.h:171</a></div></div>
108
108
  <div class="ttc" id="classSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
109
109
  <div class="ttc" id="classSVF_1_1ProgSlice_html_add10d8fd041ac7e6eb611df8a6b1384b"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#add10d8fd041ac7e6eb611df8a6b1384b">SVF::ProgSlice::forwardSliceEnd</a></div><div class="ttdeci">SVFGNodeSetIter forwardSliceEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00096">ProgSlice.h:96</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>
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
111
  <div class="ttc" id="classSVF_1_1ProgSlice_html_ada13c2389d43973ff7db18b7fca90087"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087">SVF::ProgSlice::root</a></div><div class="ttdeci">const SVFGNode * root</div><div class="ttdoc">root node on the slice </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00296">ProgSlice.h:296</a></div></div>
112
112
  <div class="ttc" id="classSVF_1_1ProgSlice_html_a2f96f034b7236791fe1d4d351174722e"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a2f96f034b7236791fe1d4d351174722e">SVF::ProgSlice::isAllReachable</a></div><div class="ttdeci">bool isAllReachable() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00148">ProgSlice.h:148</a></div></div>
113
113
  <div class="ttc" id="classSVF_1_1ProgSlice_html_a397632ce0c523c4a54c5dc578606d14d"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a397632ce0c523c4a54c5dc578606d14d">SVF::ProgSlice::setReachGlobal</a></div><div class="ttdeci">bool setReachGlobal()</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00140">ProgSlice.h:140</a></div></div>
114
114
  <div class="ttc" id="classSVF_1_1ProgSlice_html_a3e729aba81cd64e8628df630f5a0f416"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a3e729aba81cd64e8628df630f5a0f416">SVF::ProgSlice::condOr</a></div><div class="ttdeci">Condition condOr(const Condition &amp;lhs, const Condition &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00175">ProgSlice.h:175</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>
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
116
  <div class="ttc" id="classSVF_1_1ProgSlice_html_af41c438baa739406a35bcb2e9ba431dd"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#af41c438baa739406a35bcb2e9ba431dd">SVF::ProgSlice::SVFGNodeSetIter</a></div><div class="ttdeci">SVFGNodeSet::const_iterator SVFGNodeSetIter</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00046">ProgSlice.h:46</a></div></div>
117
117
  <div class="ttc" id="classSVF_1_1ProgSlice_html_a62a9f2c107f27d6c04c30ef153ffb8ed"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a62a9f2c107f27d6c04c30ef153ffb8ed">SVF::ProgSlice::isSatisfiableForAll</a></div><div class="ttdeci">bool isSatisfiableForAll()</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00096">ProgSlice.cpp:96</a></div></div>
118
118
  <div class="ttc" id="classSVF_1_1ProgSlice_html_a5a4b7f34001cc90f9b60222caee1bde6"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a5a4b7f34001cc90f9b60222caee1bde6">SVF::ProgSlice::inForwardSlice</a></div><div class="ttdeci">bool inForwardSlice(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00084">ProgSlice.h:84</a></div></div>
@@ -130,7 +130,7 @@ $(function() {
130
130
  <div class="ttc" id="classSVF_1_1ProgSlice_html_acc7452845c8130b011a078d60e6765b4"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#acc7452845c8130b011a078d60e6765b4">SVF::ProgSlice::ComputeInterRetVFGGuard</a></div><div class="ttdeci">Condition ComputeInterRetVFGGuard(const BasicBlock *src, const BasicBlock *dst, const BasicBlock *retBB)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00250">ProgSlice.h:250</a></div></div>
131
131
  <div class="ttc" id="classSVF_1_1ICFGNode_html_ac1689701c75e04481e2ae2f4482551c4"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">SVF::ICFGNode::getBB</a></div><div class="ttdeci">virtual const BasicBlock * getBB() const</div><div class="ttdoc">Return the function of this ICFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00086">ICFGNode.h:86</a></div></div>
132
132
  <div class="ttc" id="classSVF_1_1ProgSlice_html_ad761a9848d2dab7700a7fdeb91c2454d"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ad761a9848d2dab7700a7fdeb91c2454d">SVF::ProgSlice::~ProgSlice</a></div><div class="ttdeci">virtual ~ProgSlice()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00061">ProgSlice.h:61</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_1ProgSlice_html_adf620c97daed49735d21b485c448b4a2"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2">SVF::ProgSlice::sinksBegin</a></div><div class="ttdeci">SVFGNodeSetIter sinksBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00124">ProgSlice.h:124</a></div></div>
135
135
  <div class="ttc" id="classSVF_1_1ProgSlice_html_a07ce77afbf69d5e2a47afaa39eaea886"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a07ce77afbf69d5e2a47afaa39eaea886">SVF::ProgSlice::getRetSite</a></div><div class="ttdeci">const CallICFGNode * getRetSite(const SVFGEdge *edge) const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00141">ProgSlice.cpp:141</a></div></div>
136
136
  <div class="ttc" id="classSVF_1_1ProgSlice_html_a8b61702d8e35f066bb78e823f2c59ce6"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a8b61702d8e35f066bb78e823f2c59ce6">SVF::ProgSlice::getSVFGNodeBB</a></div><div class="ttdeci">const BasicBlock * getSVFGNodeBB(const SVFGNode *node) const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00264">ProgSlice.h:264</a></div></div>