svf-tools 1.0.437 → 1.0.438

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.
@@ -66,7 +66,7 @@ $(function() {
66
66
  <div class="title">MemSSA.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="MemSSA_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- MemSSA.h -- Memory SSA-------------------------------------------------//</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"> * MemorySSAPass.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Jul 14, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef MEMORYSSAPASS_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define MEMORYSSAPASS_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="MemRegion_8h.html">MSSA/MemRegion.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="MSSAMuChi_8h.html">MSSA/MSSAMuChi.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">class </span>PointerAnalysis;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">class </span>MemSSAStat;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> * Memory SSA implementation on top of partial SSA</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html"> 46</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MemSSA.html">MemSSA</a></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</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;<span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0c8f70b6283e26e70dafe02fcb5180a"> 52</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MemRegion.html#a7ed54700c976f9738012bc051b7f41f5">MemRegion::Condition</a> <a class="code" href="classSVF_1_1MemSSA.html#ac0c8f70b6283e26e70dafe02fcb5180a">Condition</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a2b4f3b19b32ac61dd1932faa82b93d8b"> 53</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSAMU.html">MSSAMU&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a2b4f3b19b32ac61dd1932faa82b93d8b">MU</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a"> 54</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1RetMU.html">RetMU&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a">RETMU</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1"> 55</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1LoadMU.html">LoadMU&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1">LOADMU</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25"> 56</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CallMU.html">CallMU&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25">CALLMU</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a503f2fda873c330ef2cc5561f396ea6e"> 57</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSACHI.html">MSSACHI&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a503f2fda873c330ef2cc5561f396ea6e">CHI</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5"> 58</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1EntryCHI.html">EntryCHI&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5">ENTRYCHI</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4"> 59</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1StoreCHI.html">StoreCHI&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4">STORECHI</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a56ffeb1f76c73766d06aedd60235c8d9"> 60</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CallCHI.html">CallCHI&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a56ffeb1f76c73766d06aedd60235c8d9">CALLCHI</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8e948ea7778158107657fdd8195530e1"> 61</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSAPHI.html">MSSAPHI&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a8e948ea7778158107657fdd8195530e1">PHI</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a57e68097212e88568eea829fb998fe0c"> 62</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSADEF.html">MSSADEF</a> <a class="code" href="classSVF_1_1MemSSA.html#a57e68097212e88568eea829fb998fe0c">MDEF</a>;</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"><a class="line" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112"> 64</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;MU*&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">MUSet</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4"> 65</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;CHI*&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">CHISet</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f"> 66</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;PHI*&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f">PHISet</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a37b84780f57cbee50cf957cfbab195c1"> 69</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">MRGenerator::MRSet</a> <a class="code" href="classSVF_1_1MemSSA.html#a37b84780f57cbee50cf957cfbab195c1">MRSet</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a7c3fda6f082231350524c2d7c16f067e"> 70</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const MemRegion*&gt; <a class="code" href="classSVF_1_1MemSSA.html#a7c3fda6f082231350524c2d7c16f067e">MRVector</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a94164c59384ef04f98a3713b504fca35"> 74</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const LoadStmt*, MUSet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a94164c59384ef04f98a3713b504fca35">LoadToMUSetMap</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#acfee1bb5534026ce991a1ab5e796c6b9"> 75</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const StoreStmt*, CHISet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#acfee1bb5534026ce991a1ab5e796c6b9">StoreToChiSetMap</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a5d4ba728fb55e615cacfc5278e6bc4b7"> 76</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CallICFGNode*, MUSet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a5d4ba728fb55e615cacfc5278e6bc4b7">CallSiteToMUSetMap</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a43b118f1b16a032fd1f27f8258c748ab"> 77</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CallICFGNode*, CHISet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a43b118f1b16a032fd1f27f8258c748ab">CallSiteToCHISetMap</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a59cca6cbd8f18c9521027d8ddd13ffc5"> 78</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const BasicBlock*, PHISet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a59cca6cbd8f18c9521027d8ddd13ffc5">BBToPhiSetMap</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac34aa1ac96600bfc27b3c2eb0b1510ca"> 82</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*, CHISet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#ac34aa1ac96600bfc27b3c2eb0b1510ca">FunToEntryChiSetMap</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a3cfc6d7134f98e5876c16c6c043a3d92"> 83</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*, MUSet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a3cfc6d7134f98e5876c16c6c043a3d92">FunToReturnMuSetMap</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa"> 87</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const BasicBlock*&gt; <a class="code" href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa">BBList</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4d4f7039c2972e671dc15b8c75abad14"> 88</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const BasicBlock*, MRSet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a4d4f7039c2972e671dc15b8c75abad14">BBToMRSetMap</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8d0c1a00d7db194da66c685d79e73de5"> 89</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const MemRegion*, BBList&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a8d0c1a00d7db194da66c685d79e73de5">MemRegToBBsMap</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#aa9dbaf51f0498f3bd878827744208899"> 93</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const MemRegion*, std::vector&lt;MRVer*&gt;</a> &gt; <a class="code" href="classSVF_1_1MemSSA.html#aa9dbaf51f0498f3bd878827744208899">MemRegToVerStackMap</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae1aca020147c270deca2a1241e3847d0"> 94</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const MemRegion*, MRVERSION&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#ae1aca020147c270deca2a1241e3847d0">MemRegToCounterMap</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e"> 97</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVFIR::SVFStmtList</a> <a class="code" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVFStmtList</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a37dca8a7d155de4870358146d219b5e5"> 101</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a37dca8a7d155de4870358146d219b5e5">timeOfGeneratingMemRegions</a>; </div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4d2418b7df74f23d8fd328f66e29f198"> 102</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a4d2418b7df74f23d8fd328f66e29f198">timeOfCreateMUCHI</a>; </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a3c7b5fa73fdc7c805ee3673fbe812b44"> 103</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a3c7b5fa73fdc7c805ee3673fbe812b44">timeOfInsertingPHI</a>; </div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a97ccd5e0b9ab6144415e26bdf95cbabd"> 104</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a97ccd5e0b9ab6144415e26bdf95cbabd">timeOfSSARenaming</a>; </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671"> 107</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671">MemPartition</a></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a9da5f4ad2a43befdbc4be319bffc80ea"> 109</a></span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a9da5f4ad2a43befdbc4be319bffc80ea">Distinct</a>,</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671ac9388cc44f91bd9a00666c0d69b32ef1"> 110</a></span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671ac9388cc44f91bd9a00666c0d69b32ef1">IntraDisjoint</a>,</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a549b5589ecfbe073623091605785fc03"> 111</a></span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a549b5589ecfbe073623091605785fc03">InterDisjoint</a></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; };</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="keyword">protected</span>:</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3"> 115</a></span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5"> 116</a></span>&#160; <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a>* <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0aeb79ec4f86f55c97bd397509acd05"> 117</a></span>&#160; <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a>* <a class="code" href="classSVF_1_1MemSSA.html#ac0aeb79ec4f86f55c97bd397509acd05">df</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a52b1598f44fe6a6e30095f596bf85cb0"> 118</a></span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* <a class="code" href="classSVF_1_1MemSSA.html#a52b1598f44fe6a6e30095f596bf85cb0">dt</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4fc930040ec54eb60629da18fb6a4d04"> 119</a></span>&#160; <a class="code" href="classSVF_1_1MemSSAStat.html">MemSSAStat</a>* <a class="code" href="classSVF_1_1MemSSA.html#a4fc930040ec54eb60629da18fb6a4d04">stat</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a695adf83e8c40b9628b1866053f68033">createMUCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp; fun);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#acc6f72d96cf29e36093ba08ea86b8983">insertPHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp; fun);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a16114eb55775f6ee812c1648dcaede0c">SSARename</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp; fun);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a271c20725d49dd65b95c062938ffde4c">SSARenameBB</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>&amp; bb);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6"> 130</a></span>&#160; LoadToMUSetMap <a class="code" href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6">load2MuSetMap</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a"> 131</a></span>&#160; StoreToChiSetMap <a class="code" href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a">store2ChiSetMap</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#aba54e534d18f68fbb97b26befd06ba1a"> 132</a></span>&#160; CallSiteToMUSetMap <a class="code" href="classSVF_1_1MemSSA.html#aba54e534d18f68fbb97b26befd06ba1a">callsiteToMuSetMap</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a1be5a6776c8785f26573b597881c8195"> 133</a></span>&#160; CallSiteToCHISetMap <a class="code" href="classSVF_1_1MemSSA.html#a1be5a6776c8785f26573b597881c8195">callsiteToChiSetMap</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23"> 134</a></span>&#160; BBToPhiSetMap <a class="code" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23">bb2PhiSetMap</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec"> 136</a></span>&#160; FunToEntryChiSetMap <a class="code" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec">funToEntryChiSetMap</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c"> 137</a></span>&#160; FunToReturnMuSetMap <a class="code" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c">funToReturnMuSetMap</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d"> 139</a></span>&#160; MemRegToVerStackMap <a class="code" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d">mr2VerStackMap</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a22e2dd0fc78877bdedd207a40540a634"> 140</a></span>&#160; MemRegToCounterMap <a class="code" href="classSVF_1_1MemSSA.html#a22e2dd0fc78877bdedd207a40540a634">mr2CounterMap</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">// (see algorithm in book Engineering A Compiler section 9.3)</span></div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa"> 146</a></span>&#160;<span class="comment"></span> MRSet <a class="code" href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa">usedRegs</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#add1d4ff17d0860906d2f5f7172176121"> 148</a></span>&#160; MemRegToBBsMap <a class="code" href="classSVF_1_1MemSSA.html#add1d4ff17d0860906d2f5f7172176121">reg2BBMap</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae64f97a984765a43f05df26b57a43a43"> 150</a></span>&#160; MRSet <a class="code" href="classSVF_1_1MemSSA.html#ae64f97a984765a43f05df26b57a43a43">varKills</a>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a3d6096aeb4155444b532b02bb8559113">destroy</a>();</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* <a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr, <a class="code" href="classSVF_1_1MSSADEF.html">MSSADEF</a>* def);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79"> 160</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* <a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; std::vector&lt;MRVer*&gt; &amp;stack = mr2VerStackMap[mr];</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!stack.empty() &amp;&amp; <span class="stringliteral">&quot;stack is empty!!&quot;</span>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">return</span> stack.back();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390"> 169</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span> (0 == varKills.count(mr))</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; usedRegs.insert(mr);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a"> 174</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">collectRegDefs</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; varKills.insert(mr);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; reg2BBMap[mr].push_back(bb);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42"> 183</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">AddLoadMU</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load, <span class="keyword">const</span> MRSet&amp; mrSet)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">AddLoadMU</a>(bb,load,*iter);</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"><a class="line" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5"> 188</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">AddStoreCHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store, <span class="keyword">const</span> MRSet&amp; mrSet)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">AddStoreCHI</a>(bb,store,*iter);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8f121e686d36748e4528d0ea66dcaa24"> 193</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a8f121e686d36748e4528d0ea66dcaa24">AddCallSiteMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> MRSet&amp; mrSet)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8f121e686d36748e4528d0ea66dcaa24">AddCallSiteMU</a>(cs,*iter);</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"><a class="line" href="classSVF_1_1MemSSA.html#ad8011273feaf046bf7f3a3f3b904a91d"> 198</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#ad8011273feaf046bf7f3a3f3b904a91d">AddCallSiteCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> MRSet&amp; mrSet)</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; <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ad8011273feaf046bf7f3a3f3b904a91d">AddCallSiteCHI</a>(cs,*iter);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a606aaf7a76ca71cb32adc9af7291ae6e"> 203</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a606aaf7a76ca71cb32adc9af7291ae6e">AddMSSAPHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> MRSet&amp; mrSet)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a606aaf7a76ca71cb32adc9af7291ae6e">AddMSSAPHI</a>(bb,*iter);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a397c835c15c15e18697beca2ff27a73f"> 208</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a397c835c15c15e18697beca2ff27a73f">AddLoadMU</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; LOADMU* mu = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1">LOADMU</a>(bb,load, mr);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; load2MuSetMap[load].insert(mu);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8d9bfa2ad724a3b286edc56b7c15e9bf"> 214</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a8d9bfa2ad724a3b286edc56b7c15e9bf">AddStoreCHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</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; STORECHI* chi = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4">STORECHI</a>(bb,store, mr);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; store2ChiSetMap[store].insert(chi);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">collectRegDefs</a>(bb,mr);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#adbaf4715d5d4c9d0be1e934178efe13e"> 221</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#adbaf4715d5d4c9d0be1e934178efe13e">AddCallSiteMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; CALLMU* mu = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25">CALLMU</a>(cs, mr);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; callsiteToMuSetMap[cs].insert(mu);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af7991c1393ef3c8b090833bc27036a49"> 227</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#af7991c1393ef3c8b090833bc27036a49">AddCallSiteCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</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; CALLCHI* chi = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a56ffeb1f76c73766d06aedd60235c8d9">CALLCHI</a>(cs, mr);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; callsiteToChiSetMap[cs].insert(chi);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">collectRegDefs</a>(chi-&gt;<a class="code" href="classSVF_1_1CallCHI.html#a69f83ff81ea017d645aadeb46334880f">getBasicBlock</a>(),mr);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a3af850d2fe9b2e75b2705c6d1355eda2"> 234</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a3af850d2fe9b2e75b2705c6d1355eda2">AddMSSAPHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</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; bb2PhiSetMap[bb].insert(<span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a8e948ea7778158107657fdd8195530e1">PHI</a>(bb, mr));</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<span class="keyword">const</span> MUSet&amp; muSet)</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; <span class="keywordflow">for</span> (MUSet::const_iterator mit = muSet.begin(), emit = muSet.end();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; mit != emit; ++mit)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; MU* mu = (*mit);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; mu-&gt;<a class="code" href="classSVF_1_1MSSAMU.html#a2af1e639aabbc5997aa4e6526f6595fb">setVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(mu-&gt;<a class="code" href="classSVF_1_1MSSAMU.html#a6bd671839ec0376439ccd81d5b2eff30">getMR</a>()));</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8"> 254</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8">RenameChiSet</a>(<span class="keyword">const</span> CHISet&amp; chiSet, MRVector&amp; memRegs)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">for</span> (CHISet::const_iterator cit = chiSet.begin(), ecit = chiSet.end();</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; cit != ecit; ++cit)</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; CHI* chi = (*cit);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; chi-&gt;<a class="code" href="classSVF_1_1MSSACHI.html#a245d8ee9e81ba4fe6f41533baf471331">setOpVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>()));</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#a343eb4c9515dfbbbdadaacf5500e5f05">setResVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>(),chi));</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; memRegs.push_back(chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>());</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; }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a630be375832b1477989af85dce6760f3"> 267</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a630be375832b1477989af85dce6760f3">RenamePhiRes</a>(<span class="keyword">const</span> PHISet&amp; phiSet, MRVector&amp; memRegs)</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">for</span> (PHISet::const_iterator iter = phiSet.begin(), eiter = phiSet.end();</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; iter != eiter; ++iter)</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; PHI* phi = *iter;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; phi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#a343eb4c9515dfbbbdadaacf5500e5f05">setResVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(phi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>(),phi));</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; memRegs.push_back(phi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>());</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; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a0ed34f7a27db045c624c5db61d53132b"> 279</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a0ed34f7a27db045c624c5db61d53132b">RenamePhiOps</a>(<span class="keyword">const</span> PHISet&amp; phiSet, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos, MRVector&amp;)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">for</span> (PHISet::const_iterator iter = phiSet.begin(), eiter = phiSet.end();</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; iter != eiter; ++iter)</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; PHI* phi = *iter;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; phi-&gt;<a class="code" href="classSVF_1_1MSSAPHI.html#a74f663dc5ecc659e98542a53414b7988">setOpVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(phi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>()), pos);</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; }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a36e9cf7394c3ece8a5f2f9bfc512956a"> 292</a></span>&#160; <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a>* <a class="code" href="classSVF_1_1MemSSA.html#a36e9cf7394c3ece8a5f2f9bfc512956a">getDF</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp;)</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#ac0aeb79ec4f86f55c97bd397509acd05">df</a>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a9741a8d0540ba4c27cb667590d246197"> 296</a></span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* <a class="code" href="classSVF_1_1MemSSA.html#a9741a8d0540ba4c27cb667590d246197">getDT</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp;)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a52b1598f44fe6a6e30095f596bf85cb0">dt</a>;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a11e1e9a74a6764131fc8aae27d8bde5e">setCurrentDFDT</a>(<a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a>* f, <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* t);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a6bd57451370f5f4c92ce212be4cddd15">MemSSA</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* p, <span class="keywordtype">bool</span> ptrOnlyMSSA);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae09603b40c7359c4cd2f644d3efc40cc"> 308</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MemSSA.html#ae09603b40c7359c4cd2f644d3efc40cc">~MemSSA</a>()</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a3d6096aeb4155444b532b02bb8559113">destroy</a>();</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1MemSSA.html#a41b153f2f8f3a27be63750e73a290569">getPAG</a>();</div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac"> 315</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div><div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ab2dfdcf6fb50ba6cacad1254350a5b09"> 320</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a>* <a class="code" href="classSVF_1_1MemSSA.html#ab2dfdcf6fb50ba6cacad1254350a5b09">getMRGenerator</a>()</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#ae56d1878046c119d1857727ca3609d74">buildMemSSA</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp; fun,<a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a>*, <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>*);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a89c40c8fad70f3aead6531261e5a3cc3">performStat</a>();</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc"> 332</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">hasMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load = SVFUtil::dyn_cast&lt;LoadStmt&gt;(inst))</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0 != load2MuSetMap.count(load)</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; &amp;&amp; <span class="stringliteral">&quot;not associated with mem region!&quot;</span>);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1"> 343</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">hasCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store = SVFUtil::dyn_cast&lt;StoreStmt&gt;(</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; inst))</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0 != store2ChiSetMap.count(store)</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; &amp;&amp; <span class="stringliteral">&quot;not associated with mem region!&quot;</span>);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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">else</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a6bd9390c6cd2a3d7a3752fba76acfb46"> 355</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#a6bd9390c6cd2a3d7a3752fba76acfb46">hasMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">return</span> callsiteToMuSetMap.find(cs)!=callsiteToMuSetMap.end();</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae16120dfc9436861f719e605617f353d"> 359</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#ae16120dfc9436861f719e605617f353d">hasCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">return</span> callsiteToChiSetMap.find(cs)!=callsiteToChiSetMap.end();</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</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"><a class="line" href="classSVF_1_1MemSSA.html#aec75259d035e3b5589e6fcbbcdfe4b2c"> 367</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#aec75259d035e3b5589e6fcbbcdfe4b2c">hasFuncEntryChi</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)<span class="keyword"> const</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">return</span> (funToEntryChiSetMap.find(fun) != funToEntryChiSetMap.end());</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a3400d9a921672b3872656acecc3eac9f"> 371</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#a3400d9a921672b3872656acecc3eac9f">hasReturnMu</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)<span class="keyword"> const</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">return</span> (funToReturnMuSetMap.find(fun) != funToReturnMuSetMap.end());</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</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"><a class="line" href="classSVF_1_1MemSSA.html#a10743fe9c116ee624387c0473815b800"> 376</a></span>&#160; <span class="keyword">inline</span> CHISet&amp; <a class="code" href="classSVF_1_1MemSSA.html#a10743fe9c116ee624387c0473815b800">getFuncEntryChiSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">return</span> funToEntryChiSetMap[fun];</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div><div class="line"><a name="l00380"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93"> 380</a></span>&#160; <span class="keyword">inline</span> MUSet&amp; <a class="code" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93">getReturnMuSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">return</span> funToReturnMuSetMap[fun];</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</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"><a class="line" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847"> 388</a></span>&#160; <span class="keyword">inline</span> MUSet&amp; <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* ld)</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">return</span> load2MuSetMap[ld];</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418"> 392</a></span>&#160; <span class="keyword">inline</span> CHISet&amp; <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* st)</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> store2ChiSetMap[st];</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div><div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af1a7b3ca0144ebff3747715e89646fbb"> 396</a></span>&#160; <span class="keyword">inline</span> MUSet&amp; <a class="code" href="classSVF_1_1MemSSA.html#af1a7b3ca0144ebff3747715e89646fbb">getMUSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">return</span> callsiteToMuSetMap[cs];</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div><div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a959e932912b924ec91e1526947493204"> 400</a></span>&#160; <span class="keyword">inline</span> CHISet&amp; <a class="code" href="classSVF_1_1MemSSA.html#a959e932912b924ec91e1526947493204">getCHISet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">return</span> callsiteToChiSetMap[cs];</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274"> 404</a></span>&#160; <span class="keyword">inline</span> PHISet&amp; <a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb)</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">return</span> bb2PhiSetMap[bb];</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div><div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298"> 408</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298">hasPHISet</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb)<span class="keyword"> const</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> bb2PhiSetMap.find(bb)!=bb2PhiSetMap.end();</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div><div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a70dd35ef458c452330dfebcdde17b84c"> 412</a></span>&#160; <span class="keyword">inline</span> LoadToMUSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a70dd35ef458c452330dfebcdde17b84c">getLoadToMUSetMap</a>()</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6">load2MuSetMap</a>;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a97166aa7102816a16734d7e2f1c130b0"> 416</a></span>&#160; <span class="keyword">inline</span> StoreToChiSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a97166aa7102816a16734d7e2f1c130b0">getStoreToChiSetMap</a>()</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a">store2ChiSetMap</a>;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a"> 420</a></span>&#160; <span class="keyword">inline</span> FunToReturnMuSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a">getFunToRetMuSetMap</a>()</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c">funToReturnMuSetMap</a>;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; }</div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198"> 424</a></span>&#160; <span class="keyword">inline</span> FunToEntryChiSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198">getFunToEntryChiSetMap</a>()</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec">funToEntryChiSetMap</a>;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div><div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43"> 428</a></span>&#160; <span class="keyword">inline</span> CallSiteToMUSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43">getCallSiteToMuSetMap</a>()</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#aba54e534d18f68fbb97b26befd06ba1a">callsiteToMuSetMap</a>;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; }</div><div class="line"><a name="l00432"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d"> 432</a></span>&#160; <span class="keyword">inline</span> CallSiteToCHISetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d">getCallSiteToChiSetMap</a>()</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a1be5a6776c8785f26573b597881c8195">callsiteToChiSetMap</a>;</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"><a class="line" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d"> 436</a></span>&#160; <span class="keyword">inline</span> BBToPhiSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d">getBBToPhiSetMap</a>()</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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23">bb2PhiSetMap</a>;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#aafc83f7f22ebf3b3683607440c488bef">getLoadMuNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#aa8c45b455e6fc60cab955534c3e50bfa">getStoreChiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a15272a4ed019d1c323d1826c1bedb70f">getFunEntryChiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a67175188232e08f5c5374f92ff61810f">getFunRetMuNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a9e8c5b85957485635d0f72c2f48bb8b5">getCallSiteMuNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a2c65795ca63a53c833f5ac17a752b6dc">getCallSiteChiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a9bb6512999cbf9c7c03153be77c8af20">getBBPhiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a749df6d6b28dd1bae569989bffeb7746">dumpMSSA</a>(<a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp; Out = <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>());</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;};</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="comment">// End namespace SVF</span></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;<span class="preprocessor">#endif </span><span class="comment">/* MEMORYSSAPASS_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1MRVer_html"><div class="ttname"><a href="classSVF_1_1MRVer.html">SVF::MRVer</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00043">MSSAMuChi.h:43</a></div></div>
69
+ <a href="MemSSA_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- MemSSA.h -- Memory SSA-------------------------------------------------//</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"> * MemorySSAPass.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Jul 14, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef MEMORYSSAPASS_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define MEMORYSSAPASS_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="MemRegion_8h.html">MSSA/MemRegion.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="MSSAMuChi_8h.html">MSSA/MSSAMuChi.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">class </span>PointerAnalysis;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">class </span>MemSSAStat;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> * Memory SSA implementation on top of partial SSA</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html"> 46</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1MemSSA.html">MemSSA</a></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</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;<span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0c8f70b6283e26e70dafe02fcb5180a"> 52</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MemRegion.html#a7ed54700c976f9738012bc051b7f41f5">MemRegion::Condition</a> <a class="code" href="classSVF_1_1MemSSA.html#ac0c8f70b6283e26e70dafe02fcb5180a">Condition</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a2b4f3b19b32ac61dd1932faa82b93d8b"> 53</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSAMU.html">MSSAMU&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a2b4f3b19b32ac61dd1932faa82b93d8b">MU</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a"> 54</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1RetMU.html">RetMU&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a953a56a65ee36fd1c78b29179cd3f33a">RETMU</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1"> 55</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1LoadMU.html">LoadMU&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1">LOADMU</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25"> 56</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CallMU.html">CallMU&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25">CALLMU</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a503f2fda873c330ef2cc5561f396ea6e"> 57</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSACHI.html">MSSACHI&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a503f2fda873c330ef2cc5561f396ea6e">CHI</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5"> 58</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1EntryCHI.html">EntryCHI&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a6a20da24d82ace1888be49a2ae0f6bd5">ENTRYCHI</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4"> 59</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1StoreCHI.html">StoreCHI&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4">STORECHI</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a56ffeb1f76c73766d06aedd60235c8d9"> 60</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CallCHI.html">CallCHI&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a56ffeb1f76c73766d06aedd60235c8d9">CALLCHI</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8e948ea7778158107657fdd8195530e1"> 61</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSAPHI.html">MSSAPHI&lt;Condition&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a8e948ea7778158107657fdd8195530e1">PHI</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a57e68097212e88568eea829fb998fe0c"> 62</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MSSADEF.html">MSSADEF</a> <a class="code" href="classSVF_1_1MemSSA.html#a57e68097212e88568eea829fb998fe0c">MDEF</a>;</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"><a class="line" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112"> 64</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;MU*&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">MUSet</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4"> 65</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;CHI*&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">CHISet</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f"> 66</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;PHI*&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f">PHISet</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a37b84780f57cbee50cf957cfbab195c1"> 69</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1MRGenerator.html#a98ac3bf264e6a85d172c2c4264ea908f">MRGenerator::MRSet</a> <a class="code" href="classSVF_1_1MemSSA.html#a37b84780f57cbee50cf957cfbab195c1">MRSet</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a7c3fda6f082231350524c2d7c16f067e"> 70</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const MemRegion*&gt; <a class="code" href="classSVF_1_1MemSSA.html#a7c3fda6f082231350524c2d7c16f067e">MRVector</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a94164c59384ef04f98a3713b504fca35"> 74</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const LoadStmt*, MUSet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a94164c59384ef04f98a3713b504fca35">LoadToMUSetMap</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#acfee1bb5534026ce991a1ab5e796c6b9"> 75</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const StoreStmt*, CHISet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#acfee1bb5534026ce991a1ab5e796c6b9">StoreToChiSetMap</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a5d4ba728fb55e615cacfc5278e6bc4b7"> 76</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CallICFGNode*, MUSet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a5d4ba728fb55e615cacfc5278e6bc4b7">CallSiteToMUSetMap</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a43b118f1b16a032fd1f27f8258c748ab"> 77</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const CallICFGNode*, CHISet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a43b118f1b16a032fd1f27f8258c748ab">CallSiteToCHISetMap</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#afeef58baed23fc731e33a07a0ef05f6a"> 78</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;const BasicBlock*, PHISet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#afeef58baed23fc731e33a07a0ef05f6a">BBToPhiSetMap</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac34aa1ac96600bfc27b3c2eb0b1510ca"> 82</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*, CHISet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#ac34aa1ac96600bfc27b3c2eb0b1510ca">FunToEntryChiSetMap</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a3cfc6d7134f98e5876c16c6c043a3d92"> 83</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFFunction*, MUSet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a3cfc6d7134f98e5876c16c6c043a3d92">FunToReturnMuSetMap</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa"> 87</a></span>&#160; <span class="keyword">typedef</span> std::vector&lt;const BasicBlock*&gt; <a class="code" href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa">BBList</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4d4f7039c2972e671dc15b8c75abad14"> 88</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const BasicBlock*, MRSet&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a4d4f7039c2972e671dc15b8c75abad14">BBToMRSetMap</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8d0c1a00d7db194da66c685d79e73de5"> 89</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const MemRegion*, BBList&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#a8d0c1a00d7db194da66c685d79e73de5">MemRegToBBsMap</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#aa9dbaf51f0498f3bd878827744208899"> 93</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const MemRegion*, std::vector&lt;MRVer*&gt;</a> &gt; <a class="code" href="classSVF_1_1MemSSA.html#aa9dbaf51f0498f3bd878827744208899">MemRegToVerStackMap</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae1aca020147c270deca2a1241e3847d0"> 94</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const MemRegion*, MRVERSION&gt;</a> <a class="code" href="classSVF_1_1MemSSA.html#ae1aca020147c270deca2a1241e3847d0">MemRegToCounterMap</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e"> 97</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SVFIR.html#a6bc360d2604ae4a0af74530b263b10d9">SVFIR::SVFStmtList</a> <a class="code" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVFStmtList</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a37dca8a7d155de4870358146d219b5e5"> 101</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a37dca8a7d155de4870358146d219b5e5">timeOfGeneratingMemRegions</a>; </div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4d2418b7df74f23d8fd328f66e29f198"> 102</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a4d2418b7df74f23d8fd328f66e29f198">timeOfCreateMUCHI</a>; </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a3c7b5fa73fdc7c805ee3673fbe812b44"> 103</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a3c7b5fa73fdc7c805ee3673fbe812b44">timeOfInsertingPHI</a>; </div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a97ccd5e0b9ab6144415e26bdf95cbabd"> 104</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1MemSSA.html#a97ccd5e0b9ab6144415e26bdf95cbabd">timeOfSSARenaming</a>; </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671"> 107</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671">MemPartition</a></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a9da5f4ad2a43befdbc4be319bffc80ea"> 109</a></span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a9da5f4ad2a43befdbc4be319bffc80ea">Distinct</a>,</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671ac9388cc44f91bd9a00666c0d69b32ef1"> 110</a></span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671ac9388cc44f91bd9a00666c0d69b32ef1">IntraDisjoint</a>,</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a549b5589ecfbe073623091605785fc03"> 111</a></span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ac0797f2ee7b59ae720095a4836533671a549b5589ecfbe073623091605785fc03">InterDisjoint</a></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; };</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="keyword">protected</span>:</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3"> 115</a></span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5"> 116</a></span>&#160; <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a>* <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ac0aeb79ec4f86f55c97bd397509acd05"> 117</a></span>&#160; <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a>* <a class="code" href="classSVF_1_1MemSSA.html#ac0aeb79ec4f86f55c97bd397509acd05">df</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a52b1598f44fe6a6e30095f596bf85cb0"> 118</a></span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* <a class="code" href="classSVF_1_1MemSSA.html#a52b1598f44fe6a6e30095f596bf85cb0">dt</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a4fc930040ec54eb60629da18fb6a4d04"> 119</a></span>&#160; <a class="code" href="classSVF_1_1MemSSAStat.html">MemSSAStat</a>* <a class="code" href="classSVF_1_1MemSSA.html#a4fc930040ec54eb60629da18fb6a4d04">stat</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a695adf83e8c40b9628b1866053f68033">createMUCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp; fun);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#acc6f72d96cf29e36093ba08ea86b8983">insertPHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp; fun);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a16114eb55775f6ee812c1648dcaede0c">SSARename</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp; fun);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a271c20725d49dd65b95c062938ffde4c">SSARenameBB</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>&amp; bb);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6"> 130</a></span>&#160; LoadToMUSetMap <a class="code" href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6">load2MuSetMap</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a"> 131</a></span>&#160; StoreToChiSetMap <a class="code" href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a">store2ChiSetMap</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#aba54e534d18f68fbb97b26befd06ba1a"> 132</a></span>&#160; CallSiteToMUSetMap <a class="code" href="classSVF_1_1MemSSA.html#aba54e534d18f68fbb97b26befd06ba1a">callsiteToMuSetMap</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a1be5a6776c8785f26573b597881c8195"> 133</a></span>&#160; CallSiteToCHISetMap <a class="code" href="classSVF_1_1MemSSA.html#a1be5a6776c8785f26573b597881c8195">callsiteToChiSetMap</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23"> 134</a></span>&#160; BBToPhiSetMap <a class="code" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23">bb2PhiSetMap</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec"> 136</a></span>&#160; FunToEntryChiSetMap <a class="code" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec">funToEntryChiSetMap</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c"> 137</a></span>&#160; FunToReturnMuSetMap <a class="code" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c">funToReturnMuSetMap</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d"> 139</a></span>&#160; MemRegToVerStackMap <a class="code" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d">mr2VerStackMap</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a22e2dd0fc78877bdedd207a40540a634"> 140</a></span>&#160; MemRegToCounterMap <a class="code" href="classSVF_1_1MemSSA.html#a22e2dd0fc78877bdedd207a40540a634">mr2CounterMap</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">// (see algorithm in book Engineering A Compiler section 9.3)</span></div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa"> 146</a></span>&#160;<span class="comment"></span> MRSet <a class="code" href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa">usedRegs</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#add1d4ff17d0860906d2f5f7172176121"> 148</a></span>&#160; MemRegToBBsMap <a class="code" href="classSVF_1_1MemSSA.html#add1d4ff17d0860906d2f5f7172176121">reg2BBMap</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae64f97a984765a43f05df26b57a43a43"> 150</a></span>&#160; MRSet <a class="code" href="classSVF_1_1MemSSA.html#ae64f97a984765a43f05df26b57a43a43">varKills</a>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a3d6096aeb4155444b532b02bb8559113">destroy</a>();</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* <a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr, <a class="code" href="classSVF_1_1MSSADEF.html">MSSADEF</a>* def);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79"> 160</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MRVer.html">MRVer</a>* <a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; std::vector&lt;MRVer*&gt; &amp;stack = mr2VerStackMap[mr];</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!stack.empty() &amp;&amp; <span class="stringliteral">&quot;stack is empty!!&quot;</span>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">return</span> stack.back();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390"> 169</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span> (0 == varKills.count(mr))</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; usedRegs.insert(mr);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a"> 174</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">collectRegDefs</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; varKills.insert(mr);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; reg2BBMap[mr].push_back(bb);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42"> 183</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">AddLoadMU</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load, <span class="keyword">const</span> MRSet&amp; mrSet)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#adb8009633b4e3b69609790fa068b3f42">AddLoadMU</a>(bb,load,*iter);</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"><a class="line" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5"> 188</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">AddStoreCHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store, <span class="keyword">const</span> MRSet&amp; mrSet)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a4e11797df16b0b612191607180acc0c5">AddStoreCHI</a>(bb,store,*iter);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8f121e686d36748e4528d0ea66dcaa24"> 193</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a8f121e686d36748e4528d0ea66dcaa24">AddCallSiteMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> MRSet&amp; mrSet)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8f121e686d36748e4528d0ea66dcaa24">AddCallSiteMU</a>(cs,*iter);</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"><a class="line" href="classSVF_1_1MemSSA.html#ad8011273feaf046bf7f3a3f3b904a91d"> 198</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#ad8011273feaf046bf7f3a3f3b904a91d">AddCallSiteCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> MRSet&amp; mrSet)</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; <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#ad8011273feaf046bf7f3a3f3b904a91d">AddCallSiteCHI</a>(cs,*iter);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a606aaf7a76ca71cb32adc9af7291ae6e"> 203</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a606aaf7a76ca71cb32adc9af7291ae6e">AddMSSAPHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> MRSet&amp; mrSet)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">for</span> (MRSet::iterator iter = mrSet.begin(), eiter = mrSet.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a606aaf7a76ca71cb32adc9af7291ae6e">AddMSSAPHI</a>(bb,*iter);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a397c835c15c15e18697beca2ff27a73f"> 208</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a397c835c15c15e18697beca2ff27a73f">AddLoadMU</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; LOADMU* mu = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a4717016109fd3bc80f3095d11afff5b1">LOADMU</a>(bb,load, mr);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; load2MuSetMap[load].insert(mu);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8d9bfa2ad724a3b286edc56b7c15e9bf"> 214</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a8d9bfa2ad724a3b286edc56b7c15e9bf">AddStoreCHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</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; STORECHI* chi = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a150e9d53ced1c143bba2d1026f739fa4">STORECHI</a>(bb,store, mr);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; store2ChiSetMap[store].insert(chi);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">collectRegDefs</a>(bb,mr);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#adbaf4715d5d4c9d0be1e934178efe13e"> 221</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#adbaf4715d5d4c9d0be1e934178efe13e">AddCallSiteMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; CALLMU* mu = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25">CALLMU</a>(cs, mr);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; callsiteToMuSetMap[cs].insert(mu);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af7991c1393ef3c8b090833bc27036a49"> 227</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#af7991c1393ef3c8b090833bc27036a49">AddCallSiteCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</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; CALLCHI* chi = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a56ffeb1f76c73766d06aedd60235c8d9">CALLCHI</a>(cs, mr);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; callsiteToChiSetMap[cs].insert(chi);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a8032c530b44e264544881d53d2fac390">collectRegUses</a>(mr);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a7c0bb1406f0e583c38e522ca06dfa73a">collectRegDefs</a>(chi-&gt;<a class="code" href="classSVF_1_1CallCHI.html#a69f83ff81ea017d645aadeb46334880f">getBasicBlock</a>(),mr);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a3af850d2fe9b2e75b2705c6d1355eda2"> 234</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a3af850d2fe9b2e75b2705c6d1355eda2">AddMSSAPHI</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb, <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr)</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; bb2PhiSetMap[bb].insert(<span class="keyword">new</span> <a class="code" href="classSVF_1_1MemSSA.html#a8e948ea7778158107657fdd8195530e1">PHI</a>(bb, mr));</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<span class="keyword">const</span> MUSet&amp; muSet)</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; <span class="keywordflow">for</span> (MUSet::const_iterator mit = muSet.begin(), emit = muSet.end();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; mit != emit; ++mit)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; MU* mu = (*mit);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; mu-&gt;<a class="code" href="classSVF_1_1MSSAMU.html#a2af1e639aabbc5997aa4e6526f6595fb">setVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(mu-&gt;<a class="code" href="classSVF_1_1MSSAMU.html#a6bd671839ec0376439ccd81d5b2eff30">getMR</a>()));</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8"> 254</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8">RenameChiSet</a>(<span class="keyword">const</span> CHISet&amp; chiSet, MRVector&amp; memRegs)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">for</span> (CHISet::const_iterator cit = chiSet.begin(), ecit = chiSet.end();</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; cit != ecit; ++cit)</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; CHI* chi = (*cit);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; chi-&gt;<a class="code" href="classSVF_1_1MSSACHI.html#a245d8ee9e81ba4fe6f41533baf471331">setOpVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>()));</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#a343eb4c9515dfbbbdadaacf5500e5f05">setResVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>(),chi));</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; memRegs.push_back(chi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>());</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; }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a630be375832b1477989af85dce6760f3"> 267</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a630be375832b1477989af85dce6760f3">RenamePhiRes</a>(<span class="keyword">const</span> PHISet&amp; phiSet, MRVector&amp; memRegs)</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">for</span> (PHISet::const_iterator iter = phiSet.begin(), eiter = phiSet.end();</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; iter != eiter; ++iter)</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; PHI* phi = *iter;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; phi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#a343eb4c9515dfbbbdadaacf5500e5f05">setResVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#a381a35d48ce2f8e348ddbbb9ce526ca8">newSSAName</a>(phi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>(),phi));</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; memRegs.push_back(phi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>());</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; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a0ed34f7a27db045c624c5db61d53132b"> 279</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a0ed34f7a27db045c624c5db61d53132b">RenamePhiOps</a>(<span class="keyword">const</span> PHISet&amp; phiSet, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos, MRVector&amp;)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">for</span> (PHISet::const_iterator iter = phiSet.begin(), eiter = phiSet.end();</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; iter != eiter; ++iter)</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; PHI* phi = *iter;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; phi-&gt;<a class="code" href="classSVF_1_1MSSAPHI.html#a74f663dc5ecc659e98542a53414b7988">setOpVer</a>(<a class="code" href="classSVF_1_1MemSSA.html#ad550a453d5b2daa6c72e7752f6b5ea79">getTopStackVer</a>(phi-&gt;<a class="code" href="classSVF_1_1MSSADEF.html#ab3070e4293ceb5ca9c25702f76ac427c">getMR</a>()), pos);</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; }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a36e9cf7394c3ece8a5f2f9bfc512956a"> 292</a></span>&#160; <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a>* <a class="code" href="classSVF_1_1MemSSA.html#a36e9cf7394c3ece8a5f2f9bfc512956a">getDF</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp;)</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#ac0aeb79ec4f86f55c97bd397509acd05">df</a>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a9741a8d0540ba4c27cb667590d246197"> 296</a></span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* <a class="code" href="classSVF_1_1MemSSA.html#a9741a8d0540ba4c27cb667590d246197">getDT</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp;)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a52b1598f44fe6a6e30095f596bf85cb0">dt</a>;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a11e1e9a74a6764131fc8aae27d8bde5e">setCurrentDFDT</a>(<a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a>* f, <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* t);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a6bd57451370f5f4c92ce212be4cddd15">MemSSA</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* p, <span class="keywordtype">bool</span> ptrOnlyMSSA);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae09603b40c7359c4cd2f644d3efc40cc"> 308</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1MemSSA.html#ae09603b40c7359c4cd2f644d3efc40cc">~MemSSA</a>()</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="classSVF_1_1MemSSA.html#a3d6096aeb4155444b532b02bb8559113">destroy</a>();</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1MemSSA.html#a41b153f2f8f3a27be63750e73a290569">getPAG</a>();</div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac"> 315</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>* <a class="code" href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">getPTA</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div><div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ab2dfdcf6fb50ba6cacad1254350a5b09"> 320</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1MRGenerator.html">MRGenerator</a>* <a class="code" href="classSVF_1_1MemSSA.html#ab2dfdcf6fb50ba6cacad1254350a5b09">getMRGenerator</a>()</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#ae56d1878046c119d1857727ca3609d74">buildMemSSA</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>&amp; fun,<a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a>*, <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>*);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a89c40c8fad70f3aead6531261e5a3cc3">performStat</a>();</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc"> 332</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">hasMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load = SVFUtil::dyn_cast&lt;LoadStmt&gt;(inst))</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0 != load2MuSetMap.count(load)</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; &amp;&amp; <span class="stringliteral">&quot;not associated with mem region!&quot;</span>);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1"> 343</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">hasCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store = SVFUtil::dyn_cast&lt;StoreStmt&gt;(</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; inst))</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0 != store2ChiSetMap.count(store)</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; &amp;&amp; <span class="stringliteral">&quot;not associated with mem region!&quot;</span>);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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">else</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div><div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a6bd9390c6cd2a3d7a3752fba76acfb46"> 355</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#a6bd9390c6cd2a3d7a3752fba76acfb46">hasMU</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">return</span> callsiteToMuSetMap.find(cs)!=callsiteToMuSetMap.end();</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#ae16120dfc9436861f719e605617f353d"> 359</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#ae16120dfc9436861f719e605617f353d">hasCHI</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">return</span> callsiteToChiSetMap.find(cs)!=callsiteToChiSetMap.end();</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</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"><a class="line" href="classSVF_1_1MemSSA.html#aec75259d035e3b5589e6fcbbcdfe4b2c"> 367</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#aec75259d035e3b5589e6fcbbcdfe4b2c">hasFuncEntryChi</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)<span class="keyword"> const</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">return</span> (funToEntryChiSetMap.find(fun) != funToEntryChiSetMap.end());</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a3400d9a921672b3872656acecc3eac9f"> 371</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#a3400d9a921672b3872656acecc3eac9f">hasReturnMu</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)<span class="keyword"> const</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">return</span> (funToReturnMuSetMap.find(fun) != funToReturnMuSetMap.end());</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</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"><a class="line" href="classSVF_1_1MemSSA.html#a10743fe9c116ee624387c0473815b800"> 376</a></span>&#160; <span class="keyword">inline</span> CHISet&amp; <a class="code" href="classSVF_1_1MemSSA.html#a10743fe9c116ee624387c0473815b800">getFuncEntryChiSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">return</span> funToEntryChiSetMap[fun];</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div><div class="line"><a name="l00380"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93"> 380</a></span>&#160; <span class="keyword">inline</span> MUSet&amp; <a class="code" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93">getReturnMuSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * fun)</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">return</span> funToReturnMuSetMap[fun];</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</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"><a class="line" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847"> 388</a></span>&#160; <span class="keyword">inline</span> MUSet&amp; <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* ld)</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">return</span> load2MuSetMap[ld];</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418"> 392</a></span>&#160; <span class="keyword">inline</span> CHISet&amp; <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* st)</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> store2ChiSetMap[st];</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div><div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#af1a7b3ca0144ebff3747715e89646fbb"> 396</a></span>&#160; <span class="keyword">inline</span> MUSet&amp; <a class="code" href="classSVF_1_1MemSSA.html#af1a7b3ca0144ebff3747715e89646fbb">getMUSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">return</span> callsiteToMuSetMap[cs];</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div><div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a959e932912b924ec91e1526947493204"> 400</a></span>&#160; <span class="keyword">inline</span> CHISet&amp; <a class="code" href="classSVF_1_1MemSSA.html#a959e932912b924ec91e1526947493204">getCHISet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">return</span> callsiteToChiSetMap[cs];</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274"> 404</a></span>&#160; <span class="keyword">inline</span> PHISet&amp; <a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb)</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">return</span> bb2PhiSetMap[bb];</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div><div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298"> 408</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298">hasPHISet</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb)<span class="keyword"> const</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> bb2PhiSetMap.find(bb)!=bb2PhiSetMap.end();</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div><div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a70dd35ef458c452330dfebcdde17b84c"> 412</a></span>&#160; <span class="keyword">inline</span> LoadToMUSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a70dd35ef458c452330dfebcdde17b84c">getLoadToMUSetMap</a>()</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a5cf94edea3a5c35b3c1d9c6ae4b5f9d6">load2MuSetMap</a>;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a97166aa7102816a16734d7e2f1c130b0"> 416</a></span>&#160; <span class="keyword">inline</span> StoreToChiSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a97166aa7102816a16734d7e2f1c130b0">getStoreToChiSetMap</a>()</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a73d7465cf166d9ffa9d234d15edb375a">store2ChiSetMap</a>;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a"> 420</a></span>&#160; <span class="keyword">inline</span> FunToReturnMuSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a">getFunToRetMuSetMap</a>()</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#abae2396bf8a37a22be9365d368fe455c">funToReturnMuSetMap</a>;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; }</div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198"> 424</a></span>&#160; <span class="keyword">inline</span> FunToEntryChiSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#afd4787df4466c24948d8384e3a756198">getFunToEntryChiSetMap</a>()</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec">funToEntryChiSetMap</a>;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div><div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43"> 428</a></span>&#160; <span class="keyword">inline</span> CallSiteToMUSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a06081aa029b1fe3f9427f85a0261fd43">getCallSiteToMuSetMap</a>()</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#aba54e534d18f68fbb97b26befd06ba1a">callsiteToMuSetMap</a>;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; }</div><div class="line"><a name="l00432"></a><span class="lineno"><a class="line" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d"> 432</a></span>&#160; <span class="keyword">inline</span> CallSiteToCHISetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d">getCallSiteToChiSetMap</a>()</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a1be5a6776c8785f26573b597881c8195">callsiteToChiSetMap</a>;</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"><a class="line" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d"> 436</a></span>&#160; <span class="keyword">inline</span> BBToPhiSetMap&amp; <a class="code" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d">getBBToPhiSetMap</a>()</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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23">bb2PhiSetMap</a>;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#aafc83f7f22ebf3b3683607440c488bef">getLoadMuNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#aa8c45b455e6fc60cab955534c3e50bfa">getStoreChiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a15272a4ed019d1c323d1826c1bedb70f">getFunEntryChiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a67175188232e08f5c5374f92ff61810f">getFunRetMuNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a9e8c5b85957485635d0f72c2f48bb8b5">getCallSiteMuNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a2c65795ca63a53c833f5ac17a752b6dc">getCallSiteChiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1MemSSA.html#a9bb6512999cbf9c7c03153be77c8af20">getBBPhiNum</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MemSSA.html#a749df6d6b28dd1bae569989bffeb7746">dumpMSSA</a>(<a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp; Out = <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>());</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;};</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="comment">// End namespace SVF</span></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;<span class="preprocessor">#endif </span><span class="comment">/* MEMORYSSAPASS_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1MRVer_html"><div class="ttname"><a href="classSVF_1_1MRVer.html">SVF::MRVer</a></div><div class="ttdef"><b>Definition:</b> <a href="MSSAMuChi_8h_source.html#l00043">MSSAMuChi.h:43</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1MemSSA_html_a2e656a50f8964fc3e99d1d436de64418"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">SVF::MemSSA::getCHISet</a></div><div class="ttdeci">CHISet &amp; getCHISet(const StoreStmt *st)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00392">MemSSA.h:392</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html">SVF::BVDataPTAImpl</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00042">PointerAnalysisImpl.h:42</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1MemSSA_html_a57e68097212e88568eea829fb998fe0c"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a57e68097212e88568eea829fb998fe0c">SVF::MemSSA::MDEF</a></div><div class="ttdeci">MSSADEF MDEF</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00062">MemSSA.h:62</a></div></div>
@@ -169,6 +169,7 @@ $(function() {
169
169
  <div class="ttc" id="classSVF_1_1MemSSA_html_a70dd35ef458c452330dfebcdde17b84c"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a70dd35ef458c452330dfebcdde17b84c">SVF::MemSSA::getLoadToMUSetMap</a></div><div class="ttdeci">LoadToMUSetMap &amp; getLoadToMUSetMap()</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00412">MemSSA.h:412</a></div></div>
170
170
  <div class="ttc" id="classSVF_1_1MemSSA_html_a43b118f1b16a032fd1f27f8258c748ab"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a43b118f1b16a032fd1f27f8258c748ab">SVF::MemSSA::CallSiteToCHISetMap</a></div><div class="ttdeci">Map&lt; const CallICFGNode *, CHISet &gt; CallSiteToCHISetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00077">MemSSA.h:77</a></div></div>
171
171
  <div class="ttc" id="classSVF_1_1MemSSA_html_a966477062a453901da3631015fcf737d"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d">SVF::MemSSA::getBBToPhiSetMap</a></div><div class="ttdeci">BBToPhiSetMap &amp; getBBToPhiSetMap()</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00436">MemSSA.h:436</a></div></div>
172
+ <div class="ttc" id="classSVF_1_1MemSSA_html_afeef58baed23fc731e33a07a0ef05f6a"><div class="ttname"><a href="classSVF_1_1MemSSA.html#afeef58baed23fc731e33a07a0ef05f6a">SVF::MemSSA::BBToPhiSetMap</a></div><div class="ttdeci">OrderedMap&lt; const BasicBlock *, PHISet &gt; BBToPhiSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00078">MemSSA.h:78</a></div></div>
172
173
  <div class="ttc" id="classSVF_1_1MemSSA_html_aa8c45b455e6fc60cab955534c3e50bfa"><div class="ttname"><a href="classSVF_1_1MemSSA.html#aa8c45b455e6fc60cab955534c3e50bfa">SVF::MemSSA::getStoreChiNum</a></div><div class="ttdeci">u32_t getStoreChiNum() const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00494">MemSSA.cpp:494</a></div></div>
173
174
  <div class="ttc" id="classSVF_1_1MemSSA_html_a97ccd5e0b9ab6144415e26bdf95cbabd"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a97ccd5e0b9ab6144415e26bdf95cbabd">SVF::MemSSA::timeOfSSARenaming</a></div><div class="ttdeci">static double timeOfSSARenaming</div><div class="ttdoc">Time for SSA rename. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00104">MemSSA.h:104</a></div></div>
174
175
  <div class="ttc" id="classSVF_1_1MemSSA_html_a2527b76b92dffa8f8513ebfdcc8d8133"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">SVF::MemSSA::RenameMuSet</a></div><div class="ttdeci">void RenameMuSet(const MUSet &amp;muSet)</div><div class="ttdoc">Rename mus, chis and phis. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00243">MemSSA.h:243</a></div></div>
@@ -197,7 +198,6 @@ $(function() {
197
198
  <div class="ttc" id="classSVF_1_1MemSSA_html_ae09603b40c7359c4cd2f644d3efc40cc"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ae09603b40c7359c4cd2f644d3efc40cc">SVF::MemSSA::~MemSSA</a></div><div class="ttdeci">virtual ~MemSSA()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00308">MemSSA.h:308</a></div></div>
198
199
  <div class="ttc" id="classSVF_1_1MemRegion_html"><div class="ttname"><a href="classSVF_1_1MemRegion.html">SVF::MemRegion</a></div><div class="ttdoc">Memory Region class. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00051">MemRegion.h:51</a></div></div>
199
200
  <div class="ttc" id="classSVF_1_1MemSSA_html_a503f2fda873c330ef2cc5561f396ea6e"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a503f2fda873c330ef2cc5561f396ea6e">SVF::MemSSA::CHI</a></div><div class="ttdeci">MSSACHI&lt; Condition &gt; CHI</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00057">MemSSA.h:57</a></div></div>
200
- <div class="ttc" id="classSVF_1_1MemSSA_html_a59cca6cbd8f18c9521027d8ddd13ffc5"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a59cca6cbd8f18c9521027d8ddd13ffc5">SVF::MemSSA::BBToPhiSetMap</a></div><div class="ttdeci">Map&lt; const BasicBlock *, PHISet &gt; BBToPhiSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00078">MemSSA.h:78</a></div></div>
201
201
  <div class="ttc" id="classSVF_1_1MemSSA_html_a67175188232e08f5c5374f92ff61810f"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a67175188232e08f5c5374f92ff61810f">SVF::MemSSA::getFunRetMuNum</a></div><div class="ttdeci">u32_t getFunRetMuNum() const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00528">MemSSA.cpp:528</a></div></div>
202
202
  <div class="ttc" id="classSVF_1_1MemSSA_html_a37b84780f57cbee50cf957cfbab195c1"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a37b84780f57cbee50cf957cfbab195c1">SVF::MemSSA::MRSet</a></div><div class="ttdeci">MRGenerator::MRSet MRSet</div><div class="ttdoc">Define mem region set. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00069">MemSSA.h:69</a></div></div>
203
203
  <div class="ttc" id="classSVF_1_1MemSSA_html_ad40617a1907b9a6b8cc24888ce54a0ac"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">SVF::MemSSA::getPTA</a></div><div class="ttdeci">BVDataPTAImpl * getPTA() const</div><div class="ttdoc">Return PTA. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00315">MemSSA.h:315</a></div></div>
@@ -226,6 +226,7 @@ $(function() {
226
226
  <div class="ttc" id="classSVF_1_1MemSSA_html_adbaf4715d5d4c9d0be1e934178efe13e"><div class="ttname"><a href="classSVF_1_1MemSSA.html#adbaf4715d5d4c9d0be1e934178efe13e">SVF::MemSSA::AddCallSiteMU</a></div><div class="ttdeci">void AddCallSiteMU(const CallICFGNode *cs, const MemRegion *mr)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00221">MemSSA.h:221</a></div></div>
227
227
  <div class="ttc" id="classSVF_1_1MemSSA_html_abfb338ce36ad46a9654d50dd6e2b07f1"><div class="ttname"><a href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">SVF::MemSSA::hasCHI</a></div><div class="ttdeci">bool hasCHI(const PAGEdge *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00343">MemSSA.h:343</a></div></div>
228
228
  <div class="ttc" id="classSVF_1_1MemSSA_html_a44cbdb1231c2709c24d19ad2bae2475a"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a44cbdb1231c2709c24d19ad2bae2475a">SVF::MemSSA::getFunToRetMuSetMap</a></div><div class="ttdeci">FunToReturnMuSetMap &amp; getFunToRetMuSetMap()</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00420">MemSSA.h:420</a></div></div>
229
+ <div class="ttc" id="namespaceSVF_html_aedf0d6718ca176e0b9e17ab4b30729c6"><div class="ttname"><a href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">SVF::OrderedMap</a></div><div class="ttdeci">std::map&lt; Key, Value, Compare, Allocator &gt; OrderedMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00113">SVFBasicTypes.h:113</a></div></div>
229
230
  </div><!-- fragment --></div><!-- contents -->
230
231
  <!-- start footer part -->
231
232
  <hr class="footer"/><address class="footer"><small>
@@ -82,7 +82,7 @@ $(function() {
82
82
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23">bb2PhiSetMap</a></td><td class="entry"><a class="el" href="classSVF_1_1MemSSA.html">SVF::MemSSA</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
83
83
  <tr><td class="entry"><a class="el" href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa">BBList</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1MemSSA.html">SVF::MemSSA</a></td><td class="entry"></td></tr>
84
84
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1MemSSA.html#a4d4f7039c2972e671dc15b8c75abad14">BBToMRSetMap</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1MemSSA.html">SVF::MemSSA</a></td><td class="entry"></td></tr>
85
- <tr><td class="entry"><a class="el" href="classSVF_1_1MemSSA.html#a59cca6cbd8f18c9521027d8ddd13ffc5">BBToPhiSetMap</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1MemSSA.html">SVF::MemSSA</a></td><td class="entry"></td></tr>
85
+ <tr><td class="entry"><a class="el" href="classSVF_1_1MemSSA.html#afeef58baed23fc731e33a07a0ef05f6a">BBToPhiSetMap</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1MemSSA.html">SVF::MemSSA</a></td><td class="entry"></td></tr>
86
86
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1MemSSA.html#ae56d1878046c119d1857727ca3609d74">buildMemSSA</a>(const SVFFunction &amp;fun, DominanceFrontier *, DominatorTree *)</td><td class="entry"><a class="el" href="classSVF_1_1MemSSA.html">SVF::MemSSA</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
87
87
  <tr><td class="entry"><a class="el" href="classSVF_1_1MemSSA.html#a56ffeb1f76c73766d06aedd60235c8d9">CALLCHI</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1MemSSA.html">SVF::MemSSA</a></td><td class="entry"></td></tr>
88
88
  <tr class="even"><td class="entry"><a class="el" href="classSVF_1_1MemSSA.html#a7be50dd82679b45a8c400f5a12056a25">CALLMU</a> typedef</td><td class="entry"><a class="el" href="classSVF_1_1MemSSA.html">SVF::MemSSA</a></td><td class="entry"></td></tr>
@@ -140,8 +140,8 @@ Public Types</h2></td></tr>
140
140
  <tr class="separator:a5d4ba728fb55e615cacfc5278e6bc4b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
141
141
  <tr class="memitem:a43b118f1b16a032fd1f27f8258c748ab"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt; const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *, <a class="el" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">CHISet</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a43b118f1b16a032fd1f27f8258c748ab">CallSiteToCHISetMap</a></td></tr>
142
142
  <tr class="separator:a43b118f1b16a032fd1f27f8258c748ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
143
- <tr class="memitem:a59cca6cbd8f18c9521027d8ddd13ffc5"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt; const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *, <a class="el" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f">PHISet</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a59cca6cbd8f18c9521027d8ddd13ffc5">BBToPhiSetMap</a></td></tr>
144
- <tr class="separator:a59cca6cbd8f18c9521027d8ddd13ffc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
143
+ <tr class="memitem:afeef58baed23fc731e33a07a0ef05f6a"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap</a>&lt; const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *, <a class="el" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f">PHISet</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#afeef58baed23fc731e33a07a0ef05f6a">BBToPhiSetMap</a></td></tr>
144
+ <tr class="separator:afeef58baed23fc731e33a07a0ef05f6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
145
145
  <tr><td colspan="2"><div class="groupHeader"></div></td></tr>
146
146
  <tr class="memitem:a66e693af7b37e4e58b4834898d6a34fa"><td class="memItemLeft" align="right" valign="top">typedef std::vector&lt; const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa">BBList</a></td></tr>
147
147
  <tr class="memdesc:a66e693af7b37e4e58b4834898d6a34fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">For phi insertion. <a href="#a66e693af7b37e4e58b4834898d6a34fa">More...</a><br /></td></tr>
@@ -223,7 +223,7 @@ Public Member Functions</h2></td></tr>
223
223
  <tr class="separator:a06081aa029b1fe3f9427f85a0261fd43"><td class="memSeparator" colspan="2">&#160;</td></tr>
224
224
  <tr class="memitem:a8f88acad31782bfa962e4349d8f4185d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1MemSSA.html#a43b118f1b16a032fd1f27f8258c748ab">CallSiteToCHISetMap</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a8f88acad31782bfa962e4349d8f4185d">getCallSiteToChiSetMap</a> ()</td></tr>
225
225
  <tr class="separator:a8f88acad31782bfa962e4349d8f4185d"><td class="memSeparator" colspan="2">&#160;</td></tr>
226
- <tr class="memitem:a966477062a453901da3631015fcf737d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1MemSSA.html#a59cca6cbd8f18c9521027d8ddd13ffc5">BBToPhiSetMap</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d">getBBToPhiSetMap</a> ()</td></tr>
226
+ <tr class="memitem:a966477062a453901da3631015fcf737d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1MemSSA.html#afeef58baed23fc731e33a07a0ef05f6a">BBToPhiSetMap</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a966477062a453901da3631015fcf737d">getBBToPhiSetMap</a> ()</td></tr>
227
227
  <tr class="separator:a966477062a453901da3631015fcf737d"><td class="memSeparator" colspan="2">&#160;</td></tr>
228
228
  <tr><td colspan="2"><div class="groupHeader"></div></td></tr>
229
229
  <tr class="memitem:aafc83f7f22ebf3b3683607440c488bef"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#aafc83f7f22ebf3b3683607440c488bef">getLoadMuNum</a> () const</td></tr>
@@ -357,7 +357,7 @@ Private Attributes</h2></td></tr>
357
357
  <tr class="separator:aba54e534d18f68fbb97b26befd06ba1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
358
358
  <tr class="memitem:a1be5a6776c8785f26573b597881c8195"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1MemSSA.html#a43b118f1b16a032fd1f27f8258c748ab">CallSiteToCHISetMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a1be5a6776c8785f26573b597881c8195">callsiteToChiSetMap</a></td></tr>
359
359
  <tr class="separator:a1be5a6776c8785f26573b597881c8195"><td class="memSeparator" colspan="2">&#160;</td></tr>
360
- <tr class="memitem:a190061a6f7423461f4292fc326330f23"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1MemSSA.html#a59cca6cbd8f18c9521027d8ddd13ffc5">BBToPhiSetMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23">bb2PhiSetMap</a></td></tr>
360
+ <tr class="memitem:a190061a6f7423461f4292fc326330f23"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1MemSSA.html#afeef58baed23fc731e33a07a0ef05f6a">BBToPhiSetMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a190061a6f7423461f4292fc326330f23">bb2PhiSetMap</a></td></tr>
361
361
  <tr class="separator:a190061a6f7423461f4292fc326330f23"><td class="memSeparator" colspan="2">&#160;</td></tr>
362
362
  <tr class="memitem:a59314f6ce17919574d687a08a38b55ec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1MemSSA.html#ac34aa1ac96600bfc27b3c2eb0b1510ca">FunToEntryChiSetMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1MemSSA.html#a59314f6ce17919574d687a08a38b55ec">funToEntryChiSetMap</a></td></tr>
363
363
  <tr class="separator:a59314f6ce17919574d687a08a38b55ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -416,14 +416,14 @@ Private Attributes</h2></td></tr>
416
416
 
417
417
  </div>
418
418
  </div>
419
- <a id="a59cca6cbd8f18c9521027d8ddd13ffc5"></a>
420
- <h2 class="memtitle"><span class="permalink"><a href="#a59cca6cbd8f18c9521027d8ddd13ffc5">&#9670;&nbsp;</a></span>BBToPhiSetMap</h2>
419
+ <a id="afeef58baed23fc731e33a07a0ef05f6a"></a>
420
+ <h2 class="memtitle"><span class="permalink"><a href="#afeef58baed23fc731e33a07a0ef05f6a">&#9670;&nbsp;</a></span>BBToPhiSetMap</h2>
421
421
 
422
422
  <div class="memitem">
423
423
  <div class="memproto">
424
424
  <table class="memname">
425
425
  <tr>
426
- <td class="memname">typedef <a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt;const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>*, <a class="el" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f">PHISet</a>&gt; <a class="el" href="classSVF_1_1MemSSA.html#a59cca6cbd8f18c9521027d8ddd13ffc5">SVF::MemSSA::BBToPhiSetMap</a></td>
426
+ <td class="memname">typedef <a class="el" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap</a>&lt;const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>*, <a class="el" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f">PHISet</a>&gt; <a class="el" href="classSVF_1_1MemSSA.html#afeef58baed23fc731e33a07a0ef05f6a">SVF::MemSSA::BBToPhiSetMap</a></td>
427
427
  </tr>
428
428
  </table>
429
429
  </div><div class="memdoc">
@@ -1745,7 +1745,7 @@ Private Attributes</h2></td></tr>
1745
1745
  <td class="mlabels-left">
1746
1746
  <table class="memname">
1747
1747
  <tr>
1748
- <td class="memname"><a class="el" href="classSVF_1_1MemSSA.html#a59cca6cbd8f18c9521027d8ddd13ffc5">BBToPhiSetMap</a>&amp; SVF::MemSSA::getBBToPhiSetMap </td>
1748
+ <td class="memname"><a class="el" href="classSVF_1_1MemSSA.html#afeef58baed23fc731e33a07a0ef05f6a">BBToPhiSetMap</a>&amp; SVF::MemSSA::getBBToPhiSetMap </td>
1749
1749
  <td>(</td>
1750
1750
  <td class="paramname"></td><td>)</td>
1751
1751
  <td></td>
@@ -3114,7 +3114,7 @@ Private Attributes</h2></td></tr>
3114
3114
  <td class="mlabels-left">
3115
3115
  <table class="memname">
3116
3116
  <tr>
3117
- <td class="memname"><a class="el" href="classSVF_1_1MemSSA.html#a59cca6cbd8f18c9521027d8ddd13ffc5">BBToPhiSetMap</a> SVF::MemSSA::bb2PhiSetMap</td>
3117
+ <td class="memname"><a class="el" href="classSVF_1_1MemSSA.html#afeef58baed23fc731e33a07a0ef05f6a">BBToPhiSetMap</a> SVF::MemSSA::bb2PhiSetMap</td>
3118
3118
  </tr>
3119
3119
  </table>
3120
3120
  </td>
@@ -192,7 +192,7 @@ $(function() {
192
192
  : <a class="el" href="classSVF_1_1MemSSA.html#a4d4f7039c2972e671dc15b8c75abad14">SVF::MemSSA</a>
193
193
  </li>
194
194
  <li>BBToPhiSetMap
195
- : <a class="el" href="classSVF_1_1MemSSA.html#a59cca6cbd8f18c9521027d8ddd13ffc5">SVF::MemSSA</a>
195
+ : <a class="el" href="classSVF_1_1MemSSA.html#afeef58baed23fc731e33a07a0ef05f6a">SVF::MemSSA</a>
196
196
  </li>
197
197
  <li>BBWorkList
198
198
  : <a class="el" href="classSVF_1_1PCG.html#a05759205f1362b6d72041cf669cf028d">SVF::PCG</a>
@@ -124,7 +124,7 @@ $(function() {
124
124
  : <a class="el" href="classSVF_1_1MemSSA.html#a4d4f7039c2972e671dc15b8c75abad14">SVF::MemSSA</a>
125
125
  </li>
126
126
  <li>BBToPhiSetMap
127
- : <a class="el" href="classSVF_1_1MemSSA.html#a59cca6cbd8f18c9521027d8ddd13ffc5">SVF::MemSSA</a>
127
+ : <a class="el" href="classSVF_1_1MemSSA.html#afeef58baed23fc731e33a07a0ef05f6a">SVF::MemSSA</a>
128
128
  </li>
129
129
  <li>BBWorkList
130
130
  : <a class="el" href="classSVF_1_1PCG.html#a05759205f1362b6d72041cf669cf028d">SVF::PCG</a>
@@ -37,7 +37,7 @@ var searchData=
37
37
  ['bbset',['BBSet',['../classSVF_1_1ICFGBuilder.html#abb7144bcc587e236fd22f6c8896117f5',1,'SVF::ICFGBuilder']]],
38
38
  ['bbtocondmap',['BBToCondMap',['../classSVF_1_1PathCondAllocator.html#ae3edcb70d9f0d65089f39147a635526d',1,'SVF::PathCondAllocator::BBToCondMap()'],['../classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24',1,'SVF::PathCondAllocator::bbToCondMap()']]],
39
39
  ['bbtomrsetmap',['BBToMRSetMap',['../classSVF_1_1MemSSA.html#a4d4f7039c2972e671dc15b8c75abad14',1,'SVF::MemSSA']]],
40
- ['bbtophisetmap',['BBToPhiSetMap',['../classSVF_1_1MemSSA.html#a59cca6cbd8f18c9521027d8ddd13ffc5',1,'SVF::MemSSA']]],
40
+ ['bbtophisetmap',['BBToPhiSetMap',['../classSVF_1_1MemSSA.html#afeef58baed23fc731e33a07a0ef05f6a',1,'SVF::MemSSA']]],
41
41
  ['bbworklist',['BBWorkList',['../classSVF_1_1PCG.html#a05759205f1362b6d72041cf669cf028d',1,'SVF::PCG']]],
42
42
  ['bca',['BCA',['../cuddInt_8c.html#a968b2edd875ca80252db68d5426d7b13',1,'cuddInt.c']]],
43
43
  ['bcad',['BCAD',['../cuddInt_8c.html#a87d3e5029c36f51065a12ae9e4024231',1,'cuddInt.c']]],
@@ -15,7 +15,7 @@ var searchData=
15
15
  ['bbset',['BBSet',['../classSVF_1_1ICFGBuilder.html#abb7144bcc587e236fd22f6c8896117f5',1,'SVF::ICFGBuilder']]],
16
16
  ['bbtocondmap',['BBToCondMap',['../classSVF_1_1PathCondAllocator.html#ae3edcb70d9f0d65089f39147a635526d',1,'SVF::PathCondAllocator']]],
17
17
  ['bbtomrsetmap',['BBToMRSetMap',['../classSVF_1_1MemSSA.html#a4d4f7039c2972e671dc15b8c75abad14',1,'SVF::MemSSA']]],
18
- ['bbtophisetmap',['BBToPhiSetMap',['../classSVF_1_1MemSSA.html#a59cca6cbd8f18c9521027d8ddd13ffc5',1,'SVF::MemSSA']]],
18
+ ['bbtophisetmap',['BBToPhiSetMap',['../classSVF_1_1MemSSA.html#afeef58baed23fc731e33a07a0ef05f6a',1,'SVF::MemSSA']]],
19
19
  ['bbworklist',['BBWorkList',['../classSVF_1_1PCG.html#a05759205f1362b6d72041cf669cf028d',1,'SVF::PCG']]],
20
20
  ['bddcond',['BDDCond',['../classSVF_1_1BDDExpr.html#a8b8ff2750644582e55ff8a5d39826f9f',1,'SVF::BDDExpr::BDDCond()'],['../classSVF_1_1BDDManager.html#a7a1692324d6b152588ef4d52013f8d00',1,'SVF::BDDManager::BDDCond()']]],
21
21
  ['bddtobddcondexpr',['BDDToBDDCondExpr',['../classSVF_1_1BDDManager.html#a54716dd8be2691e3e0dbffc14461c1e8',1,'SVF::BDDManager']]],
@@ -75,7 +75,7 @@ public:
75
75
  typedef Map<const StoreStmt*, CHISet> StoreToChiSetMap;
76
76
  typedef Map<const CallICFGNode*, MUSet> CallSiteToMUSetMap;
77
77
  typedef Map<const CallICFGNode*, CHISet> CallSiteToCHISetMap;
78
- typedef Map<const BasicBlock*, PHISet> BBToPhiSetMap;
78
+ typedef OrderedMap<const BasicBlock*, PHISet> BBToPhiSetMap;
79
79
  //@}
80
80
 
81
81
  /// Map from fun to its entry chi set and return mu set
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-tools",
3
- "version": "1.0.437",
3
+ "version": "1.0.438",
4
4
  "description": "* <b>[TypeClone](https://github.com/SVF-tools/SVF/wiki/TypeClone) published in our [ECOOP paper](https://yuleisui.github.io/publications/ecoop20.pdf) is now available in SVF </b> * <b>SVF now uses a single script for its build. Just type [`source ./build.sh`](https://github.com/SVF-tools/SVF/blob/master/build.sh) in your terminal, that's it!</b> * <b>SVF now supports LLVM-10.0.0! </b> * <b>We thank [bsauce](https://github.com/bsauce) for writing a user manual of SVF ([link1](https://www.jianshu.com/p/068a08ec749c) and [link2](https://www.jianshu.com/p/777c30d4240e)) in Chinese </b> * <b>SVF now supports LLVM-9.0.0 (Thank [Byoungyoung Lee](https://github.com/SVF-tools/SVF/issues/142) for his help!). </b> * <b>SVF now supports a set of [field-sensitive pointer analyses](https://yuleisui.github.io/publications/sas2019a.pdf). </b> * <b>[Use SVF as an external lib](https://github.com/SVF-tools/SVF/wiki/Using-SVF-as-a-lib-in-your-own-tool) for your own project (Contributed by [Hongxu Chen](https://github.com/HongxuChen)). </b> * <b>SVF now supports LLVM-7.0.0. </b> * <b>SVF now supports Docker. [Try SVF in Docker](https://github.com/SVF-tools/SVF/wiki/Try-SVF-in-Docker)! </b> * <b>SVF now supports [LLVM-6.0.0](https://github.com/svf-tools/SVF/pull/38) (Contributed by [Jack Anthony](https://github.com/jackanth)). </b> * <b>SVF now supports [LLVM-4.0.0](https://github.com/svf-tools/SVF/pull/23) (Contributed by Jared Carlson. Thank [Jared](https://github.com/jcarlson23) and [Will](https://github.com/dtzWill) for their in-depth [discussions](https://github.com/svf-tools/SVF/pull/18) about updating SVF!) </b> * <b>SVF now supports analysis for C++ programs.</b> <br />",
5
5
  "main": "index.js",
6
6
  "scripts": {