svf-tools 1.0.793 → 1.0.795
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/AccessPath_8cpp_source.html +1 -1
- package/SVF-doxygen/html/CDGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/CDG_8h_source.html +27 -28
- package/SVF-doxygen/html/CFBasicBlockGBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/CFBasicBlockGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/CFBasicBlockG_8h_source.html +308 -310
- package/SVF-doxygen/html/CHG_8cpp.html +2 -2
- package/SVF-doxygen/html/CHG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/LLVMModule_8cpp_source.html +5 -5
- package/SVF-doxygen/html/MemSSA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/SVFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFType_8cpp.html +2 -2
- package/SVF-doxygen/html/SVFType_8cpp_source.html +57 -55
- package/SVF-doxygen/html/SVFType_8h.html +2 -2
- package/SVF-doxygen/html/SVFType_8h_source.html +10 -10
- package/SVF-doxygen/html/SVFUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/SVFValue_8cpp.html +46 -0
- package/SVF-doxygen/html/SVFValue_8cpp_source.html +266 -256
- package/SVF-doxygen/html/SVFValue_8h_source.html +14 -14
- package/SVF-doxygen/html/SaberCondAllocator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/SymbolTableInfo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/VFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/WTO_8h_source.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1AccessPath.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CDG.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CDGBuilder.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGBuilder.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGWTO.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGWTO_1_1TailBuilder.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGraph.html +91 -91
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockNode.html +24 -27
- package/SVF-doxygen/html/classSVF_1_1CHGraph.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1MemSSA.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1SVFArrayType.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1SVFBasicBlock.html +63 -63
- package/SVF-doxygen/html/classSVF_1_1SVFFunction.html +32 -32
- package/SVF-doxygen/html/classSVF_1_1SVFFunctionType.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1SVFG.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFInstruction.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1SVFIntegerType.html +7 -7
- package/SVF-doxygen/html/classSVF_1_1SVFLoopAndDomInfo.html +116 -116
- package/SVF-doxygen/html/classSVF_1_1SVFOtherType.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1SVFPointerType.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1SVFStructType.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1SVFType.html +1 -10
- package/SVF-doxygen/html/classSVF_1_1SaberCondAllocator.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1StInfo-members.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1StInfo.html +14 -23
- package/SVF-doxygen/html/classSVF_1_1SymbolTableInfo.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1VFG.html +1 -1
- package/SVF-doxygen/html/functions_a.html +1 -1
- package/SVF-doxygen/html/functions_func.html +1 -1
- package/SVF-doxygen/html/globals.html +2 -0
- package/SVF-doxygen/html/globals_func.html +2 -0
- package/SVF-doxygen/html/menudata.js +4 -2
- package/SVF-doxygen/html/namespaceSVF.html +41 -12
- package/SVF-doxygen/html/namespaceSVF_1_1SVFUtil.html +2 -2
- package/SVF-doxygen/html/namespacemembers.html +3 -36
- package/SVF-doxygen/html/namespacemembers_a.html +112 -0
- package/SVF-doxygen/html/namespacemembers_func.html +3 -6
- package/SVF-doxygen/html/namespacemembers_func_a.html +82 -0
- package/SVF-doxygen/html/search/all_0.js +1 -1
- package/SVF-doxygen/html/search/all_1.js +1 -1
- package/SVF-doxygen/html/search/all_f.js +1 -1
- package/SVF-doxygen/html/search/functions_0.js +1 -1
- package/SVF-doxygen/html/search/functions_1.js +1 -1
- package/SVF-doxygen/html/search/functions_f.js +1 -1
- package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01SVF_1_1CDG_01_5_01_4.html +19 -20
- package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01SVF_1_1CFBasicBlockGraph_01_5_01_4.html +102 -102
- package/SVF-doxygen/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CFBasicBlockNode_01_5_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFBasicBlockGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFBasicBlockNode_01_5_01_4.html +1 -1
- package/package.json +1 -1
- package/svf/include/Graphs/CDG.h +2 -3
- package/svf/include/Graphs/CFBasicBlockG.h +3 -5
- package/svf/lib/SVFIR/SVFType.cpp +2 -0
- package/svf/lib/SVFIR/SVFValue.cpp +7 -0
- package/svf-llvm/CMakeLists.txt +1 -1
|
@@ -75,299 +75,309 @@ $(function() {
|
|
|
75
75
|
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div>
|
|
76
76
|
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="keyword">using namespace </span>SVFUtil;</div>
|
|
77
77
|
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  </div>
|
|
78
|
-
<div class="line"><a name="
|
|
79
|
-
<div class="line"><a name="
|
|
80
|
-
<div class="line"><a name="
|
|
81
|
-
<div class="line"><a name="
|
|
82
|
-
<div class="line"><a name="
|
|
83
|
-
<div class="line"><a name="
|
|
84
|
-
<div class="line"><a name="
|
|
85
|
-
<div class="line"><a name="
|
|
86
|
-
<div class="line"><a name="
|
|
87
|
-
<div class="line"><a name="
|
|
88
|
-
<div class="line"><a name="
|
|
89
|
-
<div class="line"><a name="
|
|
90
|
-
<div class="line"><a name="
|
|
91
|
-
<div class="line"><a name="
|
|
92
|
-
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> 
|
|
93
|
-
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> 
|
|
94
|
-
<div class="line"><a name="l00027"></a><span class="lineno"
|
|
95
|
-
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> 
|
|
96
|
-
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> 
|
|
97
|
-
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> 
|
|
98
|
-
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">return</span>
|
|
78
|
+
<div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="SVFValue_8cpp.html#a81025d840e81f5c9a9c6b70a5377ac6f"> 7</a></span> <a class="code" href="namespaceSVF.html#a49a1be0ba69daf3b4f695f41ad812825">__attribute__</a>((weak))</div>
|
|
79
|
+
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVFValue::toString</a>()<span class="keyword"> const</span></div>
|
|
80
|
+
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="keyword"></span>{</div>
|
|
81
|
+
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  assert(<span class="stringliteral">"SVFValue::toString should be implemented or supported by fronted"</span> && <span class="keyword">false</span>);</div>
|
|
82
|
+
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  abort();</div>
|
|
83
|
+
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> }</div>
|
|
84
|
+
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  </div>
|
|
85
|
+
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">StInfo::addFldWithType</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fldIdx, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> elemIdx)</div>
|
|
86
|
+
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> {</div>
|
|
87
|
+
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  fldIdxVec.push_back(fldIdx);</div>
|
|
88
|
+
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  elemIdxVec.push_back(elemIdx);</div>
|
|
89
|
+
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  fldIdx2TypeMap[fldIdx] = <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>;</div>
|
|
90
|
+
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> }</div>
|
|
91
|
+
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div>
|
|
92
|
+
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">//{@</span></div>
|
|
93
|
+
<div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="classSVF_1_1StInfo.html#a055697f565cb9d73b41110090fe50159"> 26</a></span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* <a class="code" href="classSVF_1_1StInfo.html#a055697f565cb9d73b41110090fe50159">StInfo::getOriginalElemType</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fldIdx)<span class="keyword"> const</span></div>
|
|
94
|
+
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword"></span>{</div>
|
|
95
|
+
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<u32_t, const SVFType*>::const_iterator</a> it = fldIdx2TypeMap.find(fldIdx);</div>
|
|
96
|
+
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">if</span>(it!=fldIdx2TypeMap.end())</div>
|
|
97
|
+
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">return</span> it->second;</div>
|
|
98
|
+
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
|
99
99
|
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> }</div>
|
|
100
100
|
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  </div>
|
|
101
|
-
<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFLoopAndDomInfo.html#
|
|
101
|
+
<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFLoopAndDomInfo.html#a0fb893485fc3df088d921762514faf66"> 34</a></span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ae5e2b154313b4330bb015050aec72a1f">SVFLoopAndDomInfo::LoopBBs</a>& <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#a0fb893485fc3df088d921762514faf66">SVFLoopAndDomInfo::getLoopInfo</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* bb)<span class="keyword"> const</span></div>
|
|
102
102
|
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword"></span>{</div>
|
|
103
|
-
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="
|
|
104
|
-
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> 
|
|
105
|
-
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> 
|
|
106
|
-
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> 
|
|
107
|
-
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> 
|
|
108
|
-
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> 
|
|
109
|
-
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> 
|
|
110
|
-
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> 
|
|
111
|
-
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> 
|
|
112
|
-
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> 
|
|
113
|
-
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> 
|
|
114
|
-
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> 
|
|
115
|
-
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> 
|
|
116
|
-
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> 
|
|
117
|
-
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> 
|
|
118
|
-
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> 
|
|
119
|
-
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  </div>
|
|
120
|
-
<div class="line"><a name="l00053"></a><span class="lineno"
|
|
121
|
-
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> 
|
|
122
|
-
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> 
|
|
123
|
-
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> 
|
|
124
|
-
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> 
|
|
125
|
-
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> 
|
|
126
|
-
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> 
|
|
127
|
-
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> 
|
|
128
|
-
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> 
|
|
129
|
-
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> 
|
|
130
|
-
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  </div>
|
|
131
|
-
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> 
|
|
132
|
-
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="
|
|
133
|
-
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> 
|
|
134
|
-
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> 
|
|
135
|
-
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> 
|
|
136
|
-
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> 
|
|
137
|
-
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> 
|
|
138
|
-
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <
|
|
139
|
-
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span> (
|
|
103
|
+
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  assert(hasLoopInfo(bb) && <span class="stringliteral">"loopinfo does not exist (bb not in a loop)"</span>);</div>
|
|
104
|
+
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFBasicBlock*, LoopBBs>::const_iterator</a> mapIter = bb2LoopMap.find(bb);</div>
|
|
105
|
+
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">return</span> mapIter->second;</div>
|
|
106
|
+
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> }</div>
|
|
107
|
+
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  </div>
|
|
108
|
+
<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFLoopAndDomInfo.html#a48654f61a84ac5f93b02fb618cd0d045"> 41</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#a48654f61a84ac5f93b02fb618cd0d045">SVFLoopAndDomInfo::getExitBlocksOfLoop</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* bb, <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#a33b96ce50eb1d3caab2b20c19a60b2cc">BBList</a>& exitbbs)<span class="keyword"> const</span></div>
|
|
109
|
+
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword"></span>{</div>
|
|
110
|
+
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">if</span> (hasLoopInfo(bb))</div>
|
|
111
|
+
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  {</div>
|
|
112
|
+
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ae5e2b154313b4330bb015050aec72a1f">LoopBBs</a> blocks = getLoopInfo(bb);</div>
|
|
113
|
+
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">if</span> (!blocks.empty())</div>
|
|
114
|
+
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {</div>
|
|
115
|
+
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* block : blocks)</div>
|
|
116
|
+
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  {</div>
|
|
117
|
+
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* succ : block-><a class="code" href="classSVF_1_1SVFBasicBlock.html#a66f51cd41e93ad055c4a0c2874e73fae">getSuccessors</a>())</div>
|
|
118
|
+
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div>
|
|
119
|
+
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span> ((std::find(blocks.begin(), blocks.end(), succ)==blocks.end()))</div>
|
|
120
|
+
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  exitbbs.push_back(succ);</div>
|
|
121
|
+
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  }</div>
|
|
122
|
+
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div>
|
|
123
|
+
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div>
|
|
124
|
+
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  }</div>
|
|
125
|
+
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div>
|
|
126
|
+
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  </div>
|
|
127
|
+
<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFLoopAndDomInfo.html#a342f2825d6b7e3289d0f0f4b7ee8247c"> 60</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#a342f2825d6b7e3289d0f0f4b7ee8247c">SVFLoopAndDomInfo::dominate</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* bbKey, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* bbValue)<span class="keyword"> const</span></div>
|
|
128
|
+
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword"></span>{</div>
|
|
129
|
+
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">if</span> (bbKey == bbValue)</div>
|
|
130
|
+
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
131
|
+
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  </div>
|
|
132
|
+
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// An unreachable node is dominated by anything.</span></div>
|
|
133
|
+
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span> (isUnreachable(bbValue))</div>
|
|
134
|
+
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {</div>
|
|
135
|
+
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
136
|
+
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  }</div>
|
|
137
|
+
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  </div>
|
|
138
|
+
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// And dominates nothing.</span></div>
|
|
139
|
+
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span> (isUnreachable(bbKey))</div>
|
|
140
140
|
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div>
|
|
141
|
-
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="
|
|
142
|
-
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> 
|
|
143
|
-
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> 
|
|
144
|
-
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> 
|
|
145
|
-
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> 
|
|
146
|
-
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> 
|
|
147
|
-
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> 
|
|
148
|
-
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> 
|
|
149
|
-
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> 
|
|
150
|
-
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> 
|
|
151
|
-
<div class="line"><a name="l00084"></a><span class="lineno"
|
|
152
|
-
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> 
|
|
153
|
-
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> 
|
|
154
|
-
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> 
|
|
155
|
-
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  </div>
|
|
156
|
-
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> 
|
|
157
|
-
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> 
|
|
158
|
-
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> 
|
|
159
|
-
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> 
|
|
160
|
-
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> 
|
|
161
|
-
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  </div>
|
|
162
|
-
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> 
|
|
163
|
-
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="
|
|
164
|
-
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> 
|
|
165
|
-
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> 
|
|
166
|
-
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> 
|
|
167
|
-
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> 
|
|
168
|
-
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> 
|
|
169
|
-
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <
|
|
170
|
-
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span> (
|
|
141
|
+
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
142
|
+
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  }</div>
|
|
143
|
+
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  </div>
|
|
144
|
+
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFBasicBlock*,BBSet></a>& dtBBsMap = getDomTreeMap();</div>
|
|
145
|
+
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFBasicBlock*,BBSet>::const_iterator</a> mapIter = dtBBsMap.find(bbKey);</div>
|
|
146
|
+
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span> (mapIter != dtBBsMap.end())</div>
|
|
147
|
+
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div>
|
|
148
|
+
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad478ac88bc07cf4d6d0ad3517b2c4ab3">BBSet</a> & dtBBs = mapIter->second;</div>
|
|
149
|
+
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">if</span> (dtBBs.find(bbValue) != dtBBs.end())</div>
|
|
150
|
+
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div>
|
|
151
|
+
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
152
|
+
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div>
|
|
153
|
+
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div>
|
|
154
|
+
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  </div>
|
|
155
|
+
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
156
|
+
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> }</div>
|
|
157
|
+
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  </div>
|
|
158
|
+
<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFLoopAndDomInfo.html#af66c5a824f9fc2813e2d97e17f9a2e96"> 91</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#af66c5a824f9fc2813e2d97e17f9a2e96">SVFLoopAndDomInfo::postDominate</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* bbKey, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* bbValue)<span class="keyword"> const</span></div>
|
|
159
|
+
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="keyword"></span>{</div>
|
|
160
|
+
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span> (bbKey == bbValue)</div>
|
|
161
|
+
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
162
|
+
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  </div>
|
|
163
|
+
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// An unreachable node is dominated by anything.</span></div>
|
|
164
|
+
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span> (isUnreachable(bbValue))</div>
|
|
165
|
+
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {</div>
|
|
166
|
+
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
167
|
+
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div>
|
|
168
|
+
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  </div>
|
|
169
|
+
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// And dominates nothing.</span></div>
|
|
170
|
+
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span> (isUnreachable(bbKey))</div>
|
|
171
171
|
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div>
|
|
172
|
-
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="
|
|
173
|
-
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> 
|
|
174
|
-
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> 
|
|
175
|
-
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> 
|
|
176
|
-
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> 
|
|
177
|
-
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> 
|
|
178
|
-
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> 
|
|
179
|
-
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> 
|
|
180
|
-
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  </div>
|
|
181
|
-
<div class="line"><a name="l00114"></a><span class="lineno"
|
|
182
|
-
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> 
|
|
183
|
-
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> 
|
|
184
|
-
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> 
|
|
185
|
-
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> 
|
|
186
|
-
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> 
|
|
187
|
-
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> 
|
|
188
|
-
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> 
|
|
189
|
-
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> 
|
|
190
|
-
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> 
|
|
191
|
-
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> 
|
|
192
|
-
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> 
|
|
193
|
-
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> 
|
|
194
|
-
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> 
|
|
195
|
-
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> 
|
|
196
|
-
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  </div>
|
|
197
|
-
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> 
|
|
198
|
-
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  </div>
|
|
199
|
-
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="
|
|
200
|
-
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> 
|
|
201
|
-
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> 
|
|
202
|
-
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> 
|
|
172
|
+
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
173
|
+
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div>
|
|
174
|
+
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  </div>
|
|
175
|
+
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFBasicBlock*,BBSet></a>& dtBBsMap = getPostDomTreeMap();</div>
|
|
176
|
+
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFBasicBlock*,BBSet>::const_iterator</a> mapIter = dtBBsMap.find(bbKey);</div>
|
|
177
|
+
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span> (mapIter != dtBBsMap.end())</div>
|
|
178
|
+
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  {</div>
|
|
179
|
+
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ad478ac88bc07cf4d6d0ad3517b2c4ab3">BBSet</a> & dtBBs = mapIter->second;</div>
|
|
180
|
+
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">if</span> (dtBBs.find(bbValue) != dtBBs.end())</div>
|
|
181
|
+
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  {</div>
|
|
182
|
+
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
183
|
+
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div>
|
|
184
|
+
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div>
|
|
185
|
+
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
186
|
+
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> }</div>
|
|
187
|
+
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  </div>
|
|
188
|
+
<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFLoopAndDomInfo.html#a49dff199b71a991c4525ed819ec92bed"> 121</a></span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#a49dff199b71a991c4525ed819ec92bed">SVFLoopAndDomInfo::findNearestCommonPDominator</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* A, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* B)<span class="keyword"> const</span></div>
|
|
189
|
+
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="keyword"></span>{</div>
|
|
190
|
+
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  assert(A && B && <span class="stringliteral">"Pointers are not valid"</span>);</div>
|
|
191
|
+
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  assert(A-><a class="code" href="classSVF_1_1SVFBasicBlock.html#af48d08d3adf7dd3ed69d97e4df360059">getParent</a>() == B-><a class="code" href="classSVF_1_1SVFBasicBlock.html#af48d08d3adf7dd3ed69d97e4df360059">getParent</a>() &&</div>
|
|
192
|
+
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="stringliteral">"Two blocks are not in same function"</span>);</div>
|
|
193
|
+
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  </div>
|
|
194
|
+
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// Use level information to go up the tree until the levels match. Then</span></div>
|
|
195
|
+
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// continue going up til we arrive at the same node.</span></div>
|
|
196
|
+
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">while</span> (A != B)</div>
|
|
197
|
+
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div>
|
|
198
|
+
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// no common PDominator</span></div>
|
|
199
|
+
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">if</span>(A == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span> <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>;</div>
|
|
200
|
+
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keyword">const</span> <span class="keyword">auto</span> lvA = getBBPDomLevel().find(A);</div>
|
|
201
|
+
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keyword">const</span> <span class="keyword">auto</span> lvB = getBBPDomLevel().find(B);</div>
|
|
202
|
+
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  assert(lvA != getBBPDomLevel().end() && lvB != getBBPDomLevel().end());</div>
|
|
203
203
|
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  </div>
|
|
204
|
-
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> 
|
|
205
|
-
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> 
|
|
206
|
-
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  </div>
|
|
207
|
-
<div class="line"><a name="l00140"></a><span class="lineno"
|
|
208
|
-
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> 
|
|
209
|
-
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> 
|
|
210
|
-
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> 
|
|
211
|
-
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> 
|
|
212
|
-
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> 
|
|
213
|
-
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> 
|
|
214
|
-
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> 
|
|
215
|
-
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> 
|
|
216
|
-
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> 
|
|
217
|
-
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> 
|
|
218
|
-
<div class="line"><a name="l00151"></a><span class="lineno"
|
|
219
|
-
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> 
|
|
220
|
-
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> 
|
|
221
|
-
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> 
|
|
222
|
-
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> 
|
|
223
|
-
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> 
|
|
224
|
-
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> 
|
|
225
|
-
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> 
|
|
226
|
-
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  </div>
|
|
227
|
-
<div class="line"><a name="l00160"></a><span class="lineno"
|
|
228
|
-
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> 
|
|
229
|
-
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> 
|
|
230
|
-
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> 
|
|
231
|
-
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> 
|
|
232
|
-
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> 
|
|
233
|
-
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> 
|
|
234
|
-
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> 
|
|
235
|
-
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> 
|
|
236
|
-
<div class="line"><a name="l00169"></a><span class="lineno"
|
|
237
|
-
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> 
|
|
238
|
-
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">
|
|
239
|
-
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> 
|
|
240
|
-
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  </div>
|
|
241
|
-
<div class="line"><a name="l00174"></a><span class="lineno"
|
|
242
|
-
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> 
|
|
243
|
-
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> 
|
|
244
|
-
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> 
|
|
245
|
-
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> 
|
|
246
|
-
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> 
|
|
247
|
-
<div class="line"><a name="l00180"></a><span class="lineno"
|
|
248
|
-
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="keyword"
|
|
249
|
-
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> 
|
|
250
|
-
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> 
|
|
251
|
-
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  </div>
|
|
252
|
-
<div class="line"><a name="l00185"></a><span class="lineno"
|
|
253
|
-
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> 
|
|
254
|
-
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> 
|
|
255
|
-
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> 
|
|
256
|
-
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  </div>
|
|
257
|
-
<div class="line"><a name="l00190"></a><span class="lineno"
|
|
258
|
-
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> 
|
|
259
|
-
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span> 
|
|
260
|
-
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> 
|
|
261
|
-
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> 
|
|
262
|
-
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> 
|
|
263
|
-
<div class="line"><a name="
|
|
264
|
-
<div class="line"><a name="
|
|
265
|
-
<div class="line"><a name="
|
|
266
|
-
<div class="line"><a name="
|
|
267
|
-
<div class="line"><a name="
|
|
268
|
-
<div class="line"><a name="
|
|
269
|
-
<div class="line"><a name="
|
|
270
|
-
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> 
|
|
271
|
-
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> 
|
|
272
|
-
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> 
|
|
273
|
-
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">
|
|
274
|
-
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> 
|
|
275
|
-
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  </div>
|
|
276
|
-
<div class="line"><a name="l00212"></a><span class="lineno"
|
|
277
|
-
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> 
|
|
278
|
-
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> 
|
|
279
|
-
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> 
|
|
280
|
-
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> 
|
|
281
|
-
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> 
|
|
282
|
-
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> 
|
|
283
|
-
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span> 
|
|
284
|
-
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> 
|
|
285
|
-
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span> 
|
|
286
|
-
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">
|
|
287
|
-
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> 
|
|
288
|
-
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  </div>
|
|
289
|
-
<div class="line"><a name="l00225"></a><span class="lineno"
|
|
290
|
-
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> 
|
|
291
|
-
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> 
|
|
292
|
-
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> 
|
|
293
|
-
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">return</span>
|
|
204
|
+
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span> (lvA->second < lvB->second) std::swap(A, B);</div>
|
|
205
|
+
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  </div>
|
|
206
|
+
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keyword">const</span> <span class="keyword">auto</span> lvAIdom = getBB2PIdom().find(A);</div>
|
|
207
|
+
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  assert(lvAIdom != getBB2PIdom().end());</div>
|
|
208
|
+
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  A = lvAIdom->second;</div>
|
|
209
|
+
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div>
|
|
210
|
+
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  </div>
|
|
211
|
+
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">return</span> A;</div>
|
|
212
|
+
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> }</div>
|
|
213
|
+
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  </div>
|
|
214
|
+
<div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFLoopAndDomInfo.html#a39257282d3875b5d28c21f6c8b1caf43"> 147</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#a39257282d3875b5d28c21f6c8b1caf43">SVFLoopAndDomInfo::isLoopHeader</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* bb)<span class="keyword"> const</span></div>
|
|
215
|
+
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="keyword"></span>{</div>
|
|
216
|
+
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">if</span> (hasLoopInfo(bb))</div>
|
|
217
|
+
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {</div>
|
|
218
|
+
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html#ae5e2b154313b4330bb015050aec72a1f">LoopBBs</a>& blocks = getLoopInfo(bb);</div>
|
|
219
|
+
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  assert(!blocks.empty() && <span class="stringliteral">"no available loop info?"</span>);</div>
|
|
220
|
+
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> blocks.front() == bb;</div>
|
|
221
|
+
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div>
|
|
222
|
+
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
223
|
+
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> }</div>
|
|
224
|
+
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  </div>
|
|
225
|
+
<div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFFunction.html#a0cf5ddbb884a0a99f43b7741f1ce2786"> 158</a></span> <a class="code" href="classSVF_1_1SVFFunction.html#a7e965c21a8afe7fca32d0f41b16361cf">SVFFunction::SVFFunction</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunctionType.html">SVFFunctionType</a>* ft,</div>
|
|
226
|
+
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordtype">bool</span> declare, <span class="keywordtype">bool</span> intrinsic, <span class="keywordtype">bool</span> adt, <span class="keywordtype">bool</span> varg,</div>
|
|
227
|
+
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="classSVF_1_1SVFLoopAndDomInfo.html">SVFLoopAndDomInfo</a>* ld, std::vector<std::string> annos)</div>
|
|
228
|
+
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  : <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>(ty, <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>::SVFFunc), isDecl(declare), intrinsic(intrinsic),</div>
|
|
229
|
+
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  addrTaken(adt), isUncalled(<a class="code" href="cJSON_8cpp.html#a65e9886d74aaee76545e83dd09011727">false</a>), isNotRet(<a class="code" href="cJSON_8cpp.html#a65e9886d74aaee76545e83dd09011727">false</a>), varArg(varg),</div>
|
|
230
|
+
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  funcType(ft), loopAndDom(ld), realDefFun(nullptr), annotations(std::<a class="code" href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">move</a>(annos))</div>
|
|
231
|
+
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> {</div>
|
|
232
|
+
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> }</div>
|
|
233
|
+
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  </div>
|
|
234
|
+
<div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFFunction.html#a5f6f7bf27f373b16b9c51de310b40686"> 167</a></span> <a class="code" href="classSVF_1_1SVFFunction.html#a5f6f7bf27f373b16b9c51de310b40686">SVFFunction::~SVFFunction</a>()</div>
|
|
235
|
+
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> {</div>
|
|
236
|
+
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">for</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* bb : <a class="code" href="classSVF_1_1SVFFunction.html#aa61307a21647def105677d36bfbaf32f">allBBs</a>)</div>
|
|
237
|
+
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keyword">delete</span> bb;</div>
|
|
238
|
+
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">for</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>* arg : <a class="code" href="classSVF_1_1SVFFunction.html#a625bef2b92c8e62df547bd2758b59c75">allArgs</a>)</div>
|
|
239
|
+
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keyword">delete</span> arg;</div>
|
|
240
|
+
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SVFFunction.html#aefde3a0671e34541a4ad5d7a6dfaa5d1">loopAndDom</a>;</div>
|
|
241
|
+
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> }</div>
|
|
242
|
+
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  </div>
|
|
243
|
+
<div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFFunction.html#ab8c7a9c79b0668aae604bbe54e34e46e"> 176</a></span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SVFFunction.html#ab8c7a9c79b0668aae604bbe54e34e46e">SVFFunction::arg_size</a>()<span class="keyword"> const</span></div>
|
|
244
|
+
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="keyword"></span>{</div>
|
|
245
|
+
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFFunction.html#a625bef2b92c8e62df547bd2758b59c75">allArgs</a>.size();</div>
|
|
246
|
+
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> }</div>
|
|
247
|
+
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  </div>
|
|
248
|
+
<div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFFunction.html#a10d9481ae41dce4f266dad5e64fffcee"> 181</a></span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>* <a class="code" href="classSVF_1_1SVFFunction.html#a10d9481ae41dce4f266dad5e64fffcee">SVFFunction::getArg</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> idx)<span class="keyword"> const</span></div>
|
|
249
|
+
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="keyword"></span>{</div>
|
|
250
|
+
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  assert (idx < <a class="code" href="classSVF_1_1SVFFunction.html#a625bef2b92c8e62df547bd2758b59c75">allArgs</a>.size() && <span class="stringliteral">"getArg() out of range!"</span>);</div>
|
|
251
|
+
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFFunction.html#a625bef2b92c8e62df547bd2758b59c75">allArgs</a>[idx];</div>
|
|
252
|
+
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> }</div>
|
|
253
|
+
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  </div>
|
|
254
|
+
<div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFFunction.html#ae578002917b4ccbf28f172dba30d1d58"> 187</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SVFFunction.html#ae578002917b4ccbf28f172dba30d1d58">SVFFunction::isVarArg</a>()<span class="keyword"> const</span></div>
|
|
255
|
+
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="keyword"></span>{</div>
|
|
256
|
+
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFFunction.html#a11aaa0ffaf7fa3d220c9af5d4537eaad">varArg</a>;</div>
|
|
257
|
+
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> }</div>
|
|
258
|
+
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  </div>
|
|
259
|
+
<div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFBasicBlock.html#a2f21fd47b023a9786f8ab39faaca0a27"> 192</a></span> <a class="code" href="classSVF_1_1SVFBasicBlock.html#ae017f9a00c523585718bde13665275b3">SVFBasicBlock::SVFBasicBlock</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* f)</div>
|
|
260
|
+
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  : <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>(ty, <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>::SVFBB), fun(f)</div>
|
|
261
|
+
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> {</div>
|
|
262
|
+
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> }</div>
|
|
263
|
+
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  </div>
|
|
264
|
+
<div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFBasicBlock.html#abd5adb119af2024fe4702ba25394d5ac"> 197</a></span> <a class="code" href="classSVF_1_1SVFBasicBlock.html#abd5adb119af2024fe4702ba25394d5ac">SVFBasicBlock::~SVFBasicBlock</a>()</div>
|
|
265
|
+
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> {</div>
|
|
266
|
+
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">for</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst : <a class="code" href="classSVF_1_1SVFBasicBlock.html#a2954b0f29cd81083598afb6431b78f2a">allInsts</a>)</div>
|
|
267
|
+
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keyword">delete</span> inst;</div>
|
|
268
|
+
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> }</div>
|
|
269
|
+
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  </div>
|
|
270
|
+
<div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFBasicBlock.html#ab8a735b5d183f5190c4c45b313f1b174"> 206</a></span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SVFBasicBlock.html#ab8a735b5d183f5190c4c45b313f1b174">SVFBasicBlock::getBBSuccessorPos</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* Succ)</div>
|
|
271
|
+
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> {</div>
|
|
272
|
+
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0;</div>
|
|
273
|
+
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* SuccBB: <a class="code" href="classSVF_1_1SVFBasicBlock.html#a7c3a69644f5e1351aad5d0ce0048abfd">succBBs</a>)</div>
|
|
274
|
+
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  {</div>
|
|
275
|
+
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span> (SuccBB == Succ)</div>
|
|
276
|
+
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">return</span> i;</div>
|
|
277
|
+
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  i++;</div>
|
|
278
|
+
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div>
|
|
279
|
+
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"Didn't find successor edge?"</span>);</div>
|
|
280
|
+
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> 0;</div>
|
|
281
|
+
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> }</div>
|
|
282
|
+
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  </div>
|
|
283
|
+
<div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFBasicBlock.html#a104c66cdd4d88ba90eefd32bc9eef389"> 219</a></span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SVFBasicBlock.html#ab8a735b5d183f5190c4c45b313f1b174">SVFBasicBlock::getBBSuccessorPos</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* Succ)<span class="keyword"> const</span></div>
|
|
284
|
+
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="keyword"></span>{</div>
|
|
285
|
+
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0;</div>
|
|
286
|
+
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* SuccBB: <a class="code" href="classSVF_1_1SVFBasicBlock.html#a7c3a69644f5e1351aad5d0ce0048abfd">succBBs</a>)</div>
|
|
287
|
+
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  {</div>
|
|
288
|
+
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">if</span> (SuccBB == Succ)</div>
|
|
289
|
+
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">return</span> i;</div>
|
|
290
|
+
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  i++;</div>
|
|
291
|
+
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div>
|
|
292
|
+
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"Didn't find successor edge?"</span>);</div>
|
|
293
|
+
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">return</span> 0;</div>
|
|
294
294
|
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span> }</div>
|
|
295
295
|
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  </div>
|
|
296
|
-
<div class="line"><a name="
|
|
297
|
-
<div class="line"><a name="
|
|
298
|
-
<div class="line"><a name="
|
|
299
|
-
<div class="line"><a name="
|
|
300
|
-
<div class="line"><a name="
|
|
301
|
-
<div class="line"><a name="
|
|
302
|
-
<div class="line"><a name="
|
|
303
|
-
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> 
|
|
304
|
-
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> 
|
|
305
|
-
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> 
|
|
306
|
-
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">
|
|
307
|
-
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> 
|
|
308
|
-
<div class="line"><a name="l00247"></a><span class="lineno"
|
|
309
|
-
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> 
|
|
310
|
-
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span> 
|
|
311
|
-
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> 
|
|
312
|
-
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span> 
|
|
313
|
-
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span> 
|
|
314
|
-
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span> 
|
|
315
|
-
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span> 
|
|
316
|
-
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> 
|
|
317
|
-
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span> 
|
|
318
|
-
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">
|
|
319
|
-
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span> 
|
|
320
|
-
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  </div>
|
|
321
|
-
<div class="line"><a name="l00260"></a><span class="lineno"
|
|
322
|
-
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span> 
|
|
323
|
-
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> 
|
|
324
|
-
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span> 
|
|
325
|
-
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span> 
|
|
296
|
+
<div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFBasicBlock.html#a10707086ce21999f415c479706abbd38"> 232</a></span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* <a class="code" href="classSVF_1_1SVFBasicBlock.html#a10707086ce21999f415c479706abbd38">SVFBasicBlock::getTerminator</a>()<span class="keyword"> const</span></div>
|
|
297
|
+
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="keyword"></span>{</div>
|
|
298
|
+
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFBasicBlock.html#a2954b0f29cd81083598afb6431b78f2a">allInsts</a>.empty() || !<a class="code" href="classSVF_1_1SVFBasicBlock.html#a2954b0f29cd81083598afb6431b78f2a">allInsts</a>.back()->isTerminator())</div>
|
|
299
|
+
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
|
300
|
+
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html#a2954b0f29cd81083598afb6431b78f2a">allInsts</a>.back();</div>
|
|
301
|
+
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> }</div>
|
|
302
|
+
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  </div>
|
|
303
|
+
<div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFBasicBlock.html#a59a4b7d815f624e448afe3ac0e9d18f5"> 242</a></span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SVFBasicBlock.html#a59a4b7d815f624e448afe3ac0e9d18f5">SVFBasicBlock::getBBPredecessorPos</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* succbb)</div>
|
|
304
|
+
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> {</div>
|
|
305
|
+
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = 0;</div>
|
|
306
|
+
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* PredBB : succbb-><a class="code" href="classSVF_1_1SVFBasicBlock.html#ac6fabc508f6b64127bb597f7b2110231">getPredecessors</a>())</div>
|
|
307
|
+
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  {</div>
|
|
308
|
+
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">if</span>(PredBB == <span class="keyword">this</span>)</div>
|
|
309
|
+
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">return</span> pos;</div>
|
|
310
|
+
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  ++pos;</div>
|
|
311
|
+
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div>
|
|
312
|
+
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"Didn't find predecessor edge?"</span>);</div>
|
|
313
|
+
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">return</span> pos;</div>
|
|
314
|
+
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span> }</div>
|
|
315
|
+
<div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFBasicBlock.html#a5fe2dae55581ff1cd6ef251a351d5c4f"> 254</a></span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1SVFBasicBlock.html#a59a4b7d815f624e448afe3ac0e9d18f5">SVFBasicBlock::getBBPredecessorPos</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* succbb)<span class="keyword"> const</span></div>
|
|
316
|
+
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="keyword"></span>{</div>
|
|
317
|
+
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = 0;</div>
|
|
318
|
+
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* PredBB : succbb-><a class="code" href="classSVF_1_1SVFBasicBlock.html#ac6fabc508f6b64127bb597f7b2110231">getPredecessors</a>())</div>
|
|
319
|
+
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  {</div>
|
|
320
|
+
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">if</span>(PredBB == <span class="keyword">this</span>)</div>
|
|
321
|
+
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">return</span> pos;</div>
|
|
322
|
+
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  ++pos;</div>
|
|
323
|
+
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div>
|
|
324
|
+
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"Didn't find predecessor edge?"</span>);</div>
|
|
325
|
+
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">return</span> pos;</div>
|
|
326
|
+
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> }</div>
|
|
327
|
+
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  </div>
|
|
328
|
+
<div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFInstruction.html#a976cc9df05994e7e1b11fcdd22febcc5"> 267</a></span> <a class="code" href="classSVF_1_1SVFInstruction.html#a7d81c86ea5e1f8e313457862e19c2a3c">SVFInstruction::SVFInstruction</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* ty, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* <a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>,</div>
|
|
329
|
+
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordtype">bool</span> tm, <span class="keywordtype">bool</span> isRet, <a class="code" href="classSVF_1_1SVFValue.html#afb50ea5aeea7a0608a3c9335aea6860e">SVFValKind</a> k)</div>
|
|
330
|
+
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  : <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>(ty, k), bb(<a class="code" href="cJSON_8h.html#a1a175e87536301df98c805ac0636ad7c">b</a>), terminator(tm), ret(isRet)</div>
|
|
331
|
+
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> {</div>
|
|
332
|
+
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span> }</div>
|
|
326
333
|
</div><!-- fragment --></div><!-- contents -->
|
|
327
334
|
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html">SVF::SVFLoopAndDomInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00050">SVFValue.h:50</a></div></div>
|
|
328
|
-
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_ab8a735b5d183f5190c4c45b313f1b174"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#ab8a735b5d183f5190c4c45b313f1b174">SVF::SVFBasicBlock::getBBSuccessorPos</a></div><div class="ttdeci">u32_t getBBSuccessorPos(const SVFBasicBlock *succbb)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#
|
|
335
|
+
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_ab8a735b5d183f5190c4c45b313f1b174"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#ab8a735b5d183f5190c4c45b313f1b174">SVF::SVFBasicBlock::getBBSuccessorPos</a></div><div class="ttdeci">u32_t getBBSuccessorPos(const SVFBasicBlock *succbb)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00206">SVFValue.cpp:206</a></div></div>
|
|
336
|
+
<div class="ttc" id="anamespaceSVF_html_a49a1be0ba69daf3b4f695f41ad812825"><div class="ttname"><a href="namespaceSVF.html#a49a1be0ba69daf3b4f695f41ad812825">SVF::__attribute__</a></div><div class="ttdeci">__attribute__((weak)) std</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8cpp_source.html#l00007">SVFType.cpp:7</a></div></div>
|
|
329
337
|
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_ac6fabc508f6b64127bb597f7b2110231"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#ac6fabc508f6b64127bb597f7b2110231">SVF::SVFBasicBlock::getPredecessors</a></div><div class="ttdeci">const std::vector< const SVFBasicBlock * > & getPredecessors() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00606">SVFValue.h:606</a></div></div>
|
|
330
|
-
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_a10d9481ae41dce4f266dad5e64fffcee"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a10d9481ae41dce4f266dad5e64fffcee">SVF::SVFFunction::getArg</a></div><div class="ttdeci">const SVFArgument * getArg(u32_t idx) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#
|
|
338
|
+
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_a10d9481ae41dce4f266dad5e64fffcee"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a10d9481ae41dce4f266dad5e64fffcee">SVF::SVFFunction::getArg</a></div><div class="ttdeci">const SVFArgument * getArg(u32_t idx) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00181">SVFValue.cpp:181</a></div></div>
|
|
331
339
|
<div class="ttc" id="anamespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
|
|
332
340
|
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a7c3a69644f5e1351aad5d0ce0048abfd"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a7c3a69644f5e1351aad5d0ce0048abfd">SVF::SVFBasicBlock::succBBs</a></div><div class="ttdeci">std::vector< const SVFBasicBlock * > succBBs</div><div class="ttdoc">all successor BasicBlocks of this BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00529">SVFValue.h:529</a></div></div>
|
|
333
|
-
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_a342f2825d6b7e3289d0f0f4b7ee8247c"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#a342f2825d6b7e3289d0f0f4b7ee8247c">SVF::SVFLoopAndDomInfo::dominate</a></div><div class="ttdeci">bool dominate(const SVFBasicBlock *bbKey, const SVFBasicBlock *bbValue) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#
|
|
341
|
+
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_a342f2825d6b7e3289d0f0f4b7ee8247c"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#a342f2825d6b7e3289d0f0f4b7ee8247c">SVF::SVFLoopAndDomInfo::dominate</a></div><div class="ttdeci">bool dominate(const SVFBasicBlock *bbKey, const SVFBasicBlock *bbValue) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00060">SVFValue.cpp:60</a></div></div>
|
|
334
342
|
<div class="ttc" id="acJSON_8cpp_html_a65e9886d74aaee76545e83dd09011727"><div class="ttname"><a href="cJSON_8cpp.html#a65e9886d74aaee76545e83dd09011727">false</a></div><div class="ttdeci">#define false</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l00070">cJSON.cpp:70</a></div></div>
|
|
335
343
|
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a2954b0f29cd81083598afb6431b78f2a"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a2954b0f29cd81083598afb6431b78f2a">SVF::SVFBasicBlock::allInsts</a></div><div class="ttdeci">std::vector< const SVFInstruction * > allInsts</div><div class="ttdoc">all Instructions in this BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00528">SVFValue.h:528</a></div></div>
|
|
336
|
-
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_ab8c7a9c79b0668aae604bbe54e34e46e"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ab8c7a9c79b0668aae604bbe54e34e46e">SVF::SVFFunction::arg_size</a></div><div class="ttdeci">u32_t arg_size() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#
|
|
344
|
+
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_ab8c7a9c79b0668aae604bbe54e34e46e"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ab8c7a9c79b0668aae604bbe54e34e46e">SVF::SVFFunction::arg_size</a></div><div class="ttdeci">u32_t arg_size() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00176">SVFValue.cpp:176</a></div></div>
|
|
337
345
|
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_ae017f9a00c523585718bde13665275b3"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#ae017f9a00c523585718bde13665275b3">SVF::SVFBasicBlock::SVFBasicBlock</a></div><div class="ttdeci">SVFBasicBlock()=delete</div></div>
|
|
338
346
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_a11aaa0ffaf7fa3d220c9af5d4537eaad"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a11aaa0ffaf7fa3d220c9af5d4537eaad">SVF::SVFFunction::varArg</a></div><div class="ttdeci">bool varArg</div><div class="ttdoc">return true if this function never returns</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00316">SVFValue.h:316</a></div></div>
|
|
339
|
-
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_a5f6f7bf27f373b16b9c51de310b40686"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a5f6f7bf27f373b16b9c51de310b40686">SVF::SVFFunction::~SVFFunction</a></div><div class="ttdeci">virtual ~SVFFunction()</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#
|
|
340
|
-
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_af66c5a824f9fc2813e2d97e17f9a2e96"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#af66c5a824f9fc2813e2d97e17f9a2e96">SVF::SVFLoopAndDomInfo::postDominate</a></div><div class="ttdeci">bool postDominate(const SVFBasicBlock *bbKey, const SVFBasicBlock *bbValue) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#
|
|
347
|
+
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_a5f6f7bf27f373b16b9c51de310b40686"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a5f6f7bf27f373b16b9c51de310b40686">SVF::SVFFunction::~SVFFunction</a></div><div class="ttdeci">virtual ~SVFFunction()</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00167">SVFValue.cpp:167</a></div></div>
|
|
348
|
+
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_af66c5a824f9fc2813e2d97e17f9a2e96"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#af66c5a824f9fc2813e2d97e17f9a2e96">SVF::SVFLoopAndDomInfo::postDominate</a></div><div class="ttdeci">bool postDominate(const SVFBasicBlock *bbKey, const SVFBasicBlock *bbValue) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00091">SVFValue.cpp:91</a></div></div>
|
|
341
349
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_aa61307a21647def105677d36bfbaf32f"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#aa61307a21647def105677d36bfbaf32f">SVF::SVFFunction::allBBs</a></div><div class="ttdeci">std::vector< const SVFBasicBlock * > allBBs</div><div class="ttdoc">the definition of a function across multiple modules</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00320">SVFValue.h:320</a></div></div>
|
|
350
|
+
<div class="ttc" id="aclassSVF_1_1StInfo_html_a00339d1d7074e9222776801ce8689f6b"><div class="ttname"><a href="classSVF_1_1StInfo.html#a00339d1d7074e9222776801ce8689f6b">SVF::StInfo::addFldWithType</a></div><div class="ttdeci">void addFldWithType(u32_t fldIdx, const SVFType *type, u32_t elemIdx)</div><div class="ttdoc">Add field index and element index and their corresponding type.</div></div>
|
|
342
351
|
<div class="ttc" id="aSVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
|
|
343
|
-
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_a39257282d3875b5d28c21f6c8b1caf43"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#a39257282d3875b5d28c21f6c8b1caf43">SVF::SVFLoopAndDomInfo::isLoopHeader</a></div><div class="ttdeci">bool isLoopHeader(const SVFBasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#
|
|
352
|
+
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_a39257282d3875b5d28c21f6c8b1caf43"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#a39257282d3875b5d28c21f6c8b1caf43">SVF::SVFLoopAndDomInfo::isLoopHeader</a></div><div class="ttdeci">bool isLoopHeader(const SVFBasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00147">SVFValue.cpp:147</a></div></div>
|
|
344
353
|
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00517">SVFValue.h:517</a></div></div>
|
|
345
354
|
<div class="ttc" id="aclassSVF_1_1SVFValue_html"><div class="ttname"><a href="classSVF_1_1SVFValue.html">SVF::SVFValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00177">SVFValue.h:177</a></div></div>
|
|
346
355
|
<div class="ttc" id="aclassSVF_1_1SVFFunctionType_html"><div class="ttname"><a href="classSVF_1_1SVFFunctionType.html">SVF::SVFFunctionType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00385">SVFType.h:385</a></div></div>
|
|
356
|
+
<div class="ttc" id="acJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
347
357
|
<div class="ttc" id="acJSON_8cpp_html_a3f9a0d3265a6254722587175dac3e4dc"><div class="ttname"><a href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a></div><div class="ttdeci">newitem type</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02739">cJSON.cpp:2739</a></div></div>
|
|
348
358
|
<div class="ttc" id="aclassSVF_1_1SVFType_html"><div class="ttname"><a href="classSVF_1_1SVFType.html">SVF::SVFType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00242">SVFType.h:242</a></div></div>
|
|
349
359
|
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_a33b96ce50eb1d3caab2b20c19a60b2cc"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#a33b96ce50eb1d3caab2b20c19a60b2cc">SVF::SVFLoopAndDomInfo::BBList</a></div><div class="ttdeci">std::vector< const SVFBasicBlock * > BBList</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00056">SVFValue.h:56</a></div></div>
|
|
350
|
-
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_a49dff199b71a991c4525ed819ec92bed"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#a49dff199b71a991c4525ed819ec92bed">SVF::SVFLoopAndDomInfo::findNearestCommonPDominator</a></div><div class="ttdeci">const SVFBasicBlock * findNearestCommonPDominator(const SVFBasicBlock *A, const SVFBasicBlock *B) const</div><div class="ttdoc">find nearest common post dominator of two basic blocks</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#
|
|
351
|
-
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a10707086ce21999f415c479706abbd38"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a10707086ce21999f415c479706abbd38">SVF::SVFBasicBlock::getTerminator</a></div><div class="ttdeci">const SVFInstruction * getTerminator() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#
|
|
360
|
+
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_a49dff199b71a991c4525ed819ec92bed"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#a49dff199b71a991c4525ed819ec92bed">SVF::SVFLoopAndDomInfo::findNearestCommonPDominator</a></div><div class="ttdeci">const SVFBasicBlock * findNearestCommonPDominator(const SVFBasicBlock *A, const SVFBasicBlock *B) const</div><div class="ttdoc">find nearest common post dominator of two basic blocks</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00121">SVFValue.cpp:121</a></div></div>
|
|
361
|
+
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a10707086ce21999f415c479706abbd38"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a10707086ce21999f415c479706abbd38">SVF::SVFBasicBlock::getTerminator</a></div><div class="ttdeci">const SVFInstruction * getTerminator() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00232">SVFValue.cpp:232</a></div></div>
|
|
352
362
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00297">SVFValue.h:297</a></div></div>
|
|
353
363
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_a625bef2b92c8e62df547bd2758b59c75"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a625bef2b92c8e62df547bd2758b59c75">SVF::SVFFunction::allArgs</a></div><div class="ttdeci">std::vector< const SVFArgument * > allArgs</div><div class="ttdoc">all BasicBlocks of this function</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00321">SVFValue.h:321</a></div></div>
|
|
354
364
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_a7e965c21a8afe7fca32d0f41b16361cf"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a7e965c21a8afe7fca32d0f41b16361cf">SVF::SVFFunction::SVFFunction</a></div><div class="ttdeci">SVFFunction(void)=delete</div></div>
|
|
355
365
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_aefde3a0671e34541a4ad5d7a6dfaa5d1"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#aefde3a0671e34541a4ad5d7a6dfaa5d1">SVF::SVFFunction::loopAndDom</a></div><div class="ttdeci">SVFLoopAndDomInfo * loopAndDom</div><div class="ttdoc">FunctionType, which is different from the type (PointerType) of this SVFFunction.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00318">SVFValue.h:318</a></div></div>
|
|
356
|
-
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_abd5adb119af2024fe4702ba25394d5ac"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#abd5adb119af2024fe4702ba25394d5ac">SVF::SVFBasicBlock::~SVFBasicBlock</a></div><div class="ttdeci">~SVFBasicBlock() override</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#
|
|
366
|
+
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_abd5adb119af2024fe4702ba25394d5ac"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#abd5adb119af2024fe4702ba25394d5ac">SVF::SVFBasicBlock::~SVFBasicBlock</a></div><div class="ttdeci">~SVFBasicBlock() override</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00197">SVFValue.cpp:197</a></div></div>
|
|
357
367
|
<div class="ttc" id="aclassSVF_1_1SVFValue_html_afb50ea5aeea7a0608a3c9335aea6860e"><div class="ttname"><a href="classSVF_1_1SVFValue.html#afb50ea5aeea7a0608a3c9335aea6860e">SVF::SVFValue::SVFValKind</a></div><div class="ttdeci">SVFValKind</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00186">SVFValue.h:186</a></div></div>
|
|
358
368
|
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a66f51cd41e93ad055c4a0c2874e73fae"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a66f51cd41e93ad055c4a0c2874e73fae">SVF::SVFBasicBlock::getSuccessors</a></div><div class="ttdeci">const std::vector< const SVFBasicBlock * > & getSuccessors() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00601">SVFValue.h:601</a></div></div>
|
|
359
|
-
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_ae578002917b4ccbf28f172dba30d1d58"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ae578002917b4ccbf28f172dba30d1d58">SVF::SVFFunction::isVarArg</a></div><div class="ttdeci">bool isVarArg() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#
|
|
369
|
+
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_ae578002917b4ccbf28f172dba30d1d58"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ae578002917b4ccbf28f172dba30d1d58">SVF::SVFFunction::isVarArg</a></div><div class="ttdeci">bool isVarArg() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00187">SVFValue.cpp:187</a></div></div>
|
|
360
370
|
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_af48d08d3adf7dd3ed69d97e4df360059"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#af48d08d3adf7dd3ed69d97e4df360059">SVF::SVFBasicBlock::getParent</a></div><div class="ttdeci">const SVFFunction * getParent() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00577">SVFValue.h:577</a></div></div>
|
|
361
371
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a72502f7f536418621485e90ab98c2016"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">SVF::SVFUtil::move</a></div><div class="ttdeci">constexpr std::remove_reference< T >::type && move(T &&t) noexcept</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00621">SVFUtil.h:621</a></div></div>
|
|
362
|
-
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_a0fb893485fc3df088d921762514faf66"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#a0fb893485fc3df088d921762514faf66">SVF::SVFLoopAndDomInfo::getLoopInfo</a></div><div class="ttdeci">const LoopBBs & getLoopInfo(const SVFBasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#
|
|
363
|
-
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_a48654f61a84ac5f93b02fb618cd0d045"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#a48654f61a84ac5f93b02fb618cd0d045">SVF::SVFLoopAndDomInfo::getExitBlocksOfLoop</a></div><div class="ttdeci">void getExitBlocksOfLoop(const SVFBasicBlock *bb, BBList &exitbbs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#
|
|
364
|
-
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a59a4b7d815f624e448afe3ac0e9d18f5"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a59a4b7d815f624e448afe3ac0e9d18f5">SVF::SVFBasicBlock::getBBPredecessorPos</a></div><div class="ttdeci">u32_t getBBPredecessorPos(const SVFBasicBlock *succbb)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#
|
|
372
|
+
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_a0fb893485fc3df088d921762514faf66"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#a0fb893485fc3df088d921762514faf66">SVF::SVFLoopAndDomInfo::getLoopInfo</a></div><div class="ttdeci">const LoopBBs & getLoopInfo(const SVFBasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00034">SVFValue.cpp:34</a></div></div>
|
|
373
|
+
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_a48654f61a84ac5f93b02fb618cd0d045"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#a48654f61a84ac5f93b02fb618cd0d045">SVF::SVFLoopAndDomInfo::getExitBlocksOfLoop</a></div><div class="ttdeci">void getExitBlocksOfLoop(const SVFBasicBlock *bb, BBList &exitbbs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00041">SVFValue.cpp:41</a></div></div>
|
|
374
|
+
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html_a59a4b7d815f624e448afe3ac0e9d18f5"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html#a59a4b7d815f624e448afe3ac0e9d18f5">SVF::SVFBasicBlock::getBBPredecessorPos</a></div><div class="ttdeci">u32_t getBBPredecessorPos(const SVFBasicBlock *succbb)</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00242">SVFValue.cpp:242</a></div></div>
|
|
375
|
+
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a4a0cfe3a8f37d33ffcdca3d66026dcc3"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVF::SVFValue::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdoc">Needs to be implemented by a SVF front end.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01271">LLVMUtil.cpp:1271</a></div></div>
|
|
365
376
|
<div class="ttc" id="aclassSVF_1_1SVFInstruction_html_a7d81c86ea5e1f8e313457862e19c2a3c"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html#a7d81c86ea5e1f8e313457862e19c2a3c">SVF::SVFInstruction::SVFInstruction</a></div><div class="ttdeci">SVFInstruction(void)=delete</div></div>
|
|
366
377
|
<div class="ttc" id="acJSON_8cpp_html_a1a05ede2ad100bf5de5dfa7ccdfa4397"><div class="ttname"><a href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a></div><div class="ttdeci">return NULL</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01173">cJSON.cpp:1173</a></div></div>
|
|
367
378
|
<div class="ttc" id="aclassSVF_1_1SVFLoopAndDomInfo_html_ad478ac88bc07cf4d6d0ad3517b2c4ab3"><div class="ttname"><a href="classSVF_1_1SVFLoopAndDomInfo.html#ad478ac88bc07cf4d6d0ad3517b2c4ab3">SVF::SVFLoopAndDomInfo::BBSet</a></div><div class="ttdeci">Set< const SVFBasicBlock * > BBSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00055">SVFValue.h:55</a></div></div>
|
|
368
|
-
<div class="ttc" id="aclassSVF_1_1StInfo_html_aae0736a5e99b11571af52e28500a6f9c"><div class="ttname"><a href="classSVF_1_1StInfo.html#aae0736a5e99b11571af52e28500a6f9c">SVF::StInfo::addFldWithType</a></div><div class="ttdeci">void addFldWithType(u32_t fldIdx, const SVFType *type, u32_t elemIdx)</div><div class="ttdoc">Add field index and element index and their corresponding type.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00008">SVFValue.cpp:8</a></div></div>
|
|
369
379
|
<div class="ttc" id="aclassSVF_1_1SVFArgument_html"><div class="ttname"><a href="classSVF_1_1SVFArgument.html">SVF::SVFArgument</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00886">SVFValue.h:886</a></div></div>
|
|
370
|
-
<div class="ttc" id="aclassSVF_1_1StInfo_html_a055697f565cb9d73b41110090fe50159"><div class="ttname"><a href="classSVF_1_1StInfo.html#a055697f565cb9d73b41110090fe50159">SVF::StInfo::getOriginalElemType</a></div><div class="ttdeci">const SVFType * getOriginalElemType(u32_t fldIdx) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#
|
|
380
|
+
<div class="ttc" id="aclassSVF_1_1StInfo_html_a055697f565cb9d73b41110090fe50159"><div class="ttname"><a href="classSVF_1_1StInfo.html#a055697f565cb9d73b41110090fe50159">SVF::StInfo::getOriginalElemType</a></div><div class="ttdeci">const SVFType * getOriginalElemType(u32_t fldIdx) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00026">SVFValue.cpp:26</a></div></div>
|
|
371
381
|
<div class="ttc" id="aSVFValue_8h_html"><div class="ttname"><a href="SVFValue_8h.html">SVFValue.h</a></div></div>
|
|
372
382
|
<div class="ttc" id="aclassSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00620">SVFValue.h:620</a></div></div>
|
|
373
383
|
<div class="ttc" id="anamespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00102">SVFType.h:102</a></div></div>
|