svf-tools 1.0.460 → 1.0.461

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 (66) hide show
  1. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +3 -3
  2. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +35 -41
  6. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +3 -3
  7. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +5 -5
  8. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge-members.html +20 -22
  10. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +16 -20
  11. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +1 -1
  12. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  13. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +1 -1
  14. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge-members.html +31 -34
  15. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +12 -100
  16. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge-members.html +17 -19
  17. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +11 -15
  18. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +5 -5
  19. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge-members.html +19 -21
  20. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +17 -21
  21. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +8 -8
  22. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +9 -9
  23. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge-members.html +17 -19
  24. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +12 -16
  25. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +1 -1
  26. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +2 -2
  27. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
  28. package/SVF-doxygen/html/html/functions_a.html +5 -8
  29. package/SVF-doxygen/html/html/functions_c.html +9 -5
  30. package/SVF-doxygen/html/html/functions_f.html +6 -4
  31. package/SVF-doxygen/html/html/functions_func.html +10 -13
  32. package/SVF-doxygen/html/html/functions_func_g.html +5 -6
  33. package/SVF-doxygen/html/html/functions_g.html +5 -6
  34. package/SVF-doxygen/html/html/functions_l.html +3 -3
  35. package/SVF-doxygen/html/html/functions_m.html +1 -4
  36. package/SVF-doxygen/html/html/functions_n.html +3 -3
  37. package/SVF-doxygen/html/html/functions_o.html +14 -14
  38. package/SVF-doxygen/html/html/functions_p.html +11 -11
  39. package/SVF-doxygen/html/html/functions_r.html +7 -5
  40. package/SVF-doxygen/html/html/functions_s.html +6 -6
  41. package/SVF-doxygen/html/html/functions_t.html +6 -4
  42. package/SVF-doxygen/html/html/functions_v.html +3 -3
  43. package/SVF-doxygen/html/html/functions_vars_m.html +0 -3
  44. package/SVF-doxygen/html/html/search/all_1.js +0 -1
  45. package/SVF-doxygen/html/html/search/all_10.js +8 -8
  46. package/SVF-doxygen/html/html/search/all_12.js +3 -3
  47. package/SVF-doxygen/html/html/search/all_13.js +4 -4
  48. package/SVF-doxygen/html/html/search/all_14.js +6 -6
  49. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  50. package/SVF-doxygen/html/html/search/all_3.js +1 -1
  51. package/SVF-doxygen/html/html/search/all_6.js +1 -1
  52. package/SVF-doxygen/html/html/search/all_7.js +1 -1
  53. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  54. package/SVF-doxygen/html/html/search/all_d.js +0 -1
  55. package/SVF-doxygen/html/html/search/all_e.js +6 -6
  56. package/SVF-doxygen/html/html/search/all_f.js +3 -3
  57. package/SVF-doxygen/html/html/search/functions_0.js +0 -1
  58. package/SVF-doxygen/html/html/search/functions_10.js +1 -1
  59. package/SVF-doxygen/html/html/search/functions_6.js +1 -1
  60. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  61. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  62. package/SVF-doxygen/html/html/search/variables_d.js +0 -1
  63. package/SVF-doxygen/html/html/search/variables_e.js +3 -3
  64. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +2 -2
  65. package/include/Graphs/SVFGEdge.h +0 -12
  66. package/package.json +1 -1
@@ -68,7 +68,7 @@ $(function() {
68
68
  <div class="contents">
69
69
  <a href="SVFGOPT_8cpp.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">//===- SVFGOPT.cpp -- SVFG optimizer------------------------------------------//</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"> * @file: SVFGOPT.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * @author: yesen</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * @date: 31/03/2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * @version: 1.0</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;<span class="comment"> * @section LICENSE</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * @section DESCRIPTION</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.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="SVFGOPT_8h.html">Graphs/SVFGOPT.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFGStat_8h.html">Graphs/SVFGStat.h</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">using namespace </span>SVFUtil;</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"><a class="line" href="SVFGOPT_8cpp.html#af213fe89264a55a8ff44872905524f2f"> 42</a></span>&#160;<span class="keyword">static</span> std::string <a class="code" href="SVFGOPT_8cpp.html#af213fe89264a55a8ff44872905524f2f">KeepAllSelfCycle</a> = <span class="stringliteral">&quot;all&quot;</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="SVFGOPT_8cpp.html#a88c73f6d9c8ac75497c2e520a7d41935"> 43</a></span>&#160;<span class="keyword">static</span> std::string <a class="code" href="SVFGOPT_8cpp.html#a88c73f6d9c8ac75497c2e520a7d41935">KeepContextSelfCycle</a> = <span class="stringliteral">&quot;context&quot;</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="SVFGOPT_8cpp.html#a644ce2ce8b3224e9cd4cfc8480941c6f"> 44</a></span>&#160;<span class="keyword">static</span> std::string <a class="code" href="SVFGOPT_8cpp.html#a644ce2ce8b3224e9cd4cfc8480941c6f">KeepNoneSelfCycle</a> = <span class="stringliteral">&quot;none&quot;</span>;</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;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#af4d2c6d2e3b316b256f860801fe3b178"> 47</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#af4d2c6d2e3b316b256f860801fe3b178">SVFGOPT::buildSVFG</a>()</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="classSVF_1_1SVFG.html#a0920e9f9896531959d74ae61013d96d6">SVFG::buildSVFG</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="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a3061c75f7491dd737222b1b877721070">Options::DumpVFG</a>)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; dump(<span class="stringliteral">&quot;SVFG_before_opt&quot;</span>);</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"> 54</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVFUtil::pasMsg</a>(<span class="stringliteral">&quot;\tSVFG Optimisation\n&quot;</span>));</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; keepActualOutFormalIn = <a class="code" href="classSVF_1_1Options.html#acd687c31bb6662940ab8a1c3d17dc1ef">Options::KeepAOFI</a>;</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; stat-&gt;sfvgOptStart();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; handleInterValueFlow();</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; handleIntraValueFlow();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; stat-&gt;sfvgOptEnd();</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;}</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a11dc712bf74ba61160fed7a5c3efaeee"> 68</a></span>&#160;<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* <a class="code" href="classSVF_1_1SVFGOPT.html#a11dc712bf74ba61160fed7a5c3efaeee">SVFGOPT::addCallIndirectSVFGEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csid, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts)</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"> 70</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ac3ad7d0cf734e867b91a081aad1faff2">Options::ContextInsensitive</a>)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">return</span> addIntraIndirectVFEdge(srcId, dstId, cpts);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">return</span> addCallIndirectVFEdge(srcId, dstId, cpts, csid);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;}</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#afa99da68ef756d968d39a85f0fac3649"> 79</a></span>&#160;<a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* <a class="code" href="classSVF_1_1SVFGOPT.html#afa99da68ef756d968d39a85f0fac3649">SVFGOPT::addRetIndirectSVFGEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csid, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; cpts)</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; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ac3ad7d0cf734e867b91a081aad1faff2">Options::ContextInsensitive</a>)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">return</span> addIntraIndirectVFEdge(srcId, dstId, cpts);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> addRetIndirectVFEdge(srcId, dstId, cpts, csid);</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="l00090"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a4c698184cc23730fb44904d4048958da"> 90</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a4c698184cc23730fb44904d4048958da">SVFGOPT::handleInterValueFlow</a>()</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"> 92</span>&#160; <a class="code" href="classSVF_1_1SVFGOPT.html#a07874e1a77bcd5ff593757d202a4edd6">SVFGNodeSet</a> candidates;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">for</span> (SVFGNodeIDToNodeMapTy::iterator it = <a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVFG::begin</a>(), eit = <a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVFG::end</a>();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; it!=eit; ++it)</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; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = it-&gt;second;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ActualParmSVFGNode&gt;(node) || SVFUtil::isa&lt;ActualRetSVFGNode&gt;(node)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; || SVFUtil::isa&lt;FormalParmSVFGNode&gt;(node) || SVFUtil::isa&lt;FormalRetSVFGNode&gt;(node)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; || SVFUtil::isa&lt;ActualINSVFGNode&gt;(node) || SVFUtil::isa&lt;ActualOUTSVFGNode&gt;(node)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; || SVFUtil::isa&lt;FormalINSVFGNode&gt;(node) || SVFUtil::isa&lt;FormalOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; candidates.insert(node);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</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; <a class="code" href="classSVF_1_1SVFGOPT.html#a07874e1a77bcd5ff593757d202a4edd6">SVFGNodeSet</a> nodesToBeDeleted;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">for</span> (SVFGNodeSet::const_iterator it = candidates.begin(), eit = candidates.end();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; it!=eit; ++it)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = *it;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmSVFGNode</a>* fp = SVFUtil::dyn_cast&lt;FormalParmSVFGNode&gt;(node))</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; replaceFParamARetWithPHI(addInterPHIForFP(fp), fp);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; nodesToBeDeleted.insert(fp);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetSVFGNode</a>* ar = SVFUtil::dyn_cast&lt;ActualRetSVFGNode&gt;(node))</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"> 116</span>&#160; replaceFParamARetWithPHI(addInterPHIForAR(ar), ar);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; nodesToBeDeleted.insert(ar);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ActualParmSVFGNode&gt;(node) || SVFUtil::isa&lt;FormalRetSVFGNode&gt;(node))</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; nodesToBeDeleted.insert(node);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ActualINSVFGNode&gt;(node) || SVFUtil::isa&lt;FormalOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; retargetEdgesOfAInFOut(node);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; nodesToBeDeleted.insert(node);</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"> 128</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ActualOUTSVFGNode&gt;(node) || SVFUtil::isa&lt;FormalINSVFGNode&gt;(node))</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">if</span>(keepActualOutFormalIn == <span class="keyword">false</span>)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; nodesToBeDeleted.insert(node);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">for</span> (SVFGNodeSet::iterator it = nodesToBeDeleted.begin(), eit = nodesToBeDeleted.end(); it != eit; ++it)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = *it;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">if</span> (canBeRemoved(node))</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"> 140</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ActualOUTSVFGNode&gt;(node) || SVFUtil::isa&lt;FormalINSVFGNode&gt;(node))</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; retargetEdgesOfAOutFIn(node); </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; removeAllEdges(node);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; removeSVFGNode(node);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</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;</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a1fd6d26203d7d574b5664b8fcae54c1a"> 152</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a1fd6d26203d7d574b5664b8fcae54c1a">SVFGOPT::replaceFParamARetWithPHI</a>(<a class="code" href="classSVF_1_1PHIVFGNode.html">PHISVFGNode</a>* phi, <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* svfgNode)</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;{</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((SVFUtil::isa&lt;FormalParmSVFGNode&gt;(svfgNode) || SVFUtil::isa&lt;ActualRetSVFGNode&gt;(svfgNode))</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; &amp;&amp; <span class="stringliteral">&quot;expecting a formal param or actual ret svfg node&quot;</span>);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> phiId = phi-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> it = svfgNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), eit = svfgNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>();</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; it != eit; ++it)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* outEdge = *it;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = outEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId = dstNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallDirSVFGEdge.html">CallDirSVFGEdge</a>* callEdge = SVFUtil::dyn_cast&lt;CallDirSVFGEdge&gt;(outEdge))</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; addCallEdge(phiId, dstId, callEdge-&gt;getCallSiteId());</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetDirSVFGEdge.html">RetDirSVFGEdge</a>* retEdge = SVFUtil::dyn_cast&lt;RetDirSVFGEdge&gt;(outEdge))</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; addRetEdge(phiId, dstId, retEdge-&gt;getCallSiteId());</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; addIntraDirectVFEdge(phiId, dstId);</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;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FormalParmVFGNode.html">FormalParmSVFGNode</a>* fp = SVFUtil::dyn_cast&lt;FormalParmSVFGNode&gt;(svfgNode))</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">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a8b320525e5a0ed93030d578030761124">SVFGNode::iterator</a> it = svfgNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), eit = svfgNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmSVFGNode</a>* ap = SVFUtil::cast&lt;ActualParmSVFGNode&gt;((*it)-&gt;getSrcNode());</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; addInterPHIOperands(phi, ap-&gt;<a class="code" href="classSVF_1_1ActualParmVFGNode.html#a8932b197a076ab3069a9fe8b73e7fc32">getParam</a>());</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="comment">// connect actual param&#39;s def node to phi node</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; addCallEdge(getDef(ap-&gt;<a class="code" href="classSVF_1_1ActualParmVFGNode.html#a8932b197a076ab3069a9fe8b73e7fc32">getParam</a>()), phiId, getCallSiteID(ap-&gt;<a class="code" href="classSVF_1_1ActualParmVFGNode.html#ab153944a366488c5f7e91d61561e9c0e">getCallSite</a>(), fp-&gt;<a class="code" href="classSVF_1_1ICFGNode.html#ae526280cca2d6cbb2868c80461bc16da">getFun</a>()));</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; }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetSVFGNode</a>* ar = SVFUtil::dyn_cast&lt;ActualRetSVFGNode&gt;(svfgNode))</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a8b320525e5a0ed93030d578030761124">SVFGNode::iterator</a> it = svfgNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), eit = svfgNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; it != eit; ++it)</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"> 191</span>&#160; <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetSVFGNode</a>* fr = SVFUtil::cast&lt;FormalRetSVFGNode&gt;((*it)-&gt;getSrcNode());</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; addInterPHIOperands(phi, fr-&gt;<a class="code" href="classSVF_1_1FormalRetVFGNode.html#a62a894e71fcf7a3db19c0488d96a7262">getRet</a>());</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="comment">// connect formal return&#39;s def node to phi node</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; addRetEdge(getDef(fr-&gt;<a class="code" href="classSVF_1_1FormalRetVFGNode.html#a62a894e71fcf7a3db19c0488d96a7262">getRet</a>()), phiId, getCallSiteID(ar-&gt;getCallSite(), fr-&gt;<a class="code" href="classSVF_1_1FormalRetVFGNode.html#a68d9c5d58e2282b2891c93203233fd93">getFun</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;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; removeAllEdges(svfgNode);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;}</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#abefe3efa0232106f1843351ff6dd1063"> 205</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#abefe3efa0232106f1843351ff6dd1063">SVFGOPT::retargetEdgesOfAInFOut</a>(<a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</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; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().size() == 1 &amp;&amp; <span class="stringliteral">&quot;actual-in/formal-out can only have one incoming edge as its def size&quot;</span>);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* def = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> inPointsTo;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> it = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>();</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> eit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>();</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1IndirectSVFGEdge.html">IndirectSVFGEdge</a>* inEdge = SVFUtil::cast&lt;IndirectSVFGEdge&gt;(*it);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; inPointsTo = inEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a30aca718d25924f1babdf348bb0ace71">getPointsTo</a>();</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"> 219</span>&#160; def = inEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>();</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ActualINSVFGNode&gt;(node))</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; setActualINDef(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), def-&gt;getId());</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;FormalOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; setFormalOUTDef(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), def-&gt;getId());</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; it = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), eit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1IndirectSVFGEdge.html">IndirectSVFGEdge</a>* outEdge = SVFUtil::cast&lt;IndirectSVFGEdge&gt;(*it);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> intersection = inPointsTo;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; intersection &amp;= outEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a30aca718d25924f1babdf348bb0ace71">getPointsTo</a>();</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span> (intersection.empty())</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = outEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallIndSVFGEdge.html">CallIndSVFGEdge</a>* callEdge = SVFUtil::dyn_cast&lt;CallIndSVFGEdge&gt;(outEdge))</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; addCallIndirectSVFGEdge(def-&gt;getId(), dstNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), callEdge-&gt;getCallSiteId(), intersection);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetIndSVFGEdge.html">RetIndSVFGEdge</a>* retEdge = SVFUtil::dyn_cast&lt;RetIndSVFGEdge&gt;(outEdge))</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; addRetIndirectSVFGEdge(def-&gt;getId(), dstNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), retEdge-&gt;getCallSiteId(), intersection);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;expecting an inter-procedural SVFG edge&quot;</span>);</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;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; removeAllEdges(node);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;}</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a2285d20f7c4d128a8ede2e7f4f41f798"> 251</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a2285d20f7c4d128a8ede2e7f4f41f798">SVFGOPT::retargetEdgesOfAOutFIn</a>(<a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;{</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> inIt = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>();</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> inEit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>();</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">for</span> (; inIt != inEit; ++inIt)</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1IndirectSVFGEdge.html">IndirectSVFGEdge</a>* inEdge = SVFUtil::cast&lt;IndirectSVFGEdge&gt;(*inIt);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId = inEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</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; <a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> outIt = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>();</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> outEit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>();</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">for</span> (; outIt != outEit; ++outIt)</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1IndirectSVFGEdge.html">IndirectSVFGEdge</a>* outEdge = SVFUtil::cast&lt;IndirectSVFGEdge&gt;(*outIt);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> intersection = inEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a30aca718d25924f1babdf348bb0ace71">getPointsTo</a>();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; intersection &amp;= outEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a30aca718d25924f1babdf348bb0ace71">getPointsTo</a>();</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span> (intersection.empty())</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">continue</span>;</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; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId = outEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetIndSVFGEdge.html">RetIndSVFGEdge</a>* retEdge = SVFUtil::dyn_cast&lt;RetIndSVFGEdge&gt;(inEdge))</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; addRetIndirectSVFGEdge(srcId, dstId, retEdge-&gt;getCallSiteId(), intersection);</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"> 276</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallIndSVFGEdge.html">CallIndSVFGEdge</a>* callEdge = SVFUtil::dyn_cast&lt;CallIndSVFGEdge&gt;(inEdge))</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; addCallIndirectSVFGEdge(srcId, dstId, callEdge-&gt;getCallSiteId(), intersection);</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"> 280</span>&#160; <span class="keywordflow">else</span></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; addIntraIndirectVFEdge(srcId, dstId, intersection);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; removeAllEdges(node);</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;</div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#aa23c967a8fcadbaf47e93a5b3610c84d"> 293</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#aa23c967a8fcadbaf47e93a5b3610c84d">SVFGOPT::isConnectingTwoCallSites</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="l00294"></a><span class="lineno"> 294</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordtype">bool</span> hasInCallRet = <span class="keyword">false</span>;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordtype">bool</span> hasOutCallRet = <span class="keyword">false</span>;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> edgeIt = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>();</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> edgeEit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>();</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">for</span> (; edgeIt != edgeEit; ++edgeIt)</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;CallIndSVFGEdge&gt;(*edgeIt) || SVFUtil::isa&lt;RetIndSVFGEdge&gt;(*edgeIt))</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; hasInCallRet = <span class="keyword">true</span>;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">break</span>;</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; }</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; edgeIt = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>();</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; edgeEit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>();</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">for</span> (; edgeIt != edgeEit; ++edgeIt)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;CallIndSVFGEdge&gt;(*edgeIt) || SVFUtil::isa&lt;RetIndSVFGEdge&gt;(*edgeIt))</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; hasOutCallRet = <span class="keyword">true</span>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">if</span> (hasInCallRet &amp;&amp; hasOutCallRet)</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;}</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#ab72ce28409a440bbf5b84a68e5f82b85"> 335</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#ab72ce28409a440bbf5b84a68e5f82b85">SVFGOPT::canBeRemoved</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a> * node)</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;{</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ActualParmSVFGNode&gt;(node) || SVFUtil::isa&lt;FormalParmSVFGNode&gt;(node)</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; || SVFUtil::isa&lt;ActualRetSVFGNode&gt;(node) || SVFUtil::isa&lt;FormalRetSVFGNode&gt;(node))</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ActualINSVFGNode&gt;(node) || SVFUtil::isa&lt;ActualOUTSVFGNode&gt;(node)</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; || SVFUtil::isa&lt;FormalINSVFGNode&gt;(node) || SVFUtil::isa&lt;FormalOUTSVFGNode&gt;(node)</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; || SVFUtil::isa&lt;MSSAPHISVFGNode&gt;(node))</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">if</span> (isConnectingTwoCallSites(node))</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualINSVFGNode.html">ActualINSVFGNode</a>* ai = SVFUtil::dyn_cast&lt;ActualINSVFGNode&gt;(node))</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span> (actualInOfIndCS(ai) == <span class="keyword">false</span>);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1ActualOUTSVFGNode.html">ActualOUTSVFGNode</a>* ao = SVFUtil::dyn_cast&lt;ActualOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> (actualOutOfIndCS(ao) == <span class="keyword">false</span> &amp;&amp; isDefOfAInFOut(node) == <span class="keyword">false</span>);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalINSVFGNode.html">FormalINSVFGNode</a>* fi = SVFUtil::dyn_cast&lt;FormalINSVFGNode&gt;(node))</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">return</span> (formalInOfAddressTakenFunc(fi) == <span class="keyword">false</span> &amp;&amp; isDefOfAInFOut(node) == <span class="keyword">false</span>);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1FormalOUTSVFGNode.html">FormalOUTSVFGNode</a>* fo = SVFUtil::dyn_cast&lt;FormalOUTSVFGNode&gt;(node))</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">return</span> (formalOutOfAddressTakenFunc(fo) == <span class="keyword">false</span>);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;}</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;</div><div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#ac3b14bf191cadb832e3a34affd7e569d"> 374</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#ac3b14bf191cadb832e3a34affd7e569d">SVFGOPT::parseSelfCycleHandleOption</a>()</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;{</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; std::string choice = (<a class="code" href="classSVF_1_1Options.html#a3ed96242ac56a05d057ebd11b23cf053">Options::SelfCycle</a>.getValue().empty()) ? <span class="stringliteral">&quot;&quot;</span> : <a class="code" href="classSVF_1_1Options.html#a3ed96242ac56a05d057ebd11b23cf053">Options::SelfCycle</a>.getValue();</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">if</span> (choice.empty() || choice == <a class="code" href="SVFGOPT_8cpp.html#af213fe89264a55a8ff44872905524f2f">KeepAllSelfCycle</a>)</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; keepAllSelfCycle = <span class="keyword">true</span>;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (choice == <a class="code" href="SVFGOPT_8cpp.html#a88c73f6d9c8ac75497c2e520a7d41935">KeepContextSelfCycle</a>)</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; keepContextSelfCycle = <span class="keyword">true</span>;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (choice == <a class="code" href="SVFGOPT_8cpp.html#a644ce2ce8b3224e9cd4cfc8480941c6f">KeepNoneSelfCycle</a>)</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; keepAllSelfCycle = keepContextSelfCycle = <span class="keyword">false</span>;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVFUtil::writeWrnMsg</a>(<span class="stringliteral">&quot;Unrecognised option. All self cycle edges will be kept.&quot;</span>);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; keepAllSelfCycle = <span class="keyword">true</span>;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;}</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a21429d8c3fba209d9cdc22e3623c5573"> 393</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a21429d8c3fba209d9cdc22e3623c5573">SVFGOPT::handleIntraValueFlow</a>()</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;{</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; parseSelfCycleHandleOption();</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; initialWorkList();</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">while</span> (!worklist.empty())</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MSSAPHISVFGNode.html">MSSAPHISVFGNode</a>* node = worklist.pop();</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">if</span> (checkSelfCycleEdges(node))</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>() &amp;&amp; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>())</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; bypassMSSAPHINode(node);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>() &amp;&amp; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> edgeIt = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>();</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> edgeEit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>();</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">for</span> (; edgeIt != edgeEit; ++edgeIt)</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; addIntoWorklist((*edgeIt)-&gt;getSrcNode());</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; removeInEdges(node);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>() &amp;&amp; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> edgeIt = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>();</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> edgeEit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>();</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">for</span> (; edgeIt != edgeEit; ++edgeIt)</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; addIntoWorklist((*edgeIt)-&gt;getDstNode());</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; removeOutEdges(node);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>() == <span class="keyword">false</span> &amp;&amp; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; removeSVFGNode(const_cast&lt;MSSAPHISVFGNode*&gt;(node));</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;}</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div><div class="line"><a name="l00444"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#afb068fd46dfbf993decd7d6c8ca2c9ba"> 444</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#afb068fd46dfbf993decd7d6c8ca2c9ba">SVFGOPT::checkSelfCycleEdges</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MSSAPHISVFGNode.html">MSSAPHISVFGNode</a>* node)</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;{</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordtype">bool</span> hasSelfCycle = <span class="keyword">false</span>;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html#a557334ef75bb5479b045f68c27b38701">SVFGEdge::SVFGEdgeSetTy</a> inEdges = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>();</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> inEdgeIt = inEdges.begin();</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> inEdgeEit = inEdges.end();</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">for</span> (; inEdgeIt != inEdgeEit; ++inEdgeIt)</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* preEdge = *inEdgeIt;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">if</span> (preEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>() == preEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>())</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">if</span> (keepAllSelfCycle)</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; hasSelfCycle = <span class="keyword">true</span>;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">break</span>; </div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (keepContextSelfCycle &amp;&amp;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; (SVFUtil::isa&lt;CallIndSVFGEdge&gt;(preEdge) || SVFUtil::isa&lt;RetIndSVFGEdge&gt;(preEdge)))</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; hasSelfCycle = <span class="keyword">true</span>;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">continue</span>; </div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; {</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;IndirectSVFGEdge&gt;(preEdge) &amp;&amp; <span class="stringliteral">&quot;can only remove indirect SVFG edge&quot;</span>);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; removeSVFGEdge(preEdge);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; }</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">return</span> hasSelfCycle;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;}</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;</div><div class="line"><a name="l00482"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a4f3890f637ffe03c2a1981e75e3d2e16"> 482</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a4f3890f637ffe03c2a1981e75e3d2e16">SVFGOPT::bypassMSSAPHINode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MSSAPHISVFGNode.html">MSSAPHISVFGNode</a>* node)</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;{</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> inEdgeIt = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>();</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> inEdgeEit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>();</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">for</span> (; inEdgeIt != inEdgeEit; ++inEdgeIt)</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* preEdge = *inEdgeIt;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = preEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>();</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordtype">bool</span> added = <span class="keyword">false</span>;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> outEdgeIt = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>();</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> outEdgeEit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>();</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">for</span> (; outEdgeIt != outEdgeEit; ++outEdgeIt)</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* succEdge = *outEdgeIt;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = (*outEdgeIt)-&gt;getDstNode();</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">if</span> (srcNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() != dstNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; &amp;&amp; addNewSVFGEdge(srcNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), dstNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), preEdge, succEdge))</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; added = <span class="keyword">true</span>;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; {</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; addIntoWorklist(dstNode);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; }</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordflow">if</span> (added == <span class="keyword">false</span>)</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; {</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; addIntoWorklist(srcNode);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; }</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; removeAllEdges(node);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;}</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;</div><div class="line"><a name="l00525"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFGOPT.html#a6aeeb727f1d9d917ff6cffbb88350b7a"> 525</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFGOPT.html#a6aeeb727f1d9d917ff6cffbb88350b7a">SVFGOPT::addNewSVFGEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* preEdge, <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* succEdge)</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;{</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;IndirectSVFGEdge&gt;(preEdge) &amp;&amp; SVFUtil::isa&lt;IndirectSVFGEdge&gt;(succEdge)</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; &amp;&amp; <span class="stringliteral">&quot;either pre or succ edge is not indirect SVFG edge&quot;</span>);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1IndirectSVFGEdge.html">IndirectSVFGEdge</a>* preIndEdge = SVFUtil::cast&lt;IndirectSVFGEdge&gt;(preEdge);</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1IndirectSVFGEdge.html">IndirectSVFGEdge</a>* succIndEdge = SVFUtil::cast&lt;IndirectSVFGEdge&gt;(succEdge);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> intersection = preIndEdge-&gt;<a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a30aca718d25924f1babdf348bb0ace71">getPointsTo</a>();</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; intersection &amp;= succIndEdge-&gt;getPointsTo();</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">if</span> (intersection.empty())</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(bothInterEdges(preEdge, succEdge) == <span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;both edges are inter edges&quot;</span>);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallIndSVFGEdge.html">CallIndSVFGEdge</a>* preCallEdge = SVFUtil::dyn_cast&lt;CallIndSVFGEdge&gt;(preEdge))</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; {</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">return</span> addCallIndirectSVFGEdge(srcId, dstId, preCallEdge-&gt;getCallSiteId(), intersection);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; }</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallIndSVFGEdge.html">CallIndSVFGEdge</a>* succCallEdge = SVFUtil::dyn_cast&lt;CallIndSVFGEdge&gt;(succEdge))</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; {</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">return</span> addCallIndirectSVFGEdge(srcId, dstId, succCallEdge-&gt;getCallSiteId(), intersection);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; }</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetIndSVFGEdge.html">RetIndSVFGEdge</a>* preRetEdge = SVFUtil::dyn_cast&lt;RetIndSVFGEdge&gt;(preEdge))</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">return</span> addRetIndirectSVFGEdge(srcId, dstId, preRetEdge-&gt;getCallSiteId(), intersection);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; }</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetIndSVFGEdge.html">RetIndSVFGEdge</a>* succRetEdge = SVFUtil::dyn_cast&lt;RetIndSVFGEdge&gt;(succEdge))</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; {</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">return</span> addRetIndirectSVFGEdge(srcId, dstId, succRetEdge-&gt;getCallSiteId(), intersection);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; }</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; {</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">return</span> addIntraIndirectVFEdge(srcId, dstId, intersection);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; }</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;}</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1GenericNode_html_a06a7373b11143e709784de784fa476fe"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">SVF::GenericNode::hasIncomingEdge</a></div><div class="ttdeci">bool hasIncomingEdge() const</div><div class="ttdoc">Has incoming/outgoing edge set. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00194">GenericGraph.h:194</a></div></div>
71
- <div class="ttc" id="classSVF_1_1RetIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1RetIndSVFGEdge.html">SVF::RetIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00177">SVFGEdge.h:177</a></div></div>
71
+ <div class="ttc" id="classSVF_1_1RetIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1RetIndSVFGEdge.html">SVF::RetIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00165">SVFGEdge.h:165</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1ActualParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualParmVFGNode.html">SVF::ActualParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00846">VFGNode.h:846</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1SVFGOPT_html_a1fd6d26203d7d574b5664b8fcae54c1a"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#a1fd6d26203d7d574b5664b8fcae54c1a">SVF::SVFGOPT::replaceFParamARetWithPHI</a></div><div class="ttdeci">void replaceFParamARetWithPHI(PHISVFGNode *phi, SVFGNode *svfgNode)</div><div class="ttdoc">Replace FormalParam/ActualRet node with PHI node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8cpp_source.html#l00152">SVFGOPT.cpp:152</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00186">GenericGraph.h:186</a></div></div>
@@ -79,7 +79,7 @@ $(function() {
79
79
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
80
80
  <div class="ttc" id="classSVF_1_1GenericEdge_html_ae6792506a0150a9400d635eceab7f9e7"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">SVF::GenericEdge::getSrcID</a></div><div class="ttdeci">NodeID getSrcID() const</div><div class="ttdoc">get methods of the components </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00073">GenericGraph.h:73</a></div></div>
81
81
  <div class="ttc" id="classSVF_1_1FormalOUTSVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalOUTSVFGNode.html">SVF::FormalOUTSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00138">SVFGNode.h:138</a></div></div>
82
- <div class="ttc" id="classSVF_1_1CallIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00138">SVFGEdge.h:138</a></div></div>
82
+ <div class="ttc" id="classSVF_1_1CallIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00126">SVFGEdge.h:126</a></div></div>
83
83
  <div class="ttc" id="classSVF_1_1GenericNode_html_a0931220d7a38e03f206cbdc6465d32ad"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">SVF::GenericNode::hasOutgoingEdge</a></div><div class="ttdeci">bool hasOutgoingEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00198">GenericGraph.h:198</a></div></div>
84
84
  <div class="ttc" id="classSVF_1_1PHIVFGNode_html"><div class="ttname"><a href="classSVF_1_1PHIVFGNode.html">SVF::PHIVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00635">VFGNode.h:635</a></div></div>
85
85
  <div class="ttc" id="classSVF_1_1VFGEdge_html_a557334ef75bb5479b045f68c27b38701"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a557334ef75bb5479b045f68c27b38701">SVF::VFGEdge::SVFGEdgeSetTy</a></div><div class="ttdeci">VFGEdgeSetTy SVFGEdgeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00118">VFGEdge.h:118</a></div></div>
@@ -139,7 +139,7 @@ $(function() {
139
139
  <div class="ttc" id="classSVF_1_1FormalINSVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalINSVFGNode.html">SVF::FormalINSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00093">SVFGNode.h:93</a></div></div>
140
140
  <div class="ttc" id="classSVF_1_1SVFGOPT_html_ac3b14bf191cadb832e3a34affd7e569d"><div class="ttname"><a href="classSVF_1_1SVFGOPT.html#ac3b14bf191cadb832e3a34affd7e569d">SVF::SVFGOPT::parseSelfCycleHandleOption</a></div><div class="ttdeci">void parseSelfCycleHandleOption()</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8cpp_source.html#l00374">SVFGOPT.cpp:374</a></div></div>
141
141
  <div class="ttc" id="classSVF_1_1RetDirSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1RetDirSVFGEdge.html">SVF::RetDirSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00254">VFGEdge.h:254</a></div></div>
142
- <div class="ttc" id="classSVF_1_1IndirectSVFGEdge_html_a30aca718d25924f1babdf348bb0ace71"><div class="ttname"><a href="classSVF_1_1IndirectSVFGEdge.html#a30aca718d25924f1babdf348bb0ace71">SVF::IndirectSVFGEdge::getPointsTo</a></div><div class="ttdeci">const NodeBS &amp; getPointsTo() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00061">SVFGEdge.h:61</a></div></div>
142
+ <div class="ttc" id="classSVF_1_1IndirectSVFGEdge_html_a30aca718d25924f1babdf348bb0ace71"><div class="ttname"><a href="classSVF_1_1IndirectSVFGEdge.html#a30aca718d25924f1babdf348bb0ace71">SVF::IndirectSVFGEdge::getPointsTo</a></div><div class="ttdeci">const NodeBS &amp; getPointsTo() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00060">SVFGEdge.h:60</a></div></div>
143
143
  <div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
144
144
  <div class="ttc" id="SVFGOPT_8cpp_html_a88c73f6d9c8ac75497c2e520a7d41935"><div class="ttname"><a href="SVFGOPT_8cpp.html#a88c73f6d9c8ac75497c2e520a7d41935">KeepContextSelfCycle</a></div><div class="ttdeci">static std::string KeepContextSelfCycle</div><div class="ttdef"><b>Definition:</b> <a href="SVFGOPT_8cpp_source.html#l00043">SVFGOPT.cpp:43</a></div></div>
145
145
  </div><!-- fragment --></div><!-- contents -->
@@ -74,13 +74,13 @@ $(function() {
74
74
  <div class="ttc" id="classSVF_1_1VFG_html"><div class="ttname"><a href="classSVF_1_1VFG.html">SVF::VFG</a></div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00050">VFG.h:50</a></div></div>
75
75
  <div class="ttc" id="classSVF_1_1StoreVFGNode_html"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html">SVF::StoreVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00240">VFGNode.h:240</a></div></div>
76
76
  <div class="ttc" id="classSVF_1_1SVFGStat_html_a4bf9a39b93b7254f627dd393b9f2b82c"><div class="ttname"><a href="classSVF_1_1SVFGStat.html#a4bf9a39b93b7254f627dd393b9f2b82c">SVF::SVFGStat::ATVFNodeStart</a></div><div class="ttdeci">void ATVFNodeStart()</div><div class="ttdef"><b>Definition:</b> <a href="SVFGStat_8h_source.html#l00139">SVFGStat.h:139</a></div></div>
77
- <div class="ttc" id="classSVF_1_1RetIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1RetIndSVFGEdge.html">SVF::RetIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00177">SVFGEdge.h:177</a></div></div>
77
+ <div class="ttc" id="classSVF_1_1RetIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1RetIndSVFGEdge.html">SVF::RetIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00165">SVFGEdge.h:165</a></div></div>
78
78
  <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4_html_a07ad41a658bfc0a404a5f6abc823040b"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html#a07ad41a658bfc0a404a5f6abc823040b">llvm::DOTGraphTraits&lt; SVFG * &gt;::NodeType</a></div><div class="ttdeci">SVFGNode NodeType</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00765">SVFG.cpp:765</a></div></div>
79
79
  <div class="ttc" id="classSVF_1_1BinaryOPVFGNode_html"><div class="ttname"><a href="classSVF_1_1BinaryOPVFGNode.html">SVF::BinaryOPVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00395">VFGNode.h:395</a></div></div>
80
80
  <div class="ttc" id="classSVF_1_1ActualParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualParmVFGNode.html">SVF::ActualParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00846">VFGNode.h:846</a></div></div>
81
81
  <div class="ttc" id="namespacellvm_html"><div class="ttname"><a href="namespacellvm.html">llvm</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8h_source.html#l00131">CFLGraph.h:131</a></div></div>
82
82
  <div class="ttc" id="classSVF_1_1CallMU_html"><div class="ttname"><a href="classSVF_1_1CallMU.html">SVF::CallMU</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00221">MSSAMuChi.h:221</a></div></div>
83
- <div class="ttc" id="classSVF_1_1IntraIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1IntraIndSVFGEdge.html">SVF::IntraIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00106">SVFGEdge.h:106</a></div></div>
83
+ <div class="ttc" id="classSVF_1_1IntraIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1IntraIndSVFGEdge.html">SVF::IntraIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00094">SVFGEdge.h:94</a></div></div>
84
84
  <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4_html_a2efe884d285b1e4a0541e022f9ed40df"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html#a2efe884d285b1e4a0541e022f9ed40df">llvm::DOTGraphTraits&lt; SVFG * &gt;::getNodeAttributes</a></div><div class="ttdeci">static std::string getNodeAttributes(NodeType *node, SVFG *graph)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00941">SVFG.cpp:941</a></div></div>
85
85
  <div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00186">GenericGraph.h:186</a></div></div>
86
86
  <div class="ttc" id="classSVF_1_1SVFG_html_a923924d3887c668b355f4029502a3754"><div class="ttname"><a href="classSVF_1_1SVFG.html#a923924d3887c668b355f4029502a3754">SVF::SVFG::addActualINSVFGNode</a></div><div class="ttdeci">void addActualINSVFGNode(const CallICFGNode *callsite, const MRVer *ver, const NodeID nodeId)</div><div class="ttdoc">Add memory callsite mu SVFG node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00410">SVFG.h:410</a></div></div>
@@ -100,7 +100,7 @@ $(function() {
100
100
  <div class="ttc" id="classSVF_1_1FormalOUTSVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalOUTSVFGNode.html">SVF::FormalOUTSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00138">SVFGNode.h:138</a></div></div>
101
101
  <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00132">BasicTypes.h:132</a></div></div>
102
102
  <div class="ttc" id="classSVF_1_1ICFG_html_a66cb50d8c176f800f06d9cb8924eb896"><div class="ttname"><a href="classSVF_1_1ICFG.html#a66cb50d8c176f800f06d9cb8924eb896">SVF::ICFG::getRetICFGNode</a></div><div class="ttdeci">RetICFGNode * getRetICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00236">ICFG.cpp:236</a></div></div>
103
- <div class="ttc" id="classSVF_1_1CallIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00138">SVFGEdge.h:138</a></div></div>
103
+ <div class="ttc" id="classSVF_1_1CallIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00126">SVFGEdge.h:126</a></div></div>
104
104
  <div class="ttc" id="classSVF_1_1VFG_html_a2e182f7e90a3519a2147a300470a88f1"><div class="ttname"><a href="classSVF_1_1VFG.html#a2e182f7e90a3519a2147a300470a88f1">SVF::VFG::getPAGEdgeSet</a></div><div class="ttdeci">virtual SVFStmt::SVFStmtSetTy &amp; getPAGEdgeSet(SVFStmt::PEDGEK kind)</div><div class="ttdoc">Get PAGEdge set. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00435">VFG.h:435</a></div></div>
105
105
  <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4_html_a4407708863cb2a50fd4d4c516f5f3ea4"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html#a4407708863cb2a50fd4d4c516f5f3ea4">llvm::DOTGraphTraits&lt; SVFG * &gt;::getNodeLabel</a></div><div class="ttdeci">std::string getNodeLabel(NodeType *node, SVFG *graph)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00790">SVFG.cpp:790</a></div></div>
106
106
  <div class="ttc" id="classSVF_1_1SVFG_html_adc9fbb4553472b238d6c3bb5062279cb"><div class="ttname"><a href="classSVF_1_1SVFG.html#adc9fbb4553472b238d6c3bb5062279cb">SVF::SVFG::performStat</a></div><div class="ttdeci">void performStat()</div><div class="ttdoc">Perform statistics. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00751">SVFG.cpp:751</a></div></div>
@@ -126,7 +126,7 @@ $(function() {
126
126
  <div class="ttc" id="classSVF_1_1FormalOUTSVFGNode_html_a87832feaa312a4aff2de2ca0209dfe72"><div class="ttname"><a href="classSVF_1_1FormalOUTSVFGNode.html#a87832feaa312a4aff2de2ca0209dfe72">SVF::FormalOUTSVFGNode::FormalOUTSVFGNode</a></div><div class="ttdeci">FormalOUTSVFGNode(NodeID id, const MRVer *ver, const FunExitICFGNode *funExitNode)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00190">SVFG.cpp:190</a></div></div>
127
127
  <div class="ttc" id="classSVF_1_1ActualINSVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualINSVFGNode.html">SVF::ActualINSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00180">SVFGNode.h:180</a></div></div>
128
128
  <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4_html_a08335822e61278ca8deac60882343d7f"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html#a08335822e61278ca8deac60882343d7f">llvm::DOTGraphTraits&lt; SVFG * &gt;::isNodeHidden</a></div><div class="ttdeci">static bool isNodeHidden(SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00783">SVFG.cpp:783</a></div></div>
129
- <div class="ttc" id="classSVF_1_1IndirectSVFGEdge_html_a50ac2e33c6a4a41291c0a476ed07de53"><div class="ttname"><a href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">SVF::IndirectSVFGEdge::addPointsTo</a></div><div class="ttdeci">bool addPointsTo(const NodeBS &amp;c)</div><div class="ttdoc">Handle memory region. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00057">SVFGEdge.h:57</a></div></div>
129
+ <div class="ttc" id="classSVF_1_1IndirectSVFGEdge_html_a50ac2e33c6a4a41291c0a476ed07de53"><div class="ttname"><a href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">SVF::IndirectSVFGEdge::addPointsTo</a></div><div class="ttdeci">bool addPointsTo(const NodeBS &amp;c)</div><div class="ttdoc">Handle memory region. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00056">SVFGEdge.h:56</a></div></div>
130
130
  <div class="ttc" id="classSVF_1_1CallDirSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1CallDirSVFGEdge.html">SVF::CallDirSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00211">VFGEdge.h:211</a></div></div>
131
131
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_adbedb15ac0f9395c5264f087a63bad3b"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#adbedb15ac0f9395c5264f087a63bad3b">SVF::PTACallGraphEdge::CallInstSet</a></div><div class="ttdeci">Set&lt; const CallICFGNode * &gt; CallInstSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00055">PTACallGraph.h:55</a></div></div>
132
132
  <div class="ttc" id="classSVF_1_1SVFIR_html_a95f77211550ec2374d57779d88cf5138"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a95f77211550ec2374d57779d88cf5138">SVF::SVFIR::hasCallSiteArgsMap</a></div><div class="ttdeci">bool hasCallSiteArgsMap(const CallICFGNode *cs) const</div><div class="ttdoc">Callsite has argument list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00232">SVFIR.h:232</a></div></div>
@@ -198,7 +198,7 @@ $(function() {
198
198
  <div class="ttc" id="classSVF_1_1ICFG_html_a5f2c0aaba07d6fdd63058da0fb60ca8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">SVF::ICFG::getICFGNode</a></div><div class="ttdeci">ICFGNode * getICFGNode(NodeID id) const</div><div class="ttdoc">Get a ICFG node. </div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00084">ICFG.h:84</a></div></div>
199
199
  <div class="ttc" id="classSVF_1_1SVFG_html_ac9666ae7266cf1a9c0a5f7d28b39d1e9"><div class="ttname"><a href="classSVF_1_1SVFG.html#ac9666ae7266cf1a9c0a5f7d28b39d1e9">SVF::SVFG::addInterIndirectVFRetEdge</a></div><div class="ttdeci">SVFGEdge * addInterIndirectVFRetEdge(const FormalOUTSVFGNode *src, const ActualOUTSVFGNode *dst, CallSiteID csId)</div><div class="ttdoc">Add inter VF edge from function exit mu to callsite chi. </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8cpp_source.html#l00553">SVFG.cpp:553</a></div></div>
200
200
  <div class="ttc" id="classSVF_1_1MRSVFGNode_html_a28fe266d0e4618aa4448aa218495a332"><div class="ttname"><a href="classSVF_1_1MRSVFGNode.html#a28fe266d0e4618aa4448aa218495a332">SVF::MRSVFGNode::getPointsTo</a></div><div class="ttdeci">const NodeBS &amp; getPointsTo() const</div><div class="ttdoc">Return points-to of the MR. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00052">SVFGNode.h:52</a></div></div>
201
- <div class="ttc" id="classSVF_1_1ThreadMHPIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1ThreadMHPIndSVFGEdge.html">SVF::ThreadMHPIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00218">SVFGEdge.h:218</a></div></div>
201
+ <div class="ttc" id="classSVF_1_1ThreadMHPIndSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1ThreadMHPIndSVFGEdge.html">SVF::ThreadMHPIndSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00206">SVFGEdge.h:206</a></div></div>
202
202
  <div class="ttc" id="classSVF_1_1SVFG_html_accd1cbd26c9b194971f3107a57a0ab2e"><div class="ttname"><a href="classSVF_1_1SVFG.html#accd1cbd26c9b194971f3107a57a0ab2e">SVF::SVFG::setDef</a></div><div class="ttdeci">void setDef(const PAGNode *pagNode, const SVFGNode *node)</div><div class="ttdoc">Given a PAGNode, set/get its def SVFG node (definition of top level pointers) </div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00342">SVFG.h:342</a></div></div>
203
203
  <div class="ttc" id="PointerAnalysisImpl_8h_html"><div class="ttname"><a href="PointerAnalysisImpl_8h.html">PointerAnalysisImpl.h</a></div></div>
204
204
  <div class="ttc" id="classSVF_1_1EntryCHI_html"><div class="ttname"><a href="classSVF_1_1EntryCHI.html">SVF::EntryCHI</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00578">MSSAMuChi.h:578</a></div></div>
@@ -215,7 +215,7 @@ $(function() {
215
215
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a275095f60640d862034ad173af3371c3"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a275095f60640d862034ad173af3371c3">SVF::VersionedFlowSensitive::removeAllIndirectSVFGEdges</a></div><div class="ttdeci">void removeAllIndirectSVFGEdges(void)</div><div class="ttdoc">Removes all indirect edges in the SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00498">VersionedFlowSensitive.cpp:498</a></div></div>
216
216
  <div class="ttc" id="classSVF_1_1VersionedFlowSensitive_html_a984a4f929a18f97bfefac0102088a7fd"><div class="ttname"><a href="classSVF_1_1VersionedFlowSensitive.html#a984a4f929a18f97bfefac0102088a7fd">SVF::VersionedFlowSensitive::isLoad</a></div><div class="ttdeci">virtual bool isLoad(const NodeID l) const</div><div class="ttdoc">Returns true if l is a load node. </div><div class="ttdef"><b>Definition:</b> <a href="VersionedFlowSensitive_8cpp_source.html#l00435">VersionedFlowSensitive.cpp:435</a></div></div>
217
217
  <div class="ttc" id="classSVF_1_1NodeIDAllocator_1_1Clusterer_html_a36b25188130f4c21d145c950a70d616f"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator_1_1Clusterer.html#a36b25188130f4c21d145c950a70d616f">SVF::NodeIDAllocator::Clusterer::getReverseNodeMapping</a></div><div class="ttdeci">static std::vector&lt; NodeID &gt; getReverseNodeMapping(const std::vector&lt; NodeID &gt; &amp;nodeMapping)</div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00398">NodeIDAllocator.cpp:398</a></div></div>
218
- <div class="ttc" id="classSVF_1_1IndirectSVFGEdge_html_a30aca718d25924f1babdf348bb0ace71"><div class="ttname"><a href="classSVF_1_1IndirectSVFGEdge.html#a30aca718d25924f1babdf348bb0ace71">SVF::IndirectSVFGEdge::getPointsTo</a></div><div class="ttdeci">const NodeBS &amp; getPointsTo() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00061">SVFGEdge.h:61</a></div></div>
218
+ <div class="ttc" id="classSVF_1_1IndirectSVFGEdge_html_a30aca718d25924f1babdf348bb0ace71"><div class="ttname"><a href="classSVF_1_1IndirectSVFGEdge.html#a30aca718d25924f1babdf348bb0ace71">SVF::IndirectSVFGEdge::getPointsTo</a></div><div class="ttdeci">const NodeBS &amp; getPointsTo() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00060">SVFGEdge.h:60</a></div></div>
219
219
  <div class="ttc" id="classSVF_1_1DummyVersionPropSVFGNode_html"><div class="ttname"><a href="classSVF_1_1DummyVersionPropSVFGNode.html">SVF::DummyVersionPropSVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFGNode_8h_source.html#l00469">SVFGNode.h:469</a></div></div>
220
220
  <div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
221
221
  <div class="ttc" id="classSVF_1_1SVFIR_html_a2dd4d5f704906270af13e7a07f900eb1"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">SVF::SVFIR::getObject</a></div><div class="ttdeci">const MemObj * getObject(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00344">SVFIR.h:344</a></div></div>
@@ -69,28 +69,26 @@ $(function() {
69
69
 
70
70
  <p>This is the complete list of members for <a class="el" href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a>, including all inherited members.</p>
71
71
  <table class="directory">
72
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1IndirectSVFGEdge.html#a7ac57ccfe31b6cd6bbc6f15ed22a6531">addMrVer</a>(const MRVer *mr)</td><td class="entry"><a class="el" href="classSVF_1_1IndirectSVFGEdge.html">SVF::IndirectSVFGEdge</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
73
- <tr><td class="entry"><a class="el" href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">addPointsTo</a>(const NodeBS &amp;c)</td><td class="entry"><a class="el" href="classSVF_1_1IndirectSVFGEdge.html">SVF::IndirectSVFGEdge</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
74
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8383c27feab3f1acc67cacef9744c04a">CallDirVF</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></td><td class="entry"></td></tr>
75
- <tr><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html#a9651aa6a85a7ee9e626dd66a5410b191">CallIndSVFGEdge</a>(VFGNode *s, VFGNode *d, CallSiteID id)</td><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
76
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a978c857fcc06d2f988bc9ce16ce10145">CallIndVF</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></td><td class="entry"></td></tr>
77
- <tr><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html#a9da25118e904862eb1f39231c2b191bd">classof</a>(const CallIndSVFGEdge *)</td><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
78
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html#ad6a01c5fc68ce5777a801aa7668b47e9">classof</a>(const IndirectSVFGEdge *edge)</td><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
79
- <tr><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html#a54c3c37723424cb98ac6d01e9ed25c39">classof</a>(const VFGEdge *edge)</td><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
80
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html#ad50e4be3af1da84aa8a58b56faba36df">classof</a>(const GenericVFGEdgeTy *edge)</td><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
81
- <tr><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html#adb7796f5c1094379ed295e92bf4a79b9">csId</a></td><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
82
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#a93dec4c27088242a4b1b6aa82cea46b9">EdgeKindMask</a></td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
83
- <tr><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#af1c2fd4b5ef1d7b7605572bf2489c298">EdgeKindMaskBits</a></td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
84
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#a69accb303ee67733e065350e4452cbca">equalGEdge</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"></td></tr>
85
- <tr><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"></td></tr>
86
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"></td></tr>
87
- <tr><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#a6764973569c281d483afab17a75cb4dc">GenericEdge</a>(NodeTy *s, NodeTy *d, GEdgeFlag k)</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
88
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html#a3742b87170e0b48edc71ffdd6e5350aa">getCallSiteId</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
89
- <tr><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
90
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
91
- <tr><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
92
- <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#a20d8b844fc4bb0bb776d290b4e477fc5">getEdgeKindWithoutMask</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
93
- <tr><td class="entry"><a class="el" href="classSVF_1_1IndirectSVFGEdge.html#ac08d8b88c44881d87c1299d18c943ace">getMRVer</a>()</td><td class="entry"><a class="el" href="classSVF_1_1IndirectSVFGEdge.html">SVF::IndirectSVFGEdge</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
72
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1IndirectSVFGEdge.html#a50ac2e33c6a4a41291c0a476ed07de53">addPointsTo</a>(const NodeBS &amp;c)</td><td class="entry"><a class="el" href="classSVF_1_1IndirectSVFGEdge.html">SVF::IndirectSVFGEdge</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
73
+ <tr><td class="entry"><a class="el" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a8383c27feab3f1acc67cacef9744c04a">CallDirVF</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></td><td class="entry"></td></tr>
74
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html#a9651aa6a85a7ee9e626dd66a5410b191">CallIndSVFGEdge</a>(VFGNode *s, VFGNode *d, CallSiteID id)</td><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
75
+ <tr><td class="entry"><a class="el" href="classSVF_1_1VFGEdge.html#a156ae6a8b3a033f505c18c6b162e7cf5a978c857fcc06d2f988bc9ce16ce10145">CallIndVF</a> enum value</td><td class="entry"><a class="el" href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></td><td class="entry"></td></tr>
76
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html#a9da25118e904862eb1f39231c2b191bd">classof</a>(const CallIndSVFGEdge *)</td><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
77
+ <tr><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html#ad6a01c5fc68ce5777a801aa7668b47e9">classof</a>(const IndirectSVFGEdge *edge)</td><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
78
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html#a54c3c37723424cb98ac6d01e9ed25c39">classof</a>(const VFGEdge *edge)</td><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
79
+ <tr><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html#ad50e4be3af1da84aa8a58b56faba36df">classof</a>(const GenericVFGEdgeTy *edge)</td><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
80
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html#adb7796f5c1094379ed295e92bf4a79b9">csId</a></td><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
81
+ <tr><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#a93dec4c27088242a4b1b6aa82cea46b9">EdgeKindMask</a></td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
82
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#af1c2fd4b5ef1d7b7605572bf2489c298">EdgeKindMaskBits</a></td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
83
+ <tr><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#a69accb303ee67733e065350e4452cbca">equalGEdge</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"></td></tr>
84
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"></td></tr>
85
+ <tr><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#a5aceeb48929f54264807b36569019a8a">GEdgeKind</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"></td></tr>
86
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#a6764973569c281d483afab17a75cb4dc">GenericEdge</a>(NodeTy *s, NodeTy *d, GEdgeFlag k)</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
87
+ <tr><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html#a3742b87170e0b48edc71ffdd6e5350aa">getCallSiteId</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1CallIndSVFGEdge.html">SVF::CallIndSVFGEdge</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
88
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
89
+ <tr><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
90
+ <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
91
+ <tr><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#a20d8b844fc4bb0bb776d290b4e477fc5">getEdgeKindWithoutMask</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
94
92
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1IndirectSVFGEdge.html#a30aca718d25924f1babdf348bb0ace71">getPointsTo</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1IndirectSVFGEdge.html">SVF::IndirectSVFGEdge</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
95
93
  <tr><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
96
94
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>() const</td><td class="entry"><a class="el" href="classSVF_1_1GenericEdge.html">SVF::GenericEdge&lt; NodeTy &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>