svf-tools 1.0.839 → 1.0.840

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/SVF-doxygen/html/AndersenStat_8cpp_source.html +6 -6
  2. package/SVF-doxygen/html/CFLStat_8cpp_source.html +4 -4
  3. package/SVF-doxygen/html/ContextDDA_8cpp_source.html +2 -2
  4. package/SVF-doxygen/html/DDAStat_8cpp_source.html +3 -3
  5. package/SVF-doxygen/html/DDAStat_8h_source.html +2 -2
  6. package/SVF-doxygen/html/ICFGStat_8h_source.html +1 -1
  7. package/SVF-doxygen/html/LLVMModule_8cpp_source.html +2 -2
  8. package/SVF-doxygen/html/MTAStat_8cpp_source.html +3 -3
  9. package/SVF-doxygen/html/PTAStat_8cpp_source.html +2 -2
  10. package/SVF-doxygen/html/PTAStat_8h_source.html +1 -1
  11. package/SVF-doxygen/html/SVFGStat_8cpp_source.html +7 -7
  12. package/SVF-doxygen/html/SVFG_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +876 -869
  14. package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +21 -21
  15. package/SVF-doxygen/html/SVFStat_8cpp_source.html +7 -7
  16. package/SVF-doxygen/html/SVFStat_8h.html +2 -1
  17. package/SVF-doxygen/html/SVFStat_8h_source.html +76 -74
  18. package/SVF-doxygen/html/WPAStat_8h_source.html +1 -1
  19. package/SVF-doxygen/html/classSVF_1_1AndersenStat-members.html +2 -2
  20. package/SVF-doxygen/html/classSVF_1_1AndersenStat.html +13 -13
  21. package/SVF-doxygen/html/classSVF_1_1CFLStat-members.html +2 -2
  22. package/SVF-doxygen/html/classSVF_1_1CFLStat.html +11 -11
  23. package/SVF-doxygen/html/classSVF_1_1ContextDDA.html +2 -2
  24. package/SVF-doxygen/html/classSVF_1_1DDAStat-members.html +2 -2
  25. package/SVF-doxygen/html/classSVF_1_1DDAStat.html +12 -12
  26. package/SVF-doxygen/html/classSVF_1_1FlowDDA.html +2 -2
  27. package/SVF-doxygen/html/classSVF_1_1FlowSensitiveStat-members.html +2 -2
  28. package/SVF-doxygen/html/classSVF_1_1FlowSensitiveStat.html +13 -13
  29. package/SVF-doxygen/html/classSVF_1_1ICFGStat-members.html +2 -2
  30. package/SVF-doxygen/html/classSVF_1_1ICFGStat.html +8 -8
  31. package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +2 -2
  32. package/SVF-doxygen/html/classSVF_1_1MTAStat-members.html +2 -2
  33. package/SVF-doxygen/html/classSVF_1_1MTAStat.html +10 -10
  34. package/SVF-doxygen/html/classSVF_1_1MemSSAStat-members.html +2 -2
  35. package/SVF-doxygen/html/classSVF_1_1MemSSAStat.html +13 -13
  36. package/SVF-doxygen/html/classSVF_1_1PTAStat-members.html +2 -2
  37. package/SVF-doxygen/html/classSVF_1_1PTAStat.html +8 -8
  38. package/SVF-doxygen/html/classSVF_1_1SVFG.html +1 -1
  39. package/SVF-doxygen/html/classSVF_1_1SVFGStat-members.html +2 -2
  40. package/SVF-doxygen/html/classSVF_1_1SVFGStat.html +14 -14
  41. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +835 -828
  42. package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +1 -1
  43. package/SVF-doxygen/html/classSVF_1_1SVFStat-members.html +2 -2
  44. package/SVF-doxygen/html/classSVF_1_1SVFStat.html +60 -60
  45. package/SVF-doxygen/html/classSVF_1_1VersionedFlowSensitiveStat-members.html +2 -2
  46. package/SVF-doxygen/html/classSVF_1_1VersionedFlowSensitiveStat.html +13 -13
  47. package/SVF-doxygen/html/functions_n.html +1 -1
  48. package/SVF-doxygen/html/functions_t.html +1 -1
  49. package/SVF-doxygen/html/functions_type_n.html +1 -1
  50. package/SVF-doxygen/html/functions_type_t.html +1 -1
  51. package/SVF-doxygen/html/search/all_13.js +1 -1
  52. package/SVF-doxygen/html/search/all_e.js +1 -1
  53. package/SVF-doxygen/html/search/typedefs_11.js +1 -1
  54. package/SVF-doxygen/html/search/typedefs_c.js +1 -1
  55. package/SVF-doxygen/html/svf-ex_8cpp.html +11 -11
  56. package/SVF-doxygen/html/svf-ex_8cpp_source.html +11 -11
  57. package/package.json +1 -1
  58. package/svf/include/Util/SVFStat.h +4 -2
  59. package/svf/lib/AbstractExecution/SVFIR2ItvExeState.cpp +7 -0
@@ -155,865 +155,872 @@ $(function() {
155
155
  <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div>
156
156
  <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(lb, ub);</div>
157
157
  <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div>
158
- <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">else</span></div>
158
+ <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFOtherType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
159
159
  <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div>
160
- <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;cannot support&quot;</span>);</div>
161
- <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div>
162
- <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;}</div>
163
- <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; </div>
164
- <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
165
- <div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a198e8d5f586a698462dee2c3fde8c83e"> 105</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a198e8d5f586a698462dee2c3fde8c83e">SVFIR2ItvExeState::applySummary</a>(<a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &amp;es)</div>
166
- <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;{</div>
167
- <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>: es.<a class="code" href="classSVF_1_1IntervalExeState.html#ac72e3ae77e06e0dfc7c2edd2bf765d77">_varToItvVal</a>)</div>
168
- <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div>
169
- <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; _es._varToItvVal[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first] = <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second;</div>
170
- <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div>
171
- <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>: es.<a class="code" href="classSVF_1_1IntervalExeState.html#a39dead4fe213e3d02b1613debbc86e71">_locToItvVal</a>)</div>
172
- <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div>
173
- <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; _es._locToItvVal[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first] = <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second;</div>
174
- <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div>
175
- <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>: es.<a class="code" href="classSVF_1_1ExeState.html#ad317f2ae2e599a131a6fd9f415f5d712">_varToAddrs</a>)</div>
176
- <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div>
177
- <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; _es._varToAddrs[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first] = <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second;</div>
178
- <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div>
179
- <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>: es.<a class="code" href="classSVF_1_1ExeState.html#a79866a547dc4805d3fefdfd528d2df2a">_locToAddrs</a>)</div>
180
- <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div>
181
- <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; _es._locToAddrs[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first] = <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second;</div>
182
- <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div>
183
- <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;}</div>
184
- <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; </div>
185
- <div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#af80d7665d9815a80ffdba92c3ba029d1"> 125</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#af80d7665d9815a80ffdba92c3ba029d1">SVFIR2ItvExeState::moveToGlobal</a>()</div>
186
- <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;{</div>
187
- <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it: _es._varToItvVal)</div>
188
- <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div>
189
- <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>.<a class="code" href="classSVF_1_1IntervalExeState.html#ac72e3ae77e06e0dfc7c2edd2bf765d77">_varToItvVal</a>.insert(it);</div>
190
- <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div>
191
- <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it: _es._locToItvVal)</div>
192
- <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div>
193
- <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>.<a class="code" href="classSVF_1_1IntervalExeState.html#a39dead4fe213e3d02b1613debbc86e71">_locToItvVal</a>.insert(it);</div>
194
- <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div>
195
- <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;_varToVAddr: _es._varToAddrs)</div>
196
- <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div>
197
- <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>.<a class="code" href="classSVF_1_1ExeState.html#ad317f2ae2e599a131a6fd9f415f5d712">_varToAddrs</a>.insert(_varToVAddr);</div>
198
- <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div>
199
- <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;_locToVAddr: _es._locToAddrs)</div>
200
- <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div>
201
- <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>.<a class="code" href="classSVF_1_1ExeState.html#a79866a547dc4805d3fefdfd528d2df2a">_locToAddrs</a>.insert(_locToVAddr);</div>
202
- <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div>
203
- <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; </div>
204
- <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; _es._varToItvVal.clear();</div>
205
- <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>.<a class="code" href="classSVF_1_1IntervalExeState.html#ac72e3ae77e06e0dfc7c2edd2bf765d77">_varToItvVal</a>.erase(<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()-&gt;getBlkPtr());</div>
206
- <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; _es._varToItvVal[<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3b417ee79560fd00f4cf80906044c198">getBlkPtr</a>()] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
207
- <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; _es._locToItvVal.clear();</div>
208
- <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; _es._varToAddrs.clear();</div>
209
- <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; _es._locToAddrs.clear();</div>
210
- <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;}</div>
211
- <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; </div>
212
- <div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a198fd724be35f415851a2467c3930f76"> 152</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a198fd724be35f415851a2467c3930f76">SVFIR2ItvExeState::widenAddrs</a>(<a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &amp;rhs)</div>
213
- <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;{</div>
214
- <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;rhsItem: rhs.<a class="code" href="classSVF_1_1ExeState.html#ad317f2ae2e599a131a6fd9f415f5d712">_varToAddrs</a>)</div>
215
- <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div>
216
- <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">auto</span> lhsIter = lhs.<a class="code" href="classSVF_1_1ExeState.html#ad317f2ae2e599a131a6fd9f415f5d712">_varToAddrs</a>.find(rhsItem.first);</div>
217
- <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">if</span> (lhsIter != lhs.<a class="code" href="classSVF_1_1ExeState.html#ad317f2ae2e599a131a6fd9f415f5d712">_varToAddrs</a>.end())</div>
218
- <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; {</div>
219
- <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: rhsItem.second)</div>
220
- <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div>
221
- <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">if</span> (!lhsIter-&gt;second.contains(addr))</div>
222
- <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; {</div>
223
- <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> i = 0; i &lt; (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>) <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(); i++)</div>
224
- <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div>
225
- <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; lhsIter-&gt;second.join_with(getGepObjAddress(getInternalID(addr), i));</div>
226
- <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div>
227
- <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div>
228
- <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div>
229
- <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div>
230
- <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div>
231
- <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;rhsItem: rhs.<a class="code" href="classSVF_1_1ExeState.html#a79866a547dc4805d3fefdfd528d2df2a">_locToAddrs</a>)</div>
232
- <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; {</div>
233
- <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keyword">auto</span> lhsIter = lhs.<a class="code" href="classSVF_1_1ExeState.html#a79866a547dc4805d3fefdfd528d2df2a">_locToAddrs</a>.find(rhsItem.first);</div>
234
- <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span> (lhsIter != lhs.<a class="code" href="classSVF_1_1ExeState.html#a79866a547dc4805d3fefdfd528d2df2a">_locToAddrs</a>.end())</div>
235
- <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; {</div>
236
- <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: rhsItem.second)</div>
237
- <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; {</div>
238
- <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">if</span> (!lhsIter-&gt;second.contains(addr))</div>
239
- <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; {</div>
240
- <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> i = 0; i &lt; (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>) <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(); i++)</div>
241
- <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; {</div>
242
- <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; lhsIter-&gt;second.join_with(getGepObjAddress(getInternalID(addr), i));</div>
243
- <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div>
244
- <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div>
245
- <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div>
246
- <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div>
247
- <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div>
248
- <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;}</div>
249
- <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; </div>
250
- <div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a103b55536f1cec38edb2f169d3f94675"> 190</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a103b55536f1cec38edb2f169d3f94675">SVFIR2ItvExeState::narrowAddrs</a>(<a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &amp;rhs)</div>
251
- <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;{</div>
252
- <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;rhsItem: rhs.<a class="code" href="classSVF_1_1ExeState.html#ad317f2ae2e599a131a6fd9f415f5d712">_varToAddrs</a>)</div>
253
- <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; {</div>
254
- <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keyword">auto</span> lhsIter = lhs.<a class="code" href="classSVF_1_1ExeState.html#ad317f2ae2e599a131a6fd9f415f5d712">_varToAddrs</a>.find(rhsItem.first);</div>
255
- <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span> (lhsIter != lhs.<a class="code" href="classSVF_1_1ExeState.html#ad317f2ae2e599a131a6fd9f415f5d712">_varToAddrs</a>.end())</div>
256
- <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div>
257
- <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: lhsIter-&gt;second)</div>
258
- <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; {</div>
259
- <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">if</span> (!rhsItem.second.contains(addr))</div>
260
- <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div>
261
- <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; lhsIter-&gt;second = rhsItem.second;</div>
262
- <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">break</span>;</div>
263
- <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div>
264
- <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div>
265
- <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div>
266
- <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div>
267
- <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;rhsItem: rhs.<a class="code" href="classSVF_1_1ExeState.html#a79866a547dc4805d3fefdfd528d2df2a">_locToAddrs</a>)</div>
268
- <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; {</div>
269
- <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keyword">auto</span> lhsIter = lhs.<a class="code" href="classSVF_1_1ExeState.html#a79866a547dc4805d3fefdfd528d2df2a">_locToAddrs</a>.find(rhsItem.first);</div>
270
- <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span> (lhsIter != lhs.<a class="code" href="classSVF_1_1ExeState.html#a79866a547dc4805d3fefdfd528d2df2a">_locToAddrs</a>.end())</div>
271
- <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div>
272
- <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: lhsIter-&gt;second)</div>
273
- <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div>
274
- <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">if</span> (!rhsItem.second.contains(addr))</div>
275
- <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; {</div>
276
- <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; lhsIter-&gt;second = rhsItem.second;</div>
277
- <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">break</span>;</div>
278
- <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div>
279
- <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div>
280
- <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div>
281
- <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; }</div>
282
- <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;}</div>
283
- <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; </div>
284
- <div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#af8d06156bcbb61beb305ed8096319966"> 224</a></span>&#160;<a class="code" href="classSVF_1_1AddressValue.html">SVFIR2ItvExeState::Addrs</a> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#af8d06156bcbb61beb305ed8096319966">SVFIR2ItvExeState::getGepObjAddress</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pointer, <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>)</div>
285
- <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;{</div>
286
- <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; assert(!getAddrs(pointer).empty());</div>
287
- <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;addrs = getAddrs(pointer);</div>
288
- <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> ret;</div>
289
- <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: addrs)</div>
290
- <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; {</div>
291
- <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; int64_t baseObj = getInternalID(addr);</div>
292
- <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">if</span> (baseObj == 0)</div>
293
- <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; {</div>
294
- <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; ret.<a class="code" href="classSVF_1_1AddressValue.html#a40c67147606ab95dd3318d0fe821d8c0">insert</a>(getVirtualMemAddress(0));</div>
295
- <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">continue</span>;</div>
296
- <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div>
297
- <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; assert(SVFUtil::isa&lt;ObjVar&gt;(_svfir-&gt;getGNode(baseObj)) &amp;&amp; <span class="stringliteral">&quot;Fail to get the base object address!&quot;</span>);</div>
298
- <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepObj = _svfir-&gt;getGepObjVar(baseObj, <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>);</div>
299
- <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; initSVFVar(gepObj);</div>
300
- <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; ret.<a class="code" href="classSVF_1_1AddressValue.html#a40c67147606ab95dd3318d0fe821d8c0">insert</a>(getVirtualMemAddress(gepObj));</div>
301
- <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div>
302
- <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">return</span> ret;</div>
303
- <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;}</div>
304
- <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; </div>
305
- <div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a335922caf105ee72cd9d66a451ae3d4e"> 267</a></span>&#160;<a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a335922caf105ee72cd9d66a451ae3d4e">SVFIR2ItvExeState::getByteOffset</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> *gep)</div>
306
- <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;{</div>
307
- <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">if</span> (gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#ab6f37c073e4755c4b8bb3ed6365687f4">isConstantOffset</a>())</div>
308
- <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a28a7ca818584abdc2d345b41d592c5dc">accumulateConstantByteOffset</a>());</div>
309
- <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> res(0); <span class="comment">// Initialize the result interval &#39;res&#39; to 0.</span></div>
310
- <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="comment">// Loop through the offsetVarAndGepTypePairVec in reverse order.</span></div>
311
- <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>().size() - 1; i &gt;= 0; i--)</div>
312
- <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; {</div>
313
- <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* idxOperandVar =</div>
314
- <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>()[i].first;</div>
315
- <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* idxOperandType =</div>
316
- <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>()[i].second;</div>
317
- <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="comment">// calculating Array/Ptr by elemByteSize * indexOperand</span></div>
318
- <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFArrayType&gt;(idxOperandType) || SVFUtil::isa&lt;SVFPointerType&gt;(idxOperandType))</div>
319
- <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div>
320
- <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> elemByteSize = 1;</div>
321
- <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>* arrOperandType = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(idxOperandType))</div>
322
- <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; elemByteSize = arrOperandType-&gt;getTypeOfElement()-&gt;getByteSize();</div>
323
- <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFPointerType&gt;(idxOperandType))</div>
324
- <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; elemByteSize = gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>().<a class="code" href="classSVF_1_1AccessPath.html#a7b4921dea37246f0f08dffa7db384a61">gepSrcPointeeType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
325
- <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">else</span></div>
326
- <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;idxOperandType must be ArrType or PtrType&quot;</span>);</div>
327
- <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a> *op = SVFUtil::dyn_cast&lt;SVFConstantInt&gt;(idxOperandVar-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>()))</div>
328
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; {</div>
329
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> lb = (double)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() / elemByteSize &gt;= op-&gt;getSExtValue() ?op-&gt;getSExtValue() * elemByteSize</div>
330
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; : <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
331
- <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(lb, lb);</div>
332
- <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }</div>
333
- <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">else</span></div>
334
- <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; {</div>
335
- <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> idx = _svfir-&gt;getValueNode(idxOperandVar-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>());</div>
336
- <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> idxVal = _es[idx];</div>
337
- <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span> (idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#af8be90fc1b61103187908dce4ba68001">isBottom</a>())</div>
338
- <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
339
- <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">else</span></div>
340
- <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; {</div>
341
- <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="comment">// if lb or ub is negative number, set 0.</span></div>
342
- <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="comment">// if lb or ub is positive number, guarantee lb/ub * elemByteSize &lt;= MaxFieldLimit</span></div>
343
- <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> ub = (idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() &lt; 0) ? 0 :</div>
344
- <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; (<span class="keywordtype">double</span>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() /</div>
345
- <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; elemByteSize &gt;= idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() ? elemByteSize * idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>(): <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
346
- <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> lb = (idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() &lt; 0) ? 0 :</div>
347
- <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; ((<span class="keywordtype">double</span>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() /</div>
348
- <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; elemByteSize &gt;= idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>()) ? elemByteSize * idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() : <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
349
- <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(lb, ub);</div>
350
- <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div>
351
- <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; }</div>
352
- <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; }</div>
353
- <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="comment">// Process struct subtype by calculating the byte offset from beginning to the field of struct</span></div>
354
- <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>* structOperandType = SVFUtil::dyn_cast&lt;SVFStructType&gt;(idxOperandType))</div>
355
- <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; {</div>
356
- <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>().<a class="code" href="classSVF_1_1AccessPath.html#a1f279344b4061838d7b3498631bc907c">getStructFieldOffset</a>(</div>
357
- <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; idxOperandVar, structOperandType));</div>
358
- <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div>
359
- <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">else</span></div>
360
- <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; {</div>
361
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;gep type pair only support arr/ptr/struct&quot;</span>);</div>
362
- <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; }</div>
363
- <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; }</div>
364
- <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">return</span> res; <span class="comment">// Return the resulting byte offset as an IntervalValue.</span></div>
365
- <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;}</div>
366
- <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; </div>
367
- <div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a6e4e3eeca9d25fb5eab496faeb6264c3"> 337</a></span>&#160;<a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a6e4e3eeca9d25fb5eab496faeb6264c3">SVFIR2ItvExeState::getItvOfFlattenedElemIndex</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> *gep)</div>
368
- <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;{</div>
369
- <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">if</span> (gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#ab6f37c073e4755c4b8bb3ed6365687f4">isConstantOffset</a>())</div>
370
- <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a1dd264b9f3b43d04aa1396443ad6ad33">accumulateConstantOffset</a>());</div>
371
- <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> res(0);</div>
372
- <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>().size() - 1; i &gt;= 0; i--)</div>
373
- <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div>
374
- <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <a class="code" href="classSVF_1_1AccessPath.html#a4f482ca73cc6e7b8d946651e2b2ea2ae">AccessPath::IdxOperandPair</a> IdxVarAndType =</div>
375
- <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>()[i];</div>
376
- <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a> *value =</div>
377
- <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>()[i].first-&gt;getValue();</div>
378
- <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <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> = IdxVarAndType.second;</div>
379
- <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="comment">// idxLb/Ub is the flattened offset generated by the current OffsetVarAndGepTypePair</span></div>
380
- <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> idxLb;</div>
381
- <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> idxUb;</div>
382
- <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="comment">// get lb and ub of the index value</span></div>
383
- <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>* constInt = SVFUtil::dyn_cast&lt;SVFConstantInt&gt;(value))</div>
384
- <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; idxLb = idxUb = constInt-&gt;getSExtValue();</div>
385
- <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">else</span></div>
386
- <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; {</div>
387
- <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> idxItv = _es[_svfir-&gt;getValueNode(value)];</div>
388
- <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">if</span> (idxItv.<a class="code" href="classSVF_1_1IntervalValue.html#af8be90fc1b61103187908dce4ba68001">isBottom</a>())</div>
389
- <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; idxLb = idxUb = 0;</div>
390
- <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">else</span></div>
391
- <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; {</div>
392
- <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; idxLb = idxItv.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>();</div>
393
- <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; idxUb = idxItv.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>();</div>
394
- <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div>
395
- <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div>
396
- <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="comment">// for pointer type, flattened index = elemNum * idx</span></div>
397
- <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFPointerType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
398
- <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; {</div>
399
- <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> elemNum = gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>().<a class="code" href="classSVF_1_1AccessPath.html#a3c98f0c5f07109f9da0a8a897aa51d18">getElementNum</a>(gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>().<a class="code" href="classSVF_1_1AccessPath.html#a7b4921dea37246f0f08dffa7db384a61">gepSrcPointeeType</a>());</div>
400
- <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; idxLb = (double)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() / elemNum &lt; idxLb? <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(): idxLb * elemNum;</div>
401
- <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; idxUb = (double)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() / elemNum &lt; idxUb? <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(): idxUb * elemNum;</div>
160
+ <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">// handle other type like float double, set s32_t as the range</span></div>
161
+ <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> ub = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a><span class="keyword">&gt;</span>(std::numeric_limits&lt;s32_t&gt;::max());</div>
162
+ <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> lb = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a><span class="keyword">&gt;</span>(std::numeric_limits&lt;s32_t&gt;::min());</div>
163
+ <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(lb, ub);</div>
164
+ <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div>
165
+ <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">else</span></div>
166
+ <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; {</div>
167
+ <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;cannot support&quot;</span>);</div>
168
+ <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div>
169
+ <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;}</div>
170
+ <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; </div>
171
+ <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; </div>
172
+ <div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a198e8d5f586a698462dee2c3fde8c83e"> 112</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a198e8d5f586a698462dee2c3fde8c83e">SVFIR2ItvExeState::applySummary</a>(<a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &amp;es)</div>
173
+ <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;{</div>
174
+ <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>: es.<a class="code" href="classSVF_1_1IntervalExeState.html#ac72e3ae77e06e0dfc7c2edd2bf765d77">_varToItvVal</a>)</div>
175
+ <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div>
176
+ <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; _es._varToItvVal[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first] = <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second;</div>
177
+ <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div>
178
+ <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>: es.<a class="code" href="classSVF_1_1IntervalExeState.html#a39dead4fe213e3d02b1613debbc86e71">_locToItvVal</a>)</div>
179
+ <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div>
180
+ <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; _es._locToItvVal[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first] = <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second;</div>
181
+ <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div>
182
+ <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>: es.<a class="code" href="classSVF_1_1ExeState.html#ad317f2ae2e599a131a6fd9f415f5d712">_varToAddrs</a>)</div>
183
+ <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div>
184
+ <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; _es._varToAddrs[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first] = <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second;</div>
185
+ <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div>
186
+ <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>: es.<a class="code" href="classSVF_1_1ExeState.html#a79866a547dc4805d3fefdfd528d2df2a">_locToAddrs</a>)</div>
187
+ <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div>
188
+ <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; _es._locToAddrs[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first] = <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second;</div>
189
+ <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div>
190
+ <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;}</div>
191
+ <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; </div>
192
+ <div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#af80d7665d9815a80ffdba92c3ba029d1"> 132</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#af80d7665d9815a80ffdba92c3ba029d1">SVFIR2ItvExeState::moveToGlobal</a>()</div>
193
+ <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;{</div>
194
+ <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it: _es._varToItvVal)</div>
195
+ <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div>
196
+ <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>.<a class="code" href="classSVF_1_1IntervalExeState.html#ac72e3ae77e06e0dfc7c2edd2bf765d77">_varToItvVal</a>.insert(it);</div>
197
+ <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div>
198
+ <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it: _es._locToItvVal)</div>
199
+ <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div>
200
+ <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>.<a class="code" href="classSVF_1_1IntervalExeState.html#a39dead4fe213e3d02b1613debbc86e71">_locToItvVal</a>.insert(it);</div>
201
+ <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div>
202
+ <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;_varToVAddr: _es._varToAddrs)</div>
203
+ <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; {</div>
204
+ <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>.<a class="code" href="classSVF_1_1ExeState.html#ad317f2ae2e599a131a6fd9f415f5d712">_varToAddrs</a>.insert(_varToVAddr);</div>
205
+ <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div>
206
+ <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;_locToVAddr: _es._locToAddrs)</div>
207
+ <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div>
208
+ <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>.<a class="code" href="classSVF_1_1ExeState.html#a79866a547dc4805d3fefdfd528d2df2a">_locToAddrs</a>.insert(_locToVAddr);</div>
209
+ <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div>
210
+ <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; </div>
211
+ <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; _es._varToItvVal.clear();</div>
212
+ <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>.<a class="code" href="classSVF_1_1IntervalExeState.html#ac72e3ae77e06e0dfc7c2edd2bf765d77">_varToItvVal</a>.erase(<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()-&gt;getBlkPtr());</div>
213
+ <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; _es._varToItvVal[<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3b417ee79560fd00f4cf80906044c198">getBlkPtr</a>()] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
214
+ <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; _es._locToItvVal.clear();</div>
215
+ <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; _es._varToAddrs.clear();</div>
216
+ <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; _es._locToAddrs.clear();</div>
217
+ <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;}</div>
218
+ <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; </div>
219
+ <div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a198fd724be35f415851a2467c3930f76"> 159</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a198fd724be35f415851a2467c3930f76">SVFIR2ItvExeState::widenAddrs</a>(<a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &amp;rhs)</div>
220
+ <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;{</div>
221
+ <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;rhsItem: rhs.<a class="code" href="classSVF_1_1ExeState.html#ad317f2ae2e599a131a6fd9f415f5d712">_varToAddrs</a>)</div>
222
+ <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; {</div>
223
+ <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">auto</span> lhsIter = lhs.<a class="code" href="classSVF_1_1ExeState.html#ad317f2ae2e599a131a6fd9f415f5d712">_varToAddrs</a>.find(rhsItem.first);</div>
224
+ <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (lhsIter != lhs.<a class="code" href="classSVF_1_1ExeState.html#ad317f2ae2e599a131a6fd9f415f5d712">_varToAddrs</a>.end())</div>
225
+ <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div>
226
+ <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: rhsItem.second)</div>
227
+ <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; {</div>
228
+ <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">if</span> (!lhsIter-&gt;second.contains(addr))</div>
229
+ <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; {</div>
230
+ <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> i = 0; i &lt; (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>) <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(); i++)</div>
231
+ <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div>
232
+ <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; lhsIter-&gt;second.join_with(getGepObjAddress(getInternalID(addr), i));</div>
233
+ <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div>
234
+ <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div>
235
+ <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div>
236
+ <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div>
237
+ <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div>
238
+ <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;rhsItem: rhs.<a class="code" href="classSVF_1_1ExeState.html#a79866a547dc4805d3fefdfd528d2df2a">_locToAddrs</a>)</div>
239
+ <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; {</div>
240
+ <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keyword">auto</span> lhsIter = lhs.<a class="code" href="classSVF_1_1ExeState.html#a79866a547dc4805d3fefdfd528d2df2a">_locToAddrs</a>.find(rhsItem.first);</div>
241
+ <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span> (lhsIter != lhs.<a class="code" href="classSVF_1_1ExeState.html#a79866a547dc4805d3fefdfd528d2df2a">_locToAddrs</a>.end())</div>
242
+ <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div>
243
+ <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: rhsItem.second)</div>
244
+ <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; {</div>
245
+ <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">if</span> (!lhsIter-&gt;second.contains(addr))</div>
246
+ <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div>
247
+ <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> i = 0; i &lt; (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>) <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(); i++)</div>
248
+ <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; {</div>
249
+ <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; lhsIter-&gt;second.join_with(getGepObjAddress(getInternalID(addr), i));</div>
250
+ <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div>
251
+ <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div>
252
+ <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div>
253
+ <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div>
254
+ <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div>
255
+ <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;}</div>
256
+ <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; </div>
257
+ <div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a103b55536f1cec38edb2f169d3f94675"> 197</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a103b55536f1cec38edb2f169d3f94675">SVFIR2ItvExeState::narrowAddrs</a>(<a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &amp;rhs)</div>
258
+ <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;{</div>
259
+ <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;rhsItem: rhs.<a class="code" href="classSVF_1_1ExeState.html#ad317f2ae2e599a131a6fd9f415f5d712">_varToAddrs</a>)</div>
260
+ <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div>
261
+ <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keyword">auto</span> lhsIter = lhs.<a class="code" href="classSVF_1_1ExeState.html#ad317f2ae2e599a131a6fd9f415f5d712">_varToAddrs</a>.find(rhsItem.first);</div>
262
+ <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span> (lhsIter != lhs.<a class="code" href="classSVF_1_1ExeState.html#ad317f2ae2e599a131a6fd9f415f5d712">_varToAddrs</a>.end())</div>
263
+ <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; {</div>
264
+ <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: lhsIter-&gt;second)</div>
265
+ <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; {</div>
266
+ <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">if</span> (!rhsItem.second.contains(addr))</div>
267
+ <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; {</div>
268
+ <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; lhsIter-&gt;second = rhsItem.second;</div>
269
+ <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">break</span>;</div>
270
+ <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; }</div>
271
+ <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div>
272
+ <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div>
273
+ <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div>
274
+ <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;rhsItem: rhs.<a class="code" href="classSVF_1_1ExeState.html#a79866a547dc4805d3fefdfd528d2df2a">_locToAddrs</a>)</div>
275
+ <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; {</div>
276
+ <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keyword">auto</span> lhsIter = lhs.<a class="code" href="classSVF_1_1ExeState.html#a79866a547dc4805d3fefdfd528d2df2a">_locToAddrs</a>.find(rhsItem.first);</div>
277
+ <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">if</span> (lhsIter != lhs.<a class="code" href="classSVF_1_1ExeState.html#a79866a547dc4805d3fefdfd528d2df2a">_locToAddrs</a>.end())</div>
278
+ <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; {</div>
279
+ <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: lhsIter-&gt;second)</div>
280
+ <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; {</div>
281
+ <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">if</span> (!rhsItem.second.contains(addr))</div>
282
+ <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; {</div>
283
+ <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; lhsIter-&gt;second = rhsItem.second;</div>
284
+ <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">break</span>;</div>
285
+ <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div>
286
+ <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div>
287
+ <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div>
288
+ <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; }</div>
289
+ <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;}</div>
290
+ <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; </div>
291
+ <div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#af8d06156bcbb61beb305ed8096319966"> 231</a></span>&#160;<a class="code" href="classSVF_1_1AddressValue.html">SVFIR2ItvExeState::Addrs</a> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#af8d06156bcbb61beb305ed8096319966">SVFIR2ItvExeState::getGepObjAddress</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pointer, <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>)</div>
292
+ <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;{</div>
293
+ <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; assert(!getAddrs(pointer).empty());</div>
294
+ <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;addrs = getAddrs(pointer);</div>
295
+ <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> ret;</div>
296
+ <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: addrs)</div>
297
+ <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; {</div>
298
+ <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; int64_t baseObj = getInternalID(addr);</div>
299
+ <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">if</span> (baseObj == 0)</div>
300
+ <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; {</div>
301
+ <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; ret.<a class="code" href="classSVF_1_1AddressValue.html#a40c67147606ab95dd3318d0fe821d8c0">insert</a>(getVirtualMemAddress(0));</div>
302
+ <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">continue</span>;</div>
303
+ <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div>
304
+ <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; assert(SVFUtil::isa&lt;ObjVar&gt;(_svfir-&gt;getGNode(baseObj)) &amp;&amp; <span class="stringliteral">&quot;Fail to get the base object address!&quot;</span>);</div>
305
+ <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepObj = _svfir-&gt;getGepObjVar(baseObj, <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>);</div>
306
+ <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; initSVFVar(gepObj);</div>
307
+ <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; ret.<a class="code" href="classSVF_1_1AddressValue.html#a40c67147606ab95dd3318d0fe821d8c0">insert</a>(getVirtualMemAddress(gepObj));</div>
308
+ <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div>
309
+ <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">return</span> ret;</div>
310
+ <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;}</div>
311
+ <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; </div>
312
+ <div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a335922caf105ee72cd9d66a451ae3d4e"> 274</a></span>&#160;<a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a335922caf105ee72cd9d66a451ae3d4e">SVFIR2ItvExeState::getByteOffset</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> *gep)</div>
313
+ <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;{</div>
314
+ <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">if</span> (gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#ab6f37c073e4755c4b8bb3ed6365687f4">isConstantOffset</a>())</div>
315
+ <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a28a7ca818584abdc2d345b41d592c5dc">accumulateConstantByteOffset</a>());</div>
316
+ <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> res(0); <span class="comment">// Initialize the result interval &#39;res&#39; to 0.</span></div>
317
+ <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="comment">// Loop through the offsetVarAndGepTypePairVec in reverse order.</span></div>
318
+ <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>().size() - 1; i &gt;= 0; i--)</div>
319
+ <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div>
320
+ <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* idxOperandVar =</div>
321
+ <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>()[i].first;</div>
322
+ <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* idxOperandType =</div>
323
+ <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>()[i].second;</div>
324
+ <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="comment">// calculating Array/Ptr by elemByteSize * indexOperand</span></div>
325
+ <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFArrayType&gt;(idxOperandType) || SVFUtil::isa&lt;SVFPointerType&gt;(idxOperandType))</div>
326
+ <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; {</div>
327
+ <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> elemByteSize = 1;</div>
328
+ <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArrayType.html">SVFArrayType</a>* arrOperandType = SVFUtil::dyn_cast&lt;SVFArrayType&gt;(idxOperandType))</div>
329
+ <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; elemByteSize = arrOperandType-&gt;getTypeOfElement()-&gt;getByteSize();</div>
330
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFPointerType&gt;(idxOperandType))</div>
331
+ <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; elemByteSize = gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>().<a class="code" href="classSVF_1_1AccessPath.html#a7b4921dea37246f0f08dffa7db384a61">gepSrcPointeeType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
332
+ <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">else</span></div>
333
+ <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;idxOperandType must be ArrType or PtrType&quot;</span>);</div>
334
+ <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a> *op = SVFUtil::dyn_cast&lt;SVFConstantInt&gt;(idxOperandVar-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>()))</div>
335
+ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div>
336
+ <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> lb = (double)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() / elemByteSize &gt;= op-&gt;getSExtValue() ?op-&gt;getSExtValue() * elemByteSize</div>
337
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; : <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
338
+ <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(lb, lb);</div>
339
+ <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div>
340
+ <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">else</span></div>
341
+ <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; {</div>
342
+ <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> idx = _svfir-&gt;getValueNode(idxOperandVar-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>());</div>
343
+ <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> idxVal = _es[idx];</div>
344
+ <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span> (idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#af8be90fc1b61103187908dce4ba68001">isBottom</a>())</div>
345
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
346
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">else</span></div>
347
+ <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div>
348
+ <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="comment">// if lb or ub is negative number, set 0.</span></div>
349
+ <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="comment">// if lb or ub is positive number, guarantee lb/ub * elemByteSize &lt;= MaxFieldLimit</span></div>
350
+ <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> ub = (idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() &lt; 0) ? 0 :</div>
351
+ <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; (<span class="keywordtype">double</span>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() /</div>
352
+ <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; elemByteSize &gt;= idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() ? elemByteSize * idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>(): <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
353
+ <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> lb = (idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() &lt; 0) ? 0 :</div>
354
+ <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; ((<span class="keywordtype">double</span>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() /</div>
355
+ <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; elemByteSize &gt;= idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>()) ? elemByteSize * idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() : <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
356
+ <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(lb, ub);</div>
357
+ <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div>
358
+ <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div>
359
+ <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div>
360
+ <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="comment">// Process struct subtype by calculating the byte offset from beginning to the field of struct</span></div>
361
+ <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStructType.html">SVFStructType</a>* structOperandType = SVFUtil::dyn_cast&lt;SVFStructType&gt;(idxOperandType))</div>
362
+ <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; {</div>
363
+ <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>().<a class="code" href="classSVF_1_1AccessPath.html#a1f279344b4061838d7b3498631bc907c">getStructFieldOffset</a>(</div>
364
+ <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; idxOperandVar, structOperandType));</div>
365
+ <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div>
366
+ <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">else</span></div>
367
+ <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div>
368
+ <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;gep type pair only support arr/ptr/struct&quot;</span>);</div>
369
+ <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div>
370
+ <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div>
371
+ <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">return</span> res; <span class="comment">// Return the resulting byte offset as an IntervalValue.</span></div>
372
+ <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;}</div>
373
+ <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; </div>
374
+ <div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a6e4e3eeca9d25fb5eab496faeb6264c3"> 344</a></span>&#160;<a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a6e4e3eeca9d25fb5eab496faeb6264c3">SVFIR2ItvExeState::getItvOfFlattenedElemIndex</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> *gep)</div>
375
+ <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;{</div>
376
+ <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">if</span> (gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#ab6f37c073e4755c4b8bb3ed6365687f4">isConstantOffset</a>())</div>
377
+ <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a1dd264b9f3b43d04aa1396443ad6ad33">accumulateConstantOffset</a>());</div>
378
+ <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> res(0);</div>
379
+ <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>().size() - 1; i &gt;= 0; i--)</div>
380
+ <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; {</div>
381
+ <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="classSVF_1_1AccessPath.html#a4f482ca73cc6e7b8d946651e2b2ea2ae">AccessPath::IdxOperandPair</a> IdxVarAndType =</div>
382
+ <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>()[i];</div>
383
+ <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a> *value =</div>
384
+ <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>()[i].first-&gt;getValue();</div>
385
+ <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <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> = IdxVarAndType.second;</div>
386
+ <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="comment">// idxLb/Ub is the flattened offset generated by the current OffsetVarAndGepTypePair</span></div>
387
+ <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> idxLb;</div>
388
+ <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> idxUb;</div>
389
+ <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="comment">// get lb and ub of the index value</span></div>
390
+ <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a>* constInt = SVFUtil::dyn_cast&lt;SVFConstantInt&gt;(value))</div>
391
+ <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; idxLb = idxUb = constInt-&gt;getSExtValue();</div>
392
+ <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">else</span></div>
393
+ <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; {</div>
394
+ <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> idxItv = _es[_svfir-&gt;getValueNode(value)];</div>
395
+ <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">if</span> (idxItv.<a class="code" href="classSVF_1_1IntervalValue.html#af8be90fc1b61103187908dce4ba68001">isBottom</a>())</div>
396
+ <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; idxLb = idxUb = 0;</div>
397
+ <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">else</span></div>
398
+ <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; {</div>
399
+ <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; idxLb = idxItv.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>();</div>
400
+ <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; idxUb = idxItv.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>();</div>
401
+ <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; }</div>
402
402
  <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; }</div>
403
- <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="comment">// for array or struct, get flattened index from SymbolTable Info</span></div>
404
- <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">else</span></div>
403
+ <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="comment">// for pointer type, flattened index = elemNum * idx</span></div>
404
+ <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFPointerType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
405
405
  <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; {</div>
406
- <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a429c3000ee2ac45119b8c241aa06762c">Options::ModelArrays</a>())</div>
407
- <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div>
408
- <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keyword">const</span> std::vector&lt;u32_t&gt;&amp; so = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()</div>
409
- <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; -&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5dc699aa85fe879eb4b2c9109cf3030d">getTypeInfo</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
410
- <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; -&gt;<a class="code" href="classSVF_1_1StInfo.html#a55e5fd85f232c1867c5c6a73646d53eb">getFlattenedElemIdxVec</a>();</div>
411
- <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">if</span> (so.empty() || idxUb &gt;= (<a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a>)so.size() || idxLb &lt; 0)</div>
412
- <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; {</div>
413
- <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; idxLb = idxUb = 0;</div>
414
- <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; }</div>
415
- <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">else</span></div>
416
- <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; {</div>
417
- <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; idxLb = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">getFlattenedElemIdx</a>(</div>
418
- <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>, idxLb);</div>
419
- <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; idxUb = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">getFlattenedElemIdx</a>(</div>
420
- <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>, idxUb);</div>
406
+ <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> elemNum = gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>().<a class="code" href="classSVF_1_1AccessPath.html#a3c98f0c5f07109f9da0a8a897aa51d18">getElementNum</a>(gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>().<a class="code" href="classSVF_1_1AccessPath.html#a7b4921dea37246f0f08dffa7db384a61">gepSrcPointeeType</a>());</div>
407
+ <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; idxLb = (double)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() / elemNum &lt; idxLb? <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(): idxLb * elemNum;</div>
408
+ <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; idxUb = (double)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() / elemNum &lt; idxUb? <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(): idxUb * elemNum;</div>
409
+ <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div>
410
+ <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="comment">// for array or struct, get flattened index from SymbolTable Info</span></div>
411
+ <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">else</span></div>
412
+ <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; {</div>
413
+ <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a429c3000ee2ac45119b8c241aa06762c">Options::ModelArrays</a>())</div>
414
+ <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; {</div>
415
+ <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keyword">const</span> std::vector&lt;u32_t&gt;&amp; so = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()</div>
416
+ <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; -&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a5dc699aa85fe879eb4b2c9109cf3030d">getTypeInfo</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
417
+ <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; -&gt;<a class="code" href="classSVF_1_1StInfo.html#a55e5fd85f232c1867c5c6a73646d53eb">getFlattenedElemIdxVec</a>();</div>
418
+ <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span> (so.empty() || idxUb &gt;= (<a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a>)so.size() || idxLb &lt; 0)</div>
419
+ <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; {</div>
420
+ <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; idxLb = idxUb = 0;</div>
421
421
  <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div>
422
- <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div>
423
- <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">else</span></div>
424
- <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; idxLb = idxUb = 0;</div>
425
- <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div>
426
- <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(idxLb, idxUb);</div>
427
- <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div>
428
- <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; res.<a class="code" href="classSVF_1_1IntervalValue.html#a144e17cec654e83654298b379ed4ce9f">meet_with</a>(<a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)0, (<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>()));</div>
429
- <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">if</span> (res.<a class="code" href="classSVF_1_1IntervalValue.html#af8be90fc1b61103187908dce4ba68001">isBottom</a>())</div>
430
- <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; {</div>
431
- <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; res = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0);</div>
432
- <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div>
433
- <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">return</span> res;</div>
434
- <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;}</div>
435
- <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; </div>
436
- <div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a61d288c8dc621a0578faa5ff784f4b6e"> 411</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a61d288c8dc621a0578faa5ff784f4b6e">SVFIR2ItvExeState::initValVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a> *valVar, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> varId)</div>
437
- <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;{</div>
438
- <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; </div>
439
- <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> *svfir = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>();</div>
440
- <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">if</span> (<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> = valVar-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ab6f95d3e7e099d75cfc9645ebc037047">getType</a>())</div>
441
- <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; {</div>
442
- <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="comment">// TODO:miss floatpointerty, voidty, labelty, matadataty</span></div>
443
- <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;getKind() == <a class="code" href="classSVF_1_1SVFType.html#a333e01a9c431c8f53bd2fc597bd5c40cae2025d3e9d7943027c74ae6bba3fff22">SVFType::SVFIntegerTy</a> ||</div>
444
- <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;getKind() == <a class="code" href="classSVF_1_1SVFType.html#a333e01a9c431c8f53bd2fc597bd5c40cae8c18603570fa65fa5a9aabdf2f5d0a1">SVFType::SVFPointerTy</a> ||</div>
445
- <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;getKind() == <a class="code" href="classSVF_1_1SVFType.html#a333e01a9c431c8f53bd2fc597bd5c40ca01274de074f51be05f2ad6b2d0ca9dd6">SVFType::SVFFunctionTy</a> ||</div>
446
- <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;getKind() == <a class="code" href="classSVF_1_1SVFType.html#a333e01a9c431c8f53bd2fc597bd5c40ca77e52ad9bebff282f40383f468fe856d">SVFType::SVFStructTy</a> ||</div>
447
- <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;getKind() == <a class="code" href="classSVF_1_1SVFType.html#a333e01a9c431c8f53bd2fc597bd5c40cac8c846ff3208d07a4a39c7a21433c6a5">SVFType::SVFArrayTy</a>)</div>
448
- <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="comment">// continue with null expression</span></div>
449
- <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; _es[varId] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
450
- <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">else</span></div>
451
- <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; {</div>
452
- <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; </div>
453
- <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; valVar-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">toString</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; <span class="stringliteral">&quot; type: &quot;</span> &lt;&lt; *<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
454
- <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;what other types we have&quot;</span>);</div>
455
- <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div>
456
- <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; }</div>
457
- <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">else</span></div>
458
- <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; {</div>
459
- <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">if</span> (svfir-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>() == valVar-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())</div>
460
- <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; _es[varId] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
461
- <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">else</span></div>
462
- <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; _es[varId] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
463
- <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; assert(SVFUtil::isa&lt;DummyValVar&gt;(valVar) &amp;&amp; <span class="stringliteral">&quot;not a DummValVar if it has no type?&quot;</span>);</div>
464
- <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</div>
465
- <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;}</div>
466
- <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; </div>
467
- <div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a646fa58f61db6abd98d0a04af1fab88d"> 447</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a646fa58f61db6abd98d0a04af1fab88d">SVFIR2ItvExeState::initObjVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a> *objVar, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> varId)</div>
468
- <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;{</div>
469
- <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; </div>
470
- <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">if</span> (objVar-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>())</div>
471
- <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; {</div>
472
- <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a> *obj = objVar-&gt;<a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>();</div>
473
- <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">if</span> (obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a1a4ff4aaaf2573240a318e1b79328cd0">isConstDataOrConstGlobal</a>() || obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a7f828731597450f1d43b61413ab0e7bb">isConstantArray</a>() || obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a019a77516c403f1f3cc72917b810a41f">isConstantStruct</a>())</div>
474
- <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; {</div>
475
- <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a> *consInt = SVFUtil::dyn_cast&lt;SVFConstantInt&gt;(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a2f70e9c830b18f25c56b530722f106c4">getValue</a>()))</div>
476
- <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; {</div>
477
- <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordtype">double</span> numeral = (double)consInt-&gt;getSExtValue();</div>
478
- <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>[varId] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(numeral, numeral);</div>
479
- <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div>
480
- <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantFP.html">SVFConstantFP</a>* consFP = SVFUtil::dyn_cast&lt;SVFConstantFP&gt;(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a2f70e9c830b18f25c56b530722f106c4">getValue</a>()))</div>
481
- <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>[varId] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(consFP-&gt;getFPValue(), consFP-&gt;getFPValue());</div>
482
- <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFConstantNullPtr&gt;(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a2f70e9c830b18f25c56b530722f106c4">getValue</a>()))</div>
483
- <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>[varId] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
484
- <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFGlobalValue&gt;(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a2f70e9c830b18f25c56b530722f106c4">getValue</a>()))</div>
485
- <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>.<a class="code" href="classSVF_1_1IntervalExeState.html#a056e0db56033ac4dc041e6d82d614dbd">getAddrs</a>(varId).<a class="code" href="classSVF_1_1AddressValue.html#a40c67147606ab95dd3318d0fe821d8c0">insert</a>(getVirtualMemAddress(varId));</div>
486
- <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a7f828731597450f1d43b61413ab0e7bb">isConstantArray</a>() || obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a019a77516c403f1f3cc72917b810a41f">isConstantStruct</a>())</div>
487
- <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>[varId] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
488
- <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">else</span></div>
489
- <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>[varId] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
490
- <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; }</div>
491
- <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">else</span></div>
492
- <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>.<a class="code" href="classSVF_1_1IntervalExeState.html#a056e0db56033ac4dc041e6d82d614dbd">getAddrs</a>(varId).<a class="code" href="classSVF_1_1AddressValue.html#a40c67147606ab95dd3318d0fe821d8c0">insert</a>(getVirtualMemAddress(varId));</div>
493
- <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; }</div>
494
- <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">else</span></div>
495
- <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>.<a class="code" href="classSVF_1_1IntervalExeState.html#a056e0db56033ac4dc041e6d82d614dbd">getAddrs</a>(varId).<a class="code" href="classSVF_1_1AddressValue.html#a40c67147606ab95dd3318d0fe821d8c0">insert</a>(getVirtualMemAddress(varId));</div>
496
- <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;}</div>
497
- <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; </div>
498
- <div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#af5d05c5316127cfe8d975a3a0a23798b"> 479</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#af5d05c5316127cfe8d975a3a0a23798b">SVFIR2ItvExeState::initSVFVar</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> varId)</div>
499
- <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;{</div>
500
- <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(varId) || _es.inVarToAddrsTable(varId)) <span class="keywordflow">return</span>;</div>
501
- <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> *svfir = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>();</div>
502
- <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *svfVar = svfir-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(varId);</div>
503
- <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="comment">// write objvar into cache instead of exestate</span></div>
504
- <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a> *objVar = dyn_cast&lt;ObjVar&gt;(svfVar))</div>
505
- <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; {</div>
506
- <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; initObjVar(objVar, varId);</div>
507
- <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">return</span>;</div>
508
- <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div>
509
- <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a> *valVar = dyn_cast&lt;ValVar&gt;(svfVar))</div>
510
- <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; {</div>
511
- <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; initValVar(valVar, varId);</div>
512
- <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">return</span>;</div>
513
- <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; }</div>
514
- <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">else</span></div>
515
- <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; {</div>
516
- <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; initValVar(valVar, varId);</div>
517
- <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">return</span>;</div>
518
- <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div>
519
- <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;}</div>
520
- <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; </div>
521
- <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; </div>
522
- <div class="line"><a name="l00503"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#af7f42ee51b03b1aaaee18f10eec0c2b9"> 503</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#af7f42ee51b03b1aaaee18f10eec0c2b9">SVFIR2ItvExeState::translateAddr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> *addr)</div>
523
- <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;{</div>
524
- <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; initSVFVar(addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>());</div>
525
- <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>()))</div>
526
- <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; {</div>
527
- <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="comment">// if addr RHS is integerType(i8 i32 etc), value should be limited.</span></div>
528
- <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">if</span> (addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28">getRHSVar</a>()-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ab6f95d3e7e099d75cfc9645ebc037047">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a4bc7962d519c1c0380b5a6a144c91c51">getKind</a>() == <a class="code" href="classSVF_1_1SVFType.html#a333e01a9c431c8f53bd2fc597bd5c40cae2025d3e9d7943027c74ae6bba3fff22">SVFType::SVFIntegerTy</a>)</div>
529
- <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; {</div>
530
- <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>[addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>()].meet_with(</div>
531
- <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; getRangeLimitFromType(addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28">getRHSVar</a>()-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ab6f95d3e7e099d75cfc9645ebc037047">getType</a>()));</div>
532
- <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; }</div>
533
- <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>[addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>()] = <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>[addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>()];</div>
534
- <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; </div>
535
- <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div>
536
- <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>()))</div>
537
- <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; {</div>
538
- <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>.<a class="code" href="classSVF_1_1IntervalExeState.html#a056e0db56033ac4dc041e6d82d614dbd">getAddrs</a>(addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>()) = <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>.<a class="code" href="classSVF_1_1IntervalExeState.html#a056e0db56033ac4dc041e6d82d614dbd">getAddrs</a>(</div>
539
- <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>());</div>
540
- <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; }</div>
541
- <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">else</span></div>
542
- <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; {</div>
543
- <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;not number or virtual addrs?&quot;</span>);</div>
544
- <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; }</div>
545
- <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;}</div>
546
- <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; </div>
547
- <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; </div>
548
- <div class="line"><a name="l00529"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a449ee8f244120866037c7f6d2ee5fc13"> 529</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a449ee8f244120866037c7f6d2ee5fc13">SVFIR2ItvExeState::translateBinary</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> *binary)</div>
549
- <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;{</div>
550
- <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> op0 = binary-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(0);</div>
551
- <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> op1 = binary-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(1);</div>
552
- <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> res = binary-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div>
553
- <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">if</span> (!inVarToValTable(op0)) _es[op0] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
554
- <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">if</span> (!inVarToValTable(op1)) _es[op1] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
555
- <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(op0) &amp;&amp; inVarToValTable(op1))</div>
556
- <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; {</div>
557
- <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> &amp;lhs = _es[op0], &amp;rhs = _es[op1];</div>
558
- <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> resVal;</div>
559
- <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">switch</span> (binary-&gt;<a class="code" href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f">getOpcode</a>())</div>
560
- <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; {</div>
561
- <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a06926877b6c25931a409224497753862">BinaryOPStmt::Add</a>:</div>
562
- <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a97c70ced12e0f1c5e3c3708b13727e8e">BinaryOPStmt::FAdd</a>:</div>
563
- <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; resVal = (lhs + rhs);</div>
564
- <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">break</span>;</div>
565
- <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a758382a3b40e116175ca321fa4449d7f">BinaryOPStmt::Sub</a>:</div>
566
- <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a05348a0e3f232ac552bb3ca56525c448">BinaryOPStmt::FSub</a>:</div>
567
- <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; resVal = (lhs - rhs);</div>
568
- <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">break</span>;</div>
569
- <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a787e5771d6e70f3cbec3e2a33f5a4e8a">BinaryOPStmt::Mul</a>:</div>
570
- <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a22a047e74227056ef3340628fae80198">BinaryOPStmt::FMul</a>:</div>
571
- <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; resVal = (lhs * rhs);</div>
572
- <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">break</span>;</div>
573
- <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a7a4ce4e97992d92ac044456e66821552">BinaryOPStmt::SDiv</a>:</div>
574
- <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a553540425a63724c8b7f2fd0ca25b567">BinaryOPStmt::FDiv</a>:</div>
575
- <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ad2f8b02de2c62175d3341be92a925250">BinaryOPStmt::UDiv</a>:</div>
576
- <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; resVal = (lhs / rhs);</div>
577
- <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">break</span>;</div>
578
- <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ad2db0456c9943dd75aa091cb19040448">BinaryOPStmt::SRem</a>:</div>
579
- <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6aafa66e75600b0098c4fa3304720cb7a6">BinaryOPStmt::FRem</a>:</div>
580
- <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6af7dba9dda5edcee046ca81fb184858bc">BinaryOPStmt::URem</a>:</div>
581
- <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; resVal = (lhs % rhs);</div>
582
- <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">break</span>;</div>
583
- <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ac89b793572db14a3c018122cf9fc79d6">BinaryOPStmt::Xor</a>:</div>
584
- <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; resVal = (lhs ^ rhs);</div>
585
- <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">break</span>;</div>
586
- <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a0df258a85e260bcb9534ae1b650e1856">BinaryOPStmt::And</a>:</div>
587
- <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; resVal = (lhs &amp; rhs);</div>
588
- <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordflow">break</span>;</div>
589
- <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a90745e5effc8b7ef43c693d1e4fa7dbe">BinaryOPStmt::Or</a>:</div>
590
- <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; resVal = (lhs | rhs);</div>
591
- <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">break</span>;</div>
592
- <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ac988853383e1588cf568687848e73576">BinaryOPStmt::AShr</a>:</div>
593
- <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; resVal = (lhs &gt;&gt; rhs);</div>
594
- <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">break</span>;</div>
595
- <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a193780e40cee5123c543b6f739b3b46b">BinaryOPStmt::Shl</a>:</div>
596
- <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; resVal = (lhs &lt;&lt; rhs);</div>
597
- <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">break</span>;</div>
598
- <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a0bf768bb67e7f6f5ee6302bb6dd71da1">BinaryOPStmt::LShr</a>:</div>
599
- <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; resVal = (lhs &gt;&gt; rhs);</div>
600
- <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">break</span>;</div>
601
- <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">default</span>:</div>
602
- <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; {</div>
603
- <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;undefined binary: &quot;</span>);</div>
604
- <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div>
605
- <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; }</div>
606
- <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; _es[res] = resVal;</div>
607
- <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; }</div>
608
- <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;}</div>
609
- <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; </div>
610
- <div class="line"><a name="l00591"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#aac5cc8767eb750bf121f1897788dee24"> 591</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#aac5cc8767eb750bf121f1897788dee24">SVFIR2ItvExeState::translateCmp</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a> *cmp)</div>
611
- <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;{</div>
612
- <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> op0 = cmp-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(0);</div>
613
- <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> op1 = cmp-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(1);</div>
614
- <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> res = cmp-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div>
615
- <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(op0) &amp;&amp; inVarToValTable(op1))</div>
616
- <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; {</div>
617
- <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> resVal;</div>
618
- <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> &amp;lhs = _es[op0], &amp;rhs = _es[op1];</div>
619
- <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keyword">auto</span> predicate = cmp-&gt;<a class="code" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632">getPredicate</a>();</div>
620
- <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">switch</span> (predicate)</div>
621
- <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; {</div>
622
- <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acafa5a0ab60aff74a8d653c3f9fac04936">CmpStmt::ICMP_EQ</a>:</div>
623
- <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca900bbc9c7824294c3a69c2cb006c27ee">CmpStmt::FCMP_OEQ</a>:</div>
624
- <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca2793f23e72e3ff432bf193adf0f1b021">CmpStmt::FCMP_UEQ</a>:</div>
625
- <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; resVal = (lhs == rhs);</div>
626
- <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">break</span>;</div>
627
- <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca6eef834451ec753add639be49c51f03f">CmpStmt::ICMP_NE</a>:</div>
628
- <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca2a3ce0c02931984d92d70356efc49193">CmpStmt::FCMP_ONE</a>:</div>
629
- <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acad23a87cb6f2b3b2486a9a1277b491c09">CmpStmt::FCMP_UNE</a>:</div>
630
- <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; resVal = (lhs != rhs);</div>
631
- <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">break</span>;</div>
632
- <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca8d59d9d7f39bb9c8b1e3dcebe0c5dc48">CmpStmt::ICMP_UGT</a>:</div>
633
- <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca229d105d0841dc895811b29af62a91ee">CmpStmt::ICMP_SGT</a>:</div>
634
- <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca6121702881c763c3c8cd3e30dedc7486">CmpStmt::FCMP_OGT</a>:</div>
635
- <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca3873c41e060b95cb37eac587402b597c">CmpStmt::FCMP_UGT</a>:</div>
636
- <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; resVal = (lhs &gt; rhs);</div>
637
- <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordflow">break</span>;</div>
638
- <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca3428808abe683bfc6bb0267077cdb128">CmpStmt::ICMP_UGE</a>:</div>
639
- <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acac5a87d53b1ad255cec18b3784cd81f80">CmpStmt::ICMP_SGE</a>:</div>
640
- <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca5c4576ce636e323cbc3aa322480c5d2c">CmpStmt::FCMP_OGE</a>:</div>
641
- <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acac0e2d9db5453eb8be7543fb4315003da">CmpStmt::FCMP_UGE</a>:</div>
642
- <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; resVal = (lhs &gt;= rhs);</div>
643
- <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">break</span>;</div>
644
- <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca7833b647068883840c9bb438103e736d">CmpStmt::ICMP_ULT</a>:</div>
645
- <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca88d74bf66465f4fdd221db0c11d62927">CmpStmt::ICMP_SLT</a>:</div>
646
- <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca5e3cf3105b8f13da66719856579956fa">CmpStmt::FCMP_OLT</a>:</div>
647
- <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaa6b852204a4d0758ebd632d8a88b966d">CmpStmt::FCMP_ULT</a>:</div>
648
- <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; resVal = (lhs &lt; rhs);</div>
649
- <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">break</span>;</div>
650
- <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca56a20e408f9639234e4a11036764a38f">CmpStmt::ICMP_ULE</a>:</div>
651
- <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaeeae52f8d195815edfb8c85037d246d6">CmpStmt::ICMP_SLE</a>:</div>
652
- <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca9dd165c6da06811ffc8c2e53b30ab32d">CmpStmt::FCMP_OLE</a>:</div>
653
- <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca8149cba2e9e265892f02bbd4a35fe6fb">CmpStmt::FCMP_ULE</a>:</div>
654
- <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; resVal = (lhs &lt;= rhs);</div>
655
- <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">break</span>;</div>
656
- <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaa100cf99398f6118d332191380574c06">CmpStmt::FCMP_FALSE</a>:</div>
657
- <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
658
- <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">break</span>;</div>
659
- <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca7234c9a242034a71d0bdcb54aeec6da7">CmpStmt::FCMP_TRUE</a>:</div>
660
- <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 1);</div>
661
- <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">break</span>;</div>
662
- <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">default</span>:</div>
663
- <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; {</div>
664
- <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;undefined compare: &quot;</span>);</div>
665
- <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; }</div>
666
- <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; }</div>
667
- <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; _es[res] = resVal;</div>
668
- <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; }</div>
669
- <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(op0) &amp;&amp; inVarToAddrsTable(op1))</div>
670
- <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; {</div>
671
- <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> resVal;</div>
672
- <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;lhs = getAddrs(op0), &amp;rhs = getAddrs(op1);</div>
673
- <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; assert(!lhs.<a class="code" href="classSVF_1_1AddressValue.html#aa7291f4b74bb824fb38b8c383fa0b6a0">empty</a>() &amp;&amp; !rhs.empty() &amp;&amp; <span class="stringliteral">&quot;empty address?&quot;</span>);</div>
674
- <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keyword">auto</span> predicate = cmp-&gt;<a class="code" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632">getPredicate</a>();</div>
675
- <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">switch</span> (predicate)</div>
676
- <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; {</div>
677
- <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acafa5a0ab60aff74a8d653c3f9fac04936">CmpStmt::ICMP_EQ</a>:</div>
678
- <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca900bbc9c7824294c3a69c2cb006c27ee">CmpStmt::FCMP_OEQ</a>:</div>
679
- <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca2793f23e72e3ff432bf193adf0f1b021">CmpStmt::FCMP_UEQ</a>:</div>
680
- <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; {</div>
681
- <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.size() == 1)</div>
682
- <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; {</div>
683
- <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(lhs.<a class="code" href="classSVF_1_1AddressValue.html#a04456fe47889dd8f1b712255c9598fe9">equals</a>(rhs));</div>
684
- <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; }</div>
685
- <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">else</span></div>
686
- <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; {</div>
687
- <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#a269a73753a7b495eb08bb0c9c0a58dc0">hasIntersect</a>(rhs))</div>
688
- <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; {</div>
689
- <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
690
- <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; }</div>
691
- <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">else</span></div>
692
- <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; {</div>
693
- <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0);</div>
694
- <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; }</div>
695
- <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div>
696
- <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">break</span>;</div>
697
- <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; }</div>
698
- <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca6eef834451ec753add639be49c51f03f">CmpStmt::ICMP_NE</a>:</div>
699
- <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca2a3ce0c02931984d92d70356efc49193">CmpStmt::FCMP_ONE</a>:</div>
700
- <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acad23a87cb6f2b3b2486a9a1277b491c09">CmpStmt::FCMP_UNE</a>:</div>
701
- <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; {</div>
702
- <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.size() == 1)</div>
703
- <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; {</div>
704
- <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(!lhs.<a class="code" href="classSVF_1_1AddressValue.html#a04456fe47889dd8f1b712255c9598fe9">equals</a>(rhs));</div>
705
- <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; }</div>
706
- <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">else</span></div>
707
- <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; {</div>
708
- <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#a269a73753a7b495eb08bb0c9c0a58dc0">hasIntersect</a>(rhs))</div>
709
- <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; {</div>
710
- <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
711
- <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; }</div>
712
- <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">else</span></div>
713
- <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; {</div>
714
- <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1);</div>
715
- <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; }</div>
716
- <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; }</div>
717
- <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">break</span>;</div>
718
- <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; }</div>
719
- <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca8d59d9d7f39bb9c8b1e3dcebe0c5dc48">CmpStmt::ICMP_UGT</a>:</div>
720
- <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca229d105d0841dc895811b29af62a91ee">CmpStmt::ICMP_SGT</a>:</div>
721
- <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca6121702881c763c3c8cd3e30dedc7486">CmpStmt::FCMP_OGT</a>:</div>
722
- <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca3873c41e060b95cb37eac587402b597c">CmpStmt::FCMP_UGT</a>:</div>
723
- <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; {</div>
724
- <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.size() == 1)</div>
725
- <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; {</div>
726
- <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(*lhs.<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>() &gt; *rhs.begin());</div>
727
- <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; }</div>
728
- <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordflow">else</span></div>
729
- <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; {</div>
730
- <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
731
- <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; }</div>
732
- <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">break</span>;</div>
733
- <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; }</div>
734
- <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca3428808abe683bfc6bb0267077cdb128">CmpStmt::ICMP_UGE</a>:</div>
735
- <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acac5a87d53b1ad255cec18b3784cd81f80">CmpStmt::ICMP_SGE</a>:</div>
736
- <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca5c4576ce636e323cbc3aa322480c5d2c">CmpStmt::FCMP_OGE</a>:</div>
737
- <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acac0e2d9db5453eb8be7543fb4315003da">CmpStmt::FCMP_UGE</a>:</div>
738
- <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; {</div>
739
- <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.size() == 1)</div>
740
- <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; {</div>
741
- <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(*lhs.<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>() &gt;= *rhs.begin());</div>
742
- <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; }</div>
743
- <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">else</span></div>
744
- <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; {</div>
745
- <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
746
- <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; }</div>
747
- <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">break</span>;</div>
748
- <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; }</div>
749
- <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca7833b647068883840c9bb438103e736d">CmpStmt::ICMP_ULT</a>:</div>
750
- <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca88d74bf66465f4fdd221db0c11d62927">CmpStmt::ICMP_SLT</a>:</div>
751
- <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca5e3cf3105b8f13da66719856579956fa">CmpStmt::FCMP_OLT</a>:</div>
752
- <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaa6b852204a4d0758ebd632d8a88b966d">CmpStmt::FCMP_ULT</a>:</div>
753
- <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; {</div>
754
- <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.size() == 1)</div>
755
- <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; {</div>
756
- <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(*lhs.<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>() &lt; *rhs.begin());</div>
757
- <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; }</div>
758
- <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">else</span></div>
759
- <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; {</div>
760
- <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
761
- <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; }</div>
762
- <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">break</span>;</div>
763
- <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; }</div>
764
- <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca56a20e408f9639234e4a11036764a38f">CmpStmt::ICMP_ULE</a>:</div>
765
- <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaeeae52f8d195815edfb8c85037d246d6">CmpStmt::ICMP_SLE</a>:</div>
766
- <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca9dd165c6da06811ffc8c2e53b30ab32d">CmpStmt::FCMP_OLE</a>:</div>
767
- <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca8149cba2e9e265892f02bbd4a35fe6fb">CmpStmt::FCMP_ULE</a>:</div>
768
- <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; {</div>
769
- <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.size() == 1)</div>
770
- <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; {</div>
771
- <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(*lhs.<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>() &lt;= *rhs.begin());</div>
772
- <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; }</div>
773
- <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="keywordflow">else</span></div>
774
- <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; {</div>
775
- <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
776
- <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; }</div>
777
- <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="keywordflow">break</span>;</div>
778
- <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; }</div>
779
- <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaa100cf99398f6118d332191380574c06">CmpStmt::FCMP_FALSE</a>:</div>
780
- <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
781
- <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="keywordflow">break</span>;</div>
782
- <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca7234c9a242034a71d0bdcb54aeec6da7">CmpStmt::FCMP_TRUE</a>:</div>
783
- <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 1);</div>
422
+ <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">else</span></div>
423
+ <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; {</div>
424
+ <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; idxLb = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">getFlattenedElemIdx</a>(</div>
425
+ <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>, idxLb);</div>
426
+ <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; idxUb = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">getFlattenedElemIdx</a>(</div>
427
+ <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>, idxUb);</div>
428
+ <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; }</div>
429
+ <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div>
430
+ <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">else</span></div>
431
+ <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; idxLb = idxUb = 0;</div>
432
+ <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div>
433
+ <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(idxLb, idxUb);</div>
434
+ <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; }</div>
435
+ <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; res.<a class="code" href="classSVF_1_1IntervalValue.html#a144e17cec654e83654298b379ed4ce9f">meet_with</a>(<a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>((<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)0, (<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>()));</div>
436
+ <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">if</span> (res.<a class="code" href="classSVF_1_1IntervalValue.html#af8be90fc1b61103187908dce4ba68001">isBottom</a>())</div>
437
+ <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; {</div>
438
+ <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; res = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0);</div>
439
+ <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div>
440
+ <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> res;</div>
441
+ <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;}</div>
442
+ <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; </div>
443
+ <div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a61d288c8dc621a0578faa5ff784f4b6e"> 418</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a61d288c8dc621a0578faa5ff784f4b6e">SVFIR2ItvExeState::initValVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a> *valVar, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> varId)</div>
444
+ <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;{</div>
445
+ <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; </div>
446
+ <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> *svfir = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>();</div>
447
+ <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">if</span> (<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> = valVar-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ab6f95d3e7e099d75cfc9645ebc037047">getType</a>())</div>
448
+ <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; {</div>
449
+ <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="comment">// TODO:miss floatpointerty, voidty, labelty, matadataty</span></div>
450
+ <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;getKind() == <a class="code" href="classSVF_1_1SVFType.html#a333e01a9c431c8f53bd2fc597bd5c40cae2025d3e9d7943027c74ae6bba3fff22">SVFType::SVFIntegerTy</a> ||</div>
451
+ <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;getKind() == <a class="code" href="classSVF_1_1SVFType.html#a333e01a9c431c8f53bd2fc597bd5c40cae8c18603570fa65fa5a9aabdf2f5d0a1">SVFType::SVFPointerTy</a> ||</div>
452
+ <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;getKind() == <a class="code" href="classSVF_1_1SVFType.html#a333e01a9c431c8f53bd2fc597bd5c40ca01274de074f51be05f2ad6b2d0ca9dd6">SVFType::SVFFunctionTy</a> ||</div>
453
+ <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;getKind() == <a class="code" href="classSVF_1_1SVFType.html#a333e01a9c431c8f53bd2fc597bd5c40ca77e52ad9bebff282f40383f468fe856d">SVFType::SVFStructTy</a> ||</div>
454
+ <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;getKind() == <a class="code" href="classSVF_1_1SVFType.html#a333e01a9c431c8f53bd2fc597bd5c40cac8c846ff3208d07a4a39c7a21433c6a5">SVFType::SVFArrayTy</a>)</div>
455
+ <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="comment">// continue with null expression</span></div>
456
+ <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; _es[varId] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
457
+ <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">else</span></div>
458
+ <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; {</div>
459
+ <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; </div>
460
+ <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() &lt;&lt; valVar-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">toString</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; <span class="stringliteral">&quot; type: &quot;</span> &lt;&lt; *<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
461
+ <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;what other types we have&quot;</span>);</div>
462
+ <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; }</div>
463
+ <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div>
464
+ <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">else</span></div>
465
+ <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; {</div>
466
+ <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">if</span> (svfir-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>() == valVar-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())</div>
467
+ <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; _es[varId] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
468
+ <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">else</span></div>
469
+ <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; _es[varId] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
470
+ <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; assert(SVFUtil::isa&lt;DummyValVar&gt;(valVar) &amp;&amp; <span class="stringliteral">&quot;not a DummValVar if it has no type?&quot;</span>);</div>
471
+ <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div>
472
+ <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;}</div>
473
+ <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; </div>
474
+ <div class="line"><a name="l00454"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a646fa58f61db6abd98d0a04af1fab88d"> 454</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a646fa58f61db6abd98d0a04af1fab88d">SVFIR2ItvExeState::initObjVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a> *objVar, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> varId)</div>
475
+ <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;{</div>
476
+ <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; </div>
477
+ <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">if</span> (objVar-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>())</div>
478
+ <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; {</div>
479
+ <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a> *obj = objVar-&gt;<a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>();</div>
480
+ <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">if</span> (obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a1a4ff4aaaf2573240a318e1b79328cd0">isConstDataOrConstGlobal</a>() || obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a7f828731597450f1d43b61413ab0e7bb">isConstantArray</a>() || obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a019a77516c403f1f3cc72917b810a41f">isConstantStruct</a>())</div>
481
+ <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; {</div>
482
+ <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantInt.html">SVFConstantInt</a> *consInt = SVFUtil::dyn_cast&lt;SVFConstantInt&gt;(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a2f70e9c830b18f25c56b530722f106c4">getValue</a>()))</div>
483
+ <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; {</div>
484
+ <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordtype">double</span> numeral = (double)consInt-&gt;getSExtValue();</div>
485
+ <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>[varId] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(numeral, numeral);</div>
486
+ <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; }</div>
487
+ <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFConstantFP.html">SVFConstantFP</a>* consFP = SVFUtil::dyn_cast&lt;SVFConstantFP&gt;(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a2f70e9c830b18f25c56b530722f106c4">getValue</a>()))</div>
488
+ <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>[varId] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(consFP-&gt;getFPValue(), consFP-&gt;getFPValue());</div>
489
+ <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFConstantNullPtr&gt;(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a2f70e9c830b18f25c56b530722f106c4">getValue</a>()))</div>
490
+ <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>[varId] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
491
+ <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFGlobalValue&gt;(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a2f70e9c830b18f25c56b530722f106c4">getValue</a>()))</div>
492
+ <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>.<a class="code" href="classSVF_1_1IntervalExeState.html#a056e0db56033ac4dc041e6d82d614dbd">getAddrs</a>(varId).<a class="code" href="classSVF_1_1AddressValue.html#a40c67147606ab95dd3318d0fe821d8c0">insert</a>(getVirtualMemAddress(varId));</div>
493
+ <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a7f828731597450f1d43b61413ab0e7bb">isConstantArray</a>() || obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a019a77516c403f1f3cc72917b810a41f">isConstantStruct</a>())</div>
494
+ <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>[varId] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
495
+ <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">else</span></div>
496
+ <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>[varId] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
497
+ <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div>
498
+ <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">else</span></div>
499
+ <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>.<a class="code" href="classSVF_1_1IntervalExeState.html#a056e0db56033ac4dc041e6d82d614dbd">getAddrs</a>(varId).<a class="code" href="classSVF_1_1AddressValue.html#a40c67147606ab95dd3318d0fe821d8c0">insert</a>(getVirtualMemAddress(varId));</div>
500
+ <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; }</div>
501
+ <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">else</span></div>
502
+ <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>.<a class="code" href="classSVF_1_1IntervalExeState.html#a056e0db56033ac4dc041e6d82d614dbd">getAddrs</a>(varId).<a class="code" href="classSVF_1_1AddressValue.html#a40c67147606ab95dd3318d0fe821d8c0">insert</a>(getVirtualMemAddress(varId));</div>
503
+ <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;}</div>
504
+ <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; </div>
505
+ <div class="line"><a name="l00486"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#af5d05c5316127cfe8d975a3a0a23798b"> 486</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#af5d05c5316127cfe8d975a3a0a23798b">SVFIR2ItvExeState::initSVFVar</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> varId)</div>
506
+ <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;{</div>
507
+ <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(varId) || _es.inVarToAddrsTable(varId)) <span class="keywordflow">return</span>;</div>
508
+ <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> *svfir = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>();</div>
509
+ <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *svfVar = svfir-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(varId);</div>
510
+ <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="comment">// write objvar into cache instead of exestate</span></div>
511
+ <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a> *objVar = dyn_cast&lt;ObjVar&gt;(svfVar))</div>
512
+ <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; {</div>
513
+ <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; initObjVar(objVar, varId);</div>
514
+ <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">return</span>;</div>
515
+ <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div>
516
+ <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a> *valVar = dyn_cast&lt;ValVar&gt;(svfVar))</div>
517
+ <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; {</div>
518
+ <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; initValVar(valVar, varId);</div>
519
+ <div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">return</span>;</div>
520
+ <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; }</div>
521
+ <div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">else</span></div>
522
+ <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; {</div>
523
+ <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; initValVar(valVar, varId);</div>
524
+ <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">return</span>;</div>
525
+ <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div>
526
+ <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;}</div>
527
+ <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; </div>
528
+ <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; </div>
529
+ <div class="line"><a name="l00510"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#af7f42ee51b03b1aaaee18f10eec0c2b9"> 510</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#af7f42ee51b03b1aaaee18f10eec0c2b9">SVFIR2ItvExeState::translateAddr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> *addr)</div>
530
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;{</div>
531
+ <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; initSVFVar(addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>());</div>
532
+ <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>()))</div>
533
+ <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; {</div>
534
+ <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="comment">// if addr RHS is integerType(i8 i32 etc), value should be limited.</span></div>
535
+ <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keywordflow">if</span> (addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28">getRHSVar</a>()-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ab6f95d3e7e099d75cfc9645ebc037047">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a4bc7962d519c1c0380b5a6a144c91c51">getKind</a>() == <a class="code" href="classSVF_1_1SVFType.html#a333e01a9c431c8f53bd2fc597bd5c40cae2025d3e9d7943027c74ae6bba3fff22">SVFType::SVFIntegerTy</a>)</div>
536
+ <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; {</div>
537
+ <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>[addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>()].meet_with(</div>
538
+ <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; getRangeLimitFromType(addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28">getRHSVar</a>()-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ab6f95d3e7e099d75cfc9645ebc037047">getType</a>()));</div>
539
+ <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div>
540
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>[addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>()] = <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>[addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>()];</div>
541
+ <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; </div>
542
+ <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; }</div>
543
+ <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>()))</div>
544
+ <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; {</div>
545
+ <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>.<a class="code" href="classSVF_1_1IntervalExeState.html#a056e0db56033ac4dc041e6d82d614dbd">getAddrs</a>(addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>()) = <a class="code" href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">IntervalExeState::globalES</a>.<a class="code" href="classSVF_1_1IntervalExeState.html#a056e0db56033ac4dc041e6d82d614dbd">getAddrs</a>(</div>
546
+ <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>());</div>
547
+ <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; }</div>
548
+ <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">else</span></div>
549
+ <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; {</div>
550
+ <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;not number or virtual addrs?&quot;</span>);</div>
551
+ <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; }</div>
552
+ <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;}</div>
553
+ <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; </div>
554
+ <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; </div>
555
+ <div class="line"><a name="l00536"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a449ee8f244120866037c7f6d2ee5fc13"> 536</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a449ee8f244120866037c7f6d2ee5fc13">SVFIR2ItvExeState::translateBinary</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> *binary)</div>
556
+ <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;{</div>
557
+ <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> op0 = binary-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(0);</div>
558
+ <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> op1 = binary-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(1);</div>
559
+ <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> res = binary-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div>
560
+ <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">if</span> (!inVarToValTable(op0)) _es[op0] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
561
+ <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">if</span> (!inVarToValTable(op1)) _es[op1] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
562
+ <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(op0) &amp;&amp; inVarToValTable(op1))</div>
563
+ <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; {</div>
564
+ <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> &amp;lhs = _es[op0], &amp;rhs = _es[op1];</div>
565
+ <div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> resVal;</div>
566
+ <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">switch</span> (binary-&gt;<a class="code" href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f">getOpcode</a>())</div>
567
+ <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; {</div>
568
+ <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a06926877b6c25931a409224497753862">BinaryOPStmt::Add</a>:</div>
569
+ <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a97c70ced12e0f1c5e3c3708b13727e8e">BinaryOPStmt::FAdd</a>:</div>
570
+ <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; resVal = (lhs + rhs);</div>
571
+ <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">break</span>;</div>
572
+ <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a758382a3b40e116175ca321fa4449d7f">BinaryOPStmt::Sub</a>:</div>
573
+ <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a05348a0e3f232ac552bb3ca56525c448">BinaryOPStmt::FSub</a>:</div>
574
+ <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; resVal = (lhs - rhs);</div>
575
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">break</span>;</div>
576
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a787e5771d6e70f3cbec3e2a33f5a4e8a">BinaryOPStmt::Mul</a>:</div>
577
+ <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a22a047e74227056ef3340628fae80198">BinaryOPStmt::FMul</a>:</div>
578
+ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; resVal = (lhs * rhs);</div>
579
+ <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">break</span>;</div>
580
+ <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a7a4ce4e97992d92ac044456e66821552">BinaryOPStmt::SDiv</a>:</div>
581
+ <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a553540425a63724c8b7f2fd0ca25b567">BinaryOPStmt::FDiv</a>:</div>
582
+ <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ad2f8b02de2c62175d3341be92a925250">BinaryOPStmt::UDiv</a>:</div>
583
+ <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; resVal = (lhs / rhs);</div>
584
+ <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">break</span>;</div>
585
+ <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ad2db0456c9943dd75aa091cb19040448">BinaryOPStmt::SRem</a>:</div>
586
+ <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6aafa66e75600b0098c4fa3304720cb7a6">BinaryOPStmt::FRem</a>:</div>
587
+ <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6af7dba9dda5edcee046ca81fb184858bc">BinaryOPStmt::URem</a>:</div>
588
+ <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; resVal = (lhs % rhs);</div>
589
+ <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">break</span>;</div>
590
+ <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ac89b793572db14a3c018122cf9fc79d6">BinaryOPStmt::Xor</a>:</div>
591
+ <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; resVal = (lhs ^ rhs);</div>
592
+ <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">break</span>;</div>
593
+ <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a0df258a85e260bcb9534ae1b650e1856">BinaryOPStmt::And</a>:</div>
594
+ <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; resVal = (lhs &amp; rhs);</div>
595
+ <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">break</span>;</div>
596
+ <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a90745e5effc8b7ef43c693d1e4fa7dbe">BinaryOPStmt::Or</a>:</div>
597
+ <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; resVal = (lhs | rhs);</div>
598
+ <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">break</span>;</div>
599
+ <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ac988853383e1588cf568687848e73576">BinaryOPStmt::AShr</a>:</div>
600
+ <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; resVal = (lhs &gt;&gt; rhs);</div>
601
+ <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">break</span>;</div>
602
+ <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a193780e40cee5123c543b6f739b3b46b">BinaryOPStmt::Shl</a>:</div>
603
+ <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; resVal = (lhs &lt;&lt; rhs);</div>
604
+ <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">break</span>;</div>
605
+ <div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a0bf768bb67e7f6f5ee6302bb6dd71da1">BinaryOPStmt::LShr</a>:</div>
606
+ <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; resVal = (lhs &gt;&gt; rhs);</div>
607
+ <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">break</span>;</div>
608
+ <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">default</span>:</div>
609
+ <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; {</div>
610
+ <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;undefined binary: &quot;</span>);</div>
611
+ <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; }</div>
612
+ <div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; }</div>
613
+ <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; _es[res] = resVal;</div>
614
+ <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; }</div>
615
+ <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;}</div>
616
+ <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; </div>
617
+ <div class="line"><a name="l00598"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#aac5cc8767eb750bf121f1897788dee24"> 598</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#aac5cc8767eb750bf121f1897788dee24">SVFIR2ItvExeState::translateCmp</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a> *cmp)</div>
618
+ <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;{</div>
619
+ <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> op0 = cmp-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(0);</div>
620
+ <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> op1 = cmp-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(1);</div>
621
+ <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> res = cmp-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div>
622
+ <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(op0) &amp;&amp; inVarToValTable(op1))</div>
623
+ <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; {</div>
624
+ <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> resVal;</div>
625
+ <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> &amp;lhs = _es[op0], &amp;rhs = _es[op1];</div>
626
+ <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keyword">auto</span> predicate = cmp-&gt;<a class="code" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632">getPredicate</a>();</div>
627
+ <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">switch</span> (predicate)</div>
628
+ <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; {</div>
629
+ <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acafa5a0ab60aff74a8d653c3f9fac04936">CmpStmt::ICMP_EQ</a>:</div>
630
+ <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca900bbc9c7824294c3a69c2cb006c27ee">CmpStmt::FCMP_OEQ</a>:</div>
631
+ <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca2793f23e72e3ff432bf193adf0f1b021">CmpStmt::FCMP_UEQ</a>:</div>
632
+ <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; resVal = (lhs == rhs);</div>
633
+ <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">break</span>;</div>
634
+ <div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca6eef834451ec753add639be49c51f03f">CmpStmt::ICMP_NE</a>:</div>
635
+ <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca2a3ce0c02931984d92d70356efc49193">CmpStmt::FCMP_ONE</a>:</div>
636
+ <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acad23a87cb6f2b3b2486a9a1277b491c09">CmpStmt::FCMP_UNE</a>:</div>
637
+ <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; resVal = (lhs != rhs);</div>
638
+ <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">break</span>;</div>
639
+ <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca8d59d9d7f39bb9c8b1e3dcebe0c5dc48">CmpStmt::ICMP_UGT</a>:</div>
640
+ <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca229d105d0841dc895811b29af62a91ee">CmpStmt::ICMP_SGT</a>:</div>
641
+ <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca6121702881c763c3c8cd3e30dedc7486">CmpStmt::FCMP_OGT</a>:</div>
642
+ <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca3873c41e060b95cb37eac587402b597c">CmpStmt::FCMP_UGT</a>:</div>
643
+ <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; resVal = (lhs &gt; rhs);</div>
644
+ <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">break</span>;</div>
645
+ <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca3428808abe683bfc6bb0267077cdb128">CmpStmt::ICMP_UGE</a>:</div>
646
+ <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acac5a87d53b1ad255cec18b3784cd81f80">CmpStmt::ICMP_SGE</a>:</div>
647
+ <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca5c4576ce636e323cbc3aa322480c5d2c">CmpStmt::FCMP_OGE</a>:</div>
648
+ <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acac0e2d9db5453eb8be7543fb4315003da">CmpStmt::FCMP_UGE</a>:</div>
649
+ <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; resVal = (lhs &gt;= rhs);</div>
650
+ <div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordflow">break</span>;</div>
651
+ <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca7833b647068883840c9bb438103e736d">CmpStmt::ICMP_ULT</a>:</div>
652
+ <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca88d74bf66465f4fdd221db0c11d62927">CmpStmt::ICMP_SLT</a>:</div>
653
+ <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca5e3cf3105b8f13da66719856579956fa">CmpStmt::FCMP_OLT</a>:</div>
654
+ <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaa6b852204a4d0758ebd632d8a88b966d">CmpStmt::FCMP_ULT</a>:</div>
655
+ <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; resVal = (lhs &lt; rhs);</div>
656
+ <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">break</span>;</div>
657
+ <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca56a20e408f9639234e4a11036764a38f">CmpStmt::ICMP_ULE</a>:</div>
658
+ <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaeeae52f8d195815edfb8c85037d246d6">CmpStmt::ICMP_SLE</a>:</div>
659
+ <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca9dd165c6da06811ffc8c2e53b30ab32d">CmpStmt::FCMP_OLE</a>:</div>
660
+ <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca8149cba2e9e265892f02bbd4a35fe6fb">CmpStmt::FCMP_ULE</a>:</div>
661
+ <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; resVal = (lhs &lt;= rhs);</div>
662
+ <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">break</span>;</div>
663
+ <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaa100cf99398f6118d332191380574c06">CmpStmt::FCMP_FALSE</a>:</div>
664
+ <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
665
+ <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">break</span>;</div>
666
+ <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca7234c9a242034a71d0bdcb54aeec6da7">CmpStmt::FCMP_TRUE</a>:</div>
667
+ <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 1);</div>
668
+ <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">break</span>;</div>
669
+ <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">default</span>:</div>
670
+ <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; {</div>
671
+ <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;undefined compare: &quot;</span>);</div>
672
+ <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; }</div>
673
+ <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; }</div>
674
+ <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; _es[res] = resVal;</div>
675
+ <div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; }</div>
676
+ <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(op0) &amp;&amp; inVarToAddrsTable(op1))</div>
677
+ <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; {</div>
678
+ <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> resVal;</div>
679
+ <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;lhs = getAddrs(op0), &amp;rhs = getAddrs(op1);</div>
680
+ <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; assert(!lhs.<a class="code" href="classSVF_1_1AddressValue.html#aa7291f4b74bb824fb38b8c383fa0b6a0">empty</a>() &amp;&amp; !rhs.empty() &amp;&amp; <span class="stringliteral">&quot;empty address?&quot;</span>);</div>
681
+ <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keyword">auto</span> predicate = cmp-&gt;<a class="code" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632">getPredicate</a>();</div>
682
+ <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">switch</span> (predicate)</div>
683
+ <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; {</div>
684
+ <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acafa5a0ab60aff74a8d653c3f9fac04936">CmpStmt::ICMP_EQ</a>:</div>
685
+ <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca900bbc9c7824294c3a69c2cb006c27ee">CmpStmt::FCMP_OEQ</a>:</div>
686
+ <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca2793f23e72e3ff432bf193adf0f1b021">CmpStmt::FCMP_UEQ</a>:</div>
687
+ <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; {</div>
688
+ <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.size() == 1)</div>
689
+ <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; {</div>
690
+ <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(lhs.<a class="code" href="classSVF_1_1AddressValue.html#a04456fe47889dd8f1b712255c9598fe9">equals</a>(rhs));</div>
691
+ <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; }</div>
692
+ <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">else</span></div>
693
+ <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; {</div>
694
+ <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#a269a73753a7b495eb08bb0c9c0a58dc0">hasIntersect</a>(rhs))</div>
695
+ <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; {</div>
696
+ <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
697
+ <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; }</div>
698
+ <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">else</span></div>
699
+ <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; {</div>
700
+ <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0);</div>
701
+ <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; }</div>
702
+ <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; }</div>
703
+ <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">break</span>;</div>
704
+ <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; }</div>
705
+ <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca6eef834451ec753add639be49c51f03f">CmpStmt::ICMP_NE</a>:</div>
706
+ <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca2a3ce0c02931984d92d70356efc49193">CmpStmt::FCMP_ONE</a>:</div>
707
+ <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acad23a87cb6f2b3b2486a9a1277b491c09">CmpStmt::FCMP_UNE</a>:</div>
708
+ <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; {</div>
709
+ <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.size() == 1)</div>
710
+ <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; {</div>
711
+ <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(!lhs.<a class="code" href="classSVF_1_1AddressValue.html#a04456fe47889dd8f1b712255c9598fe9">equals</a>(rhs));</div>
712
+ <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; }</div>
713
+ <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keywordflow">else</span></div>
714
+ <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; {</div>
715
+ <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#a269a73753a7b495eb08bb0c9c0a58dc0">hasIntersect</a>(rhs))</div>
716
+ <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; {</div>
717
+ <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
718
+ <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; }</div>
719
+ <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">else</span></div>
720
+ <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; {</div>
721
+ <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1);</div>
722
+ <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; }</div>
723
+ <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; }</div>
724
+ <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">break</span>;</div>
725
+ <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; }</div>
726
+ <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca8d59d9d7f39bb9c8b1e3dcebe0c5dc48">CmpStmt::ICMP_UGT</a>:</div>
727
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca229d105d0841dc895811b29af62a91ee">CmpStmt::ICMP_SGT</a>:</div>
728
+ <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca6121702881c763c3c8cd3e30dedc7486">CmpStmt::FCMP_OGT</a>:</div>
729
+ <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca3873c41e060b95cb37eac587402b597c">CmpStmt::FCMP_UGT</a>:</div>
730
+ <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; {</div>
731
+ <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.size() == 1)</div>
732
+ <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; {</div>
733
+ <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(*lhs.<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>() &gt; *rhs.begin());</div>
734
+ <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; }</div>
735
+ <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">else</span></div>
736
+ <div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; {</div>
737
+ <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
738
+ <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div>
739
+ <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">break</span>;</div>
740
+ <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; }</div>
741
+ <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca3428808abe683bfc6bb0267077cdb128">CmpStmt::ICMP_UGE</a>:</div>
742
+ <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acac5a87d53b1ad255cec18b3784cd81f80">CmpStmt::ICMP_SGE</a>:</div>
743
+ <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca5c4576ce636e323cbc3aa322480c5d2c">CmpStmt::FCMP_OGE</a>:</div>
744
+ <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acac0e2d9db5453eb8be7543fb4315003da">CmpStmt::FCMP_UGE</a>:</div>
745
+ <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; {</div>
746
+ <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.size() == 1)</div>
747
+ <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; {</div>
748
+ <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(*lhs.<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>() &gt;= *rhs.begin());</div>
749
+ <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; }</div>
750
+ <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">else</span></div>
751
+ <div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; {</div>
752
+ <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
753
+ <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; }</div>
754
+ <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">break</span>;</div>
755
+ <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; }</div>
756
+ <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca7833b647068883840c9bb438103e736d">CmpStmt::ICMP_ULT</a>:</div>
757
+ <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca88d74bf66465f4fdd221db0c11d62927">CmpStmt::ICMP_SLT</a>:</div>
758
+ <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca5e3cf3105b8f13da66719856579956fa">CmpStmt::FCMP_OLT</a>:</div>
759
+ <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaa6b852204a4d0758ebd632d8a88b966d">CmpStmt::FCMP_ULT</a>:</div>
760
+ <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; {</div>
761
+ <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.size() == 1)</div>
762
+ <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; {</div>
763
+ <div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(*lhs.<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>() &lt; *rhs.begin());</div>
764
+ <div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; }</div>
765
+ <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">else</span></div>
766
+ <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; {</div>
767
+ <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
768
+ <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; }</div>
769
+ <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keywordflow">break</span>;</div>
770
+ <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; }</div>
771
+ <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca56a20e408f9639234e4a11036764a38f">CmpStmt::ICMP_ULE</a>:</div>
772
+ <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaeeae52f8d195815edfb8c85037d246d6">CmpStmt::ICMP_SLE</a>:</div>
773
+ <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca9dd165c6da06811ffc8c2e53b30ab32d">CmpStmt::FCMP_OLE</a>:</div>
774
+ <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca8149cba2e9e265892f02bbd4a35fe6fb">CmpStmt::FCMP_ULE</a>:</div>
775
+ <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; {</div>
776
+ <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.size() == 1)</div>
777
+ <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; {</div>
778
+ <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(*lhs.<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>() &lt;= *rhs.begin());</div>
779
+ <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; }</div>
780
+ <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="keywordflow">else</span></div>
781
+ <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; {</div>
782
+ <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
783
+ <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; }</div>
784
784
  <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">break</span>;</div>
785
- <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">default</span>:</div>
786
- <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; {</div>
787
- <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;undefined compare: &quot;</span>);</div>
788
- <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; }</div>
789
- <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; }</div>
790
- <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; _es[res] = resVal;</div>
791
- <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; }</div>
792
- <div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;}</div>
793
- <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; </div>
794
- <div class="line"><a name="l00775"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a8f2a564370d9b9fb05e139c45eeaba68"> 775</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a8f2a564370d9b9fb05e139c45eeaba68">SVFIR2ItvExeState::translateLoad</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *load)</div>
795
- <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;{</div>
796
- <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> rhs = load-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div>
797
- <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lhs = load-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div>
798
- <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">if</span> (inVarToAddrsTable(rhs))</div>
799
- <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; {</div>
800
- <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;addrs = getAddrs(rhs);</div>
801
- <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; assert(!addrs.<a class="code" href="classSVF_1_1AddressValue.html#aa7291f4b74bb824fb38b8c383fa0b6a0">empty</a>());</div>
802
- <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> rhsItv = <a class="code" href="classSVF_1_1IntervalValue.html#aa027be2f9243ce4cae799b265b019443">IntervalValue::bottom</a>();</div>
803
- <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">AddressValue</a> rhsAddr;</div>
804
- <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordtype">bool</span> isVal = <span class="keyword">false</span>, isAddr = <span class="keyword">false</span>;</div>
805
- <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: addrs)</div>
806
- <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; {</div>
807
- <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> objId = getInternalID(addr);</div>
808
- <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">if</span> (inLocToValTable(objId))</div>
809
- <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; {</div>
810
- <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; rhsItv.<a class="code" href="classSVF_1_1IntervalValue.html#a3771eb932069dcad8212009efc411b99">join_with</a>(_es.load(addr));</div>
811
- <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; isVal = <span class="keyword">true</span>;</div>
812
- <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; }</div>
813
- <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inLocToAddrsTable(objId))</div>
814
- <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; {</div>
815
- <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; rhsAddr.<a class="code" href="classSVF_1_1AddressValue.html#acad5216bdc02a234d57abfe9ae72a12a">join_with</a>(_es.loadAddrs(addr));</div>
816
- <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; isAddr = <span class="keyword">true</span>;</div>
817
- <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; }</div>
818
- <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; }</div>
819
- <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="keywordflow">if</span> (isVal)</div>
820
- <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; {</div>
821
- <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="comment">// lhs var is an integer</span></div>
822
- <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; _es[lhs] = rhsItv;</div>
823
- <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; }</div>
824
- <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isAddr)</div>
825
- <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; {</div>
826
- <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="comment">// lhs var is an address</span></div>
827
- <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; _es.getAddrs(lhs) = rhsAddr;</div>
828
- <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; }</div>
829
- <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="keywordflow">else</span></div>
830
- <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; {</div>
831
- <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="comment">// rhs not initialized, e.g., absence of a store before load</span></div>
832
- <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; }</div>
833
- <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; }</div>
834
- <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;}</div>
835
- <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; </div>
836
- <div class="line"><a name="l00817"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#aed2e41879bae8389c49e69356b7aaac5"> 817</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#aed2e41879bae8389c49e69356b7aaac5">SVFIR2ItvExeState::translateStore</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *store)</div>
837
- <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160;{</div>
838
- <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> rhs = store-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div>
839
- <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lhs = store-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div>
840
- <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">if</span> (inVarToAddrsTable(lhs))</div>
841
- <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; {</div>
842
- <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(rhs))</div>
843
- <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; {</div>
844
- <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; assert(!getAddrs(lhs).empty());</div>
845
- <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;addrs = getAddrs(lhs);</div>
846
- <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: addrs)</div>
847
- <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; {</div>
848
- <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; _es.store(addr, _es[rhs]);</div>
849
- <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; }</div>
850
- <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; }</div>
851
- <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(rhs))</div>
852
- <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; {</div>
853
- <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; assert(!getAddrs(lhs).empty());</div>
854
- <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;addrs = getAddrs(lhs);</div>
855
- <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: addrs)</div>
856
- <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; {</div>
857
- <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; assert(!getAddrs(rhs).empty());</div>
858
- <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; _es.storeAddrs(addr, getAddrs(rhs));</div>
859
- <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; }</div>
860
- <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; </div>
861
- <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; }</div>
862
- <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; }</div>
863
- <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160;}</div>
864
- <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; </div>
865
- <div class="line"><a name="l00846"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#afcf2f81101f1b9580d82b5c2efb83999"> 846</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#afcf2f81101f1b9580d82b5c2efb83999">SVFIR2ItvExeState::translateCopy</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>)</div>
866
- <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160;{</div>
867
- <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lhs = <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getLHSVarID();</div>
868
- <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> rhs = <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVarID();</div>
869
- <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()-&gt;isBlkPtr(lhs))</div>
870
- <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; {</div>
871
- <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; _es[lhs] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
872
- <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; }</div>
873
- <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">else</span></div>
874
- <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; {</div>
875
- <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(rhs))</div>
876
- <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; {</div>
877
- <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; _es[lhs] = _es[rhs];</div>
878
- <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="comment">// if copy LHS is integerType(i8 i32 etc), value should be limited.</span></div>
879
- <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="comment">// this branch can handle bitcast from higher bits integer to</span></div>
880
- <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="comment">// lower bits integer. e.g. bitcast i32 to i8</span></div>
881
- <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getLHSVar()-&gt;getType()-&gt;getKind() == <a class="code" href="classSVF_1_1SVFType.html#a333e01a9c431c8f53bd2fc597bd5c40cae2025d3e9d7943027c74ae6bba3fff22">SVFType::SVFIntegerTy</a>)</div>
882
- <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; {</div>
883
- <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; _es[lhs].meet_with(</div>
884
- <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; getRangeLimitFromType(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getLHSVar()-&gt;getType()));</div>
885
- <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; }</div>
886
- <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; }</div>
887
- <div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(rhs))</div>
888
- <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; {</div>
889
- <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; assert(!getAddrs(rhs).empty());</div>
890
- <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; _es.getAddrs(lhs) = getAddrs(rhs);</div>
891
- <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; }</div>
892
- <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; }</div>
893
- <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160;}</div>
894
- <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; </div>
895
- <div class="line"><a name="l00876"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#aa274b5b4e18c28ec8035ca1b073aacfc"> 876</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#aa274b5b4e18c28ec8035ca1b073aacfc">SVFIR2ItvExeState::translateGep</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> *gep)</div>
896
- <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160;{</div>
897
- <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> rhs = gep-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div>
898
- <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lhs = gep-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div>
899
- <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="keywordflow">if</span> (!inVarToAddrsTable(rhs)) <span class="keywordflow">return</span>;</div>
900
- <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; assert(!getAddrs(rhs).empty());</div>
901
- <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;rhsVal = getAddrs(rhs);</div>
902
- <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keywordflow">if</span> (rhsVal.<a class="code" href="classSVF_1_1AddressValue.html#aa7291f4b74bb824fb38b8c383fa0b6a0">empty</a>()) <span class="keywordflow">return</span>;</div>
903
- <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> offsetPair = getItvOfFlattenedElemIndex(gep);</div>
904
- <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">if</span> (!isVirtualMemAddress(*rhsVal.<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>()))</div>
905
- <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">return</span>;</div>
906
- <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordflow">else</span></div>
907
- <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; {</div>
908
- <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> gepAddrs;</div>
909
- <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> lb = offsetPair.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() &lt; <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>()?</div>
910
- <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; offsetPair.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>(): <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
911
- <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> ub = offsetPair.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() &lt; <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>()?</div>
912
- <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; offsetPair.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>(): <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
913
- <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> i = lb; i &lt;= ub; i++)</div>
914
- <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; gepAddrs.<a class="code" href="classSVF_1_1AddressValue.html#acad5216bdc02a234d57abfe9ae72a12a">join_with</a>(getGepObjAddress(rhs, i));</div>
915
- <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="keywordflow">if</span>(gepAddrs.<a class="code" href="classSVF_1_1AddressValue.html#aa7291f4b74bb824fb38b8c383fa0b6a0">empty</a>()) <span class="keywordflow">return</span>;</div>
916
- <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; _es.getAddrs(lhs) = gepAddrs;</div>
917
- <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <span class="keywordflow">return</span>;</div>
918
- <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; }</div>
919
- <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;}</div>
920
- <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; </div>
921
- <div class="line"><a name="l00902"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a604126e59364cb56b44a88cae5afbfb8"> 902</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a604126e59364cb56b44a88cae5afbfb8">SVFIR2ItvExeState::translateSelect</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a> *select)</div>
922
- <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160;{</div>
923
- <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> res = select-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div>
924
- <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tval = select-&gt;<a class="code" href="classSVF_1_1SelectStmt.html#a537c03b08444da34c26b9e989bb0e568">getTrueValue</a>()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div>
925
- <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fval = select-&gt;<a class="code" href="classSVF_1_1SelectStmt.html#af64d7855e352a0afb5d2e98a8622a4ad">getFalseValue</a>()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div>
926
- <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> cond = select-&gt;<a class="code" href="classSVF_1_1SelectStmt.html#ad4c3e9529176478bb726279a76050e8c">getCondition</a>()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div>
927
- <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(tval) &amp;&amp; inVarToValTable(fval) &amp;&amp; inVarToValTable(cond))</div>
928
- <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; {</div>
929
- <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <span class="keywordflow">if</span> (_es[cond].is_numeral())</div>
930
- <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; {</div>
931
- <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; _es[res] = _es[cond].is_zero() ? _es[fval] : _es[tval];</div>
932
- <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; }</div>
933
- <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">else</span></div>
934
- <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; {</div>
935
- <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; _es[res] = _es[cond];</div>
936
- <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; }</div>
937
- <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; }</div>
938
- <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(tval) &amp;&amp; inVarToAddrsTable(fval) &amp;&amp; inVarToValTable(cond))</div>
939
- <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; {</div>
940
- <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keywordflow">if</span> (_es[cond].is_numeral())</div>
785
+ <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; }</div>
786
+ <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaa100cf99398f6118d332191380574c06">CmpStmt::FCMP_FALSE</a>:</div>
787
+ <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
788
+ <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="keywordflow">break</span>;</div>
789
+ <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca7234c9a242034a71d0bdcb54aeec6da7">CmpStmt::FCMP_TRUE</a>:</div>
790
+ <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 1);</div>
791
+ <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">break</span>;</div>
792
+ <div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">default</span>:</div>
793
+ <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; {</div>
794
+ <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;undefined compare: &quot;</span>);</div>
795
+ <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; }</div>
796
+ <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; }</div>
797
+ <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; _es[res] = resVal;</div>
798
+ <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; }</div>
799
+ <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160;}</div>
800
+ <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; </div>
801
+ <div class="line"><a name="l00782"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a8f2a564370d9b9fb05e139c45eeaba68"> 782</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a8f2a564370d9b9fb05e139c45eeaba68">SVFIR2ItvExeState::translateLoad</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *load)</div>
802
+ <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160;{</div>
803
+ <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> rhs = load-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div>
804
+ <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lhs = load-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div>
805
+ <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">if</span> (inVarToAddrsTable(rhs))</div>
806
+ <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; {</div>
807
+ <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;addrs = getAddrs(rhs);</div>
808
+ <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; assert(!addrs.<a class="code" href="classSVF_1_1AddressValue.html#aa7291f4b74bb824fb38b8c383fa0b6a0">empty</a>());</div>
809
+ <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> rhsItv = <a class="code" href="classSVF_1_1IntervalValue.html#aa027be2f9243ce4cae799b265b019443">IntervalValue::bottom</a>();</div>
810
+ <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">AddressValue</a> rhsAddr;</div>
811
+ <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <span class="keywordtype">bool</span> isVal = <span class="keyword">false</span>, isAddr = <span class="keyword">false</span>;</div>
812
+ <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: addrs)</div>
813
+ <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; {</div>
814
+ <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> objId = getInternalID(addr);</div>
815
+ <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">if</span> (inLocToValTable(objId))</div>
816
+ <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; {</div>
817
+ <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; rhsItv.<a class="code" href="classSVF_1_1IntervalValue.html#a3771eb932069dcad8212009efc411b99">join_with</a>(_es.load(addr));</div>
818
+ <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; isVal = <span class="keyword">true</span>;</div>
819
+ <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; }</div>
820
+ <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inLocToAddrsTable(objId))</div>
821
+ <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; {</div>
822
+ <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; rhsAddr.<a class="code" href="classSVF_1_1AddressValue.html#acad5216bdc02a234d57abfe9ae72a12a">join_with</a>(_es.loadAddrs(addr));</div>
823
+ <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; isAddr = <span class="keyword">true</span>;</div>
824
+ <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; }</div>
825
+ <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; }</div>
826
+ <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="keywordflow">if</span> (isVal)</div>
827
+ <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; {</div>
828
+ <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="comment">// lhs var is an integer</span></div>
829
+ <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; _es[lhs] = rhsItv;</div>
830
+ <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; }</div>
831
+ <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isAddr)</div>
832
+ <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; {</div>
833
+ <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="comment">// lhs var is an address</span></div>
834
+ <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; _es.getAddrs(lhs) = rhsAddr;</div>
835
+ <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; }</div>
836
+ <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">else</span></div>
837
+ <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; {</div>
838
+ <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="comment">// rhs not initialized, e.g., absence of a store before load</span></div>
839
+ <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; }</div>
840
+ <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; }</div>
841
+ <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;}</div>
842
+ <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; </div>
843
+ <div class="line"><a name="l00824"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#aed2e41879bae8389c49e69356b7aaac5"> 824</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#aed2e41879bae8389c49e69356b7aaac5">SVFIR2ItvExeState::translateStore</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *store)</div>
844
+ <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160;{</div>
845
+ <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> rhs = store-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div>
846
+ <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lhs = store-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div>
847
+ <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keywordflow">if</span> (inVarToAddrsTable(lhs))</div>
848
+ <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; {</div>
849
+ <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(rhs))</div>
850
+ <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; {</div>
851
+ <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; assert(!getAddrs(lhs).empty());</div>
852
+ <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;addrs = getAddrs(lhs);</div>
853
+ <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: addrs)</div>
854
+ <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; {</div>
855
+ <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; _es.store(addr, _es[rhs]);</div>
856
+ <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; }</div>
857
+ <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; }</div>
858
+ <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(rhs))</div>
859
+ <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; {</div>
860
+ <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; assert(!getAddrs(lhs).empty());</div>
861
+ <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;addrs = getAddrs(lhs);</div>
862
+ <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: addrs)</div>
863
+ <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; {</div>
864
+ <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; assert(!getAddrs(rhs).empty());</div>
865
+ <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; _es.storeAddrs(addr, getAddrs(rhs));</div>
866
+ <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; }</div>
867
+ <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; </div>
868
+ <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; }</div>
869
+ <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; }</div>
870
+ <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160;}</div>
871
+ <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; </div>
872
+ <div class="line"><a name="l00853"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#afcf2f81101f1b9580d82b5c2efb83999"> 853</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#afcf2f81101f1b9580d82b5c2efb83999">SVFIR2ItvExeState::translateCopy</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>)</div>
873
+ <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;{</div>
874
+ <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lhs = <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getLHSVarID();</div>
875
+ <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> rhs = <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVarID();</div>
876
+ <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()-&gt;isBlkPtr(lhs))</div>
877
+ <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; {</div>
878
+ <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; _es[lhs] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
879
+ <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; }</div>
880
+ <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="keywordflow">else</span></div>
881
+ <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; {</div>
882
+ <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(rhs))</div>
883
+ <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; {</div>
884
+ <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; _es[lhs] = _es[rhs];</div>
885
+ <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <span class="comment">// if copy LHS is integerType(i8 i32 etc), value should be limited.</span></div>
886
+ <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <span class="comment">// this branch can handle bitcast from higher bits integer to</span></div>
887
+ <div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="comment">// lower bits integer. e.g. bitcast i32 to i8</span></div>
888
+ <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getLHSVar()-&gt;getType()-&gt;getKind() == <a class="code" href="classSVF_1_1SVFType.html#a333e01a9c431c8f53bd2fc597bd5c40cae2025d3e9d7943027c74ae6bba3fff22">SVFType::SVFIntegerTy</a>)</div>
889
+ <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; {</div>
890
+ <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; _es[lhs].meet_with(</div>
891
+ <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; getRangeLimitFromType(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getLHSVar()-&gt;getType()));</div>
892
+ <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; }</div>
893
+ <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; }</div>
894
+ <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(rhs))</div>
895
+ <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; {</div>
896
+ <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; assert(!getAddrs(rhs).empty());</div>
897
+ <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; _es.getAddrs(lhs) = getAddrs(rhs);</div>
898
+ <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; }</div>
899
+ <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; }</div>
900
+ <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160;}</div>
901
+ <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; </div>
902
+ <div class="line"><a name="l00883"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#aa274b5b4e18c28ec8035ca1b073aacfc"> 883</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#aa274b5b4e18c28ec8035ca1b073aacfc">SVFIR2ItvExeState::translateGep</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> *gep)</div>
903
+ <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;{</div>
904
+ <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> rhs = gep-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div>
905
+ <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lhs = gep-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div>
906
+ <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordflow">if</span> (!inVarToAddrsTable(rhs)) <span class="keywordflow">return</span>;</div>
907
+ <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; assert(!getAddrs(rhs).empty());</div>
908
+ <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;rhsVal = getAddrs(rhs);</div>
909
+ <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keywordflow">if</span> (rhsVal.<a class="code" href="classSVF_1_1AddressValue.html#aa7291f4b74bb824fb38b8c383fa0b6a0">empty</a>()) <span class="keywordflow">return</span>;</div>
910
+ <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> offsetPair = getItvOfFlattenedElemIndex(gep);</div>
911
+ <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keywordflow">if</span> (!isVirtualMemAddress(*rhsVal.<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>()))</div>
912
+ <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordflow">return</span>;</div>
913
+ <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">else</span></div>
914
+ <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; {</div>
915
+ <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> gepAddrs;</div>
916
+ <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> lb = offsetPair.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() &lt; <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>()?</div>
917
+ <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; offsetPair.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>(): <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
918
+ <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> ub = offsetPair.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>() &lt; <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>()?</div>
919
+ <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; offsetPair.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a4181e5e15e10304ea524e5f8b2a3f576">getNumeral</a>(): <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
920
+ <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> i = lb; i &lt;= ub; i++)</div>
921
+ <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; gepAddrs.<a class="code" href="classSVF_1_1AddressValue.html#acad5216bdc02a234d57abfe9ae72a12a">join_with</a>(getGepObjAddress(rhs, i));</div>
922
+ <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="keywordflow">if</span>(gepAddrs.<a class="code" href="classSVF_1_1AddressValue.html#aa7291f4b74bb824fb38b8c383fa0b6a0">empty</a>()) <span class="keywordflow">return</span>;</div>
923
+ <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; _es.getAddrs(lhs) = gepAddrs;</div>
924
+ <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keywordflow">return</span>;</div>
925
+ <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; }</div>
926
+ <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;}</div>
927
+ <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; </div>
928
+ <div class="line"><a name="l00909"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a604126e59364cb56b44a88cae5afbfb8"> 909</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a604126e59364cb56b44a88cae5afbfb8">SVFIR2ItvExeState::translateSelect</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a> *select)</div>
929
+ <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160;{</div>
930
+ <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> res = select-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div>
931
+ <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tval = select-&gt;<a class="code" href="classSVF_1_1SelectStmt.html#a537c03b08444da34c26b9e989bb0e568">getTrueValue</a>()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div>
932
+ <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fval = select-&gt;<a class="code" href="classSVF_1_1SelectStmt.html#af64d7855e352a0afb5d2e98a8622a4ad">getFalseValue</a>()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div>
933
+ <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> cond = select-&gt;<a class="code" href="classSVF_1_1SelectStmt.html#ad4c3e9529176478bb726279a76050e8c">getCondition</a>()-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div>
934
+ <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(tval) &amp;&amp; inVarToValTable(fval) &amp;&amp; inVarToValTable(cond))</div>
935
+ <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; {</div>
936
+ <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="keywordflow">if</span> (_es[cond].is_numeral())</div>
937
+ <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; {</div>
938
+ <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; _es[res] = _es[cond].is_zero() ? _es[fval] : _es[tval];</div>
939
+ <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; }</div>
940
+ <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keywordflow">else</span></div>
941
941
  <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; {</div>
942
- <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; assert(!getAddrs(fval).empty());</div>
943
- <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; assert(!getAddrs(tval).empty());</div>
944
- <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; _es.getAddrs(res) = _es[cond].is_zero() ? getAddrs(fval) : getAddrs(tval);</div>
945
- <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; }</div>
946
- <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; }</div>
947
- <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160;}</div>
948
- <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; </div>
949
- <div class="line"><a name="l00930"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#ae00e5398cbeb9aa1cfc464da4250a91e"> 930</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#ae00e5398cbeb9aa1cfc464da4250a91e">SVFIR2ItvExeState::translatePhi</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> *phi)</div>
950
- <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160;{</div>
951
- <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> res = phi-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div>
952
- <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> rhsItv = <a class="code" href="classSVF_1_1IntervalValue.html#aa027be2f9243ce4cae799b265b019443">IntervalValue::bottom</a>();</div>
953
- <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">AddressValue</a> rhsAddr;</div>
954
- <div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <span class="keywordtype">bool</span> isVal = <span class="keyword">false</span>, isAddr = <span class="keyword">false</span>;</div>
955
- <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; phi-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#af300571886b7aa2d84b0a70851c99bc3">getOpVarNum</a>(); i++)</div>
956
- <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; {</div>
957
- <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> curId = phi-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(i);</div>
958
- <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(curId))</div>
959
- <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; {</div>
960
- <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; rhsItv.<a class="code" href="classSVF_1_1IntervalValue.html#a3771eb932069dcad8212009efc411b99">join_with</a>(_es[curId]);</div>
961
- <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; isVal = <span class="keyword">true</span>;</div>
962
- <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; }</div>
963
- <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(curId))</div>
964
- <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; {</div>
965
- <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; assert(!getAddrs(curId).empty());</div>
966
- <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; rhsAddr.<a class="code" href="classSVF_1_1AddressValue.html#acad5216bdc02a234d57abfe9ae72a12a">join_with</a>(getAddrs(curId));</div>
967
- <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; isAddr = <span class="keyword">true</span>;</div>
968
- <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; }</div>
969
- <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; }</div>
970
- <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keywordflow">if</span> (isVal)</div>
971
- <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; {</div>
972
- <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="comment">// res var is an integer</span></div>
973
- <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; _es[res] = rhsItv;</div>
974
- <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; }</div>
975
- <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isAddr)</div>
976
- <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; {</div>
977
- <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="comment">// res var is an address</span></div>
978
- <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; _es.getAddrs(res) = rhsAddr;</div>
979
- <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; }</div>
980
- <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160;}</div>
981
- <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; </div>
982
- <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; </div>
983
- <div class="line"><a name="l00964"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#adb82778157e0f5e7a2ea4d803bcd07ad"> 964</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#adb82778157e0f5e7a2ea4d803bcd07ad">SVFIR2ItvExeState::translateCall</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> *callPE)</div>
984
- <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160;{</div>
985
- <div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> lhs = callPE-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div>
986
- <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rhs = callPE-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div>
987
- <div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(rhs))</div>
988
- <div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; {</div>
989
- <div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; _es[lhs] = _es[rhs];</div>
990
- <div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; }</div>
991
- <div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(rhs))</div>
992
- <div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; {</div>
993
- <div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; assert(!getAddrs(rhs).empty());</div>
994
- <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; _es.getAddrs(lhs) = getAddrs(rhs);</div>
995
- <div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; }</div>
996
- <div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160;}</div>
997
- <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; </div>
998
- <div class="line"><a name="l00979"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a31e299f91eed29d1a8db3b884d57d1dc"> 979</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a31e299f91eed29d1a8db3b884d57d1dc">SVFIR2ItvExeState::translateRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> *retPE)</div>
999
- <div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160;{</div>
1000
- <div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> lhs = retPE-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div>
1001
- <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rhs = retPE-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div>
1002
- <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(rhs))</div>
1003
- <div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; {</div>
1004
- <div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; _es[lhs] = _es[rhs];</div>
1005
- <div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; }</div>
1006
- <div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(rhs))</div>
1007
- <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; {</div>
1008
- <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; assert(!getAddrs(rhs).empty());</div>
1009
- <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; _es.getAddrs(lhs) = getAddrs(rhs);</div>
1010
- <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; }</div>
1011
- <div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;}</div>
942
+ <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; _es[res] = _es[cond];</div>
943
+ <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; }</div>
944
+ <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; }</div>
945
+ <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(tval) &amp;&amp; inVarToAddrsTable(fval) &amp;&amp; inVarToValTable(cond))</div>
946
+ <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; {</div>
947
+ <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keywordflow">if</span> (_es[cond].is_numeral())</div>
948
+ <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; {</div>
949
+ <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; assert(!getAddrs(fval).empty());</div>
950
+ <div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; assert(!getAddrs(tval).empty());</div>
951
+ <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; _es.getAddrs(res) = _es[cond].is_zero() ? getAddrs(fval) : getAddrs(tval);</div>
952
+ <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; }</div>
953
+ <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; }</div>
954
+ <div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160;}</div>
955
+ <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; </div>
956
+ <div class="line"><a name="l00937"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#ae00e5398cbeb9aa1cfc464da4250a91e"> 937</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#ae00e5398cbeb9aa1cfc464da4250a91e">SVFIR2ItvExeState::translatePhi</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> *phi)</div>
957
+ <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160;{</div>
958
+ <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> res = phi-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div>
959
+ <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> rhsItv = <a class="code" href="classSVF_1_1IntervalValue.html#aa027be2f9243ce4cae799b265b019443">IntervalValue::bottom</a>();</div>
960
+ <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">AddressValue</a> rhsAddr;</div>
961
+ <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="keywordtype">bool</span> isVal = <span class="keyword">false</span>, isAddr = <span class="keyword">false</span>;</div>
962
+ <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; phi-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#af300571886b7aa2d84b0a70851c99bc3">getOpVarNum</a>(); i++)</div>
963
+ <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; {</div>
964
+ <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> curId = phi-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(i);</div>
965
+ <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(curId))</div>
966
+ <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; {</div>
967
+ <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; rhsItv.<a class="code" href="classSVF_1_1IntervalValue.html#a3771eb932069dcad8212009efc411b99">join_with</a>(_es[curId]);</div>
968
+ <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; isVal = <span class="keyword">true</span>;</div>
969
+ <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; }</div>
970
+ <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(curId))</div>
971
+ <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; {</div>
972
+ <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; assert(!getAddrs(curId).empty());</div>
973
+ <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; rhsAddr.<a class="code" href="classSVF_1_1AddressValue.html#acad5216bdc02a234d57abfe9ae72a12a">join_with</a>(getAddrs(curId));</div>
974
+ <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; isAddr = <span class="keyword">true</span>;</div>
975
+ <div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; }</div>
976
+ <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; }</div>
977
+ <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordflow">if</span> (isVal)</div>
978
+ <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; {</div>
979
+ <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="comment">// res var is an integer</span></div>
980
+ <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; _es[res] = rhsItv;</div>
981
+ <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; }</div>
982
+ <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isAddr)</div>
983
+ <div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; {</div>
984
+ <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="comment">// res var is an address</span></div>
985
+ <div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; _es.getAddrs(res) = rhsAddr;</div>
986
+ <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; }</div>
987
+ <div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160;}</div>
988
+ <div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; </div>
989
+ <div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; </div>
990
+ <div class="line"><a name="l00971"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#adb82778157e0f5e7a2ea4d803bcd07ad"> 971</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#adb82778157e0f5e7a2ea4d803bcd07ad">SVFIR2ItvExeState::translateCall</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> *callPE)</div>
991
+ <div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160;{</div>
992
+ <div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> lhs = callPE-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div>
993
+ <div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rhs = callPE-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div>
994
+ <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(rhs))</div>
995
+ <div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; {</div>
996
+ <div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; _es[lhs] = _es[rhs];</div>
997
+ <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; }</div>
998
+ <div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(rhs))</div>
999
+ <div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; {</div>
1000
+ <div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; assert(!getAddrs(rhs).empty());</div>
1001
+ <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; _es.getAddrs(lhs) = getAddrs(rhs);</div>
1002
+ <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; }</div>
1003
+ <div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;}</div>
1004
+ <div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; </div>
1005
+ <div class="line"><a name="l00986"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a31e299f91eed29d1a8db3b884d57d1dc"> 986</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a31e299f91eed29d1a8db3b884d57d1dc">SVFIR2ItvExeState::translateRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> *retPE)</div>
1006
+ <div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160;{</div>
1007
+ <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> lhs = retPE-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div>
1008
+ <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rhs = retPE-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div>
1009
+ <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(rhs))</div>
1010
+ <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; {</div>
1011
+ <div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; _es[lhs] = _es[rhs];</div>
1012
+ <div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; }</div>
1013
+ <div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(rhs))</div>
1014
+ <div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; {</div>
1015
+ <div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; assert(!getAddrs(rhs).empty());</div>
1016
+ <div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; _es.getAddrs(lhs) = getAddrs(rhs);</div>
1017
+ <div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; }</div>
1018
+ <div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160;}</div>
1012
1019
  </div><!-- fragment --></div><!-- contents -->
1013
1020
  <div class="ttc" id="aclassSVF_1_1AccessPath_html_a1f279344b4061838d7b3498631bc907c"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a1f279344b4061838d7b3498631bc907c">SVF::AccessPath::getStructFieldOffset</a></div><div class="ttdeci">u32_t getStructFieldOffset(const SVFVar *idxOperandVar, const SVFStructType *idxOperandType) const</div><div class="ttdoc">Return byte offset from the beginning of the structure to the field where it is located for struct ty...</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00164">AccessPath.cpp:164</a></div></div>
1014
1021
  <div class="ttc" id="anamespaceSVF_html_a5c4820681ef340339ddded756eb82ae1"><div class="ttname"><a href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">SVF::APOffset</a></div><div class="ttdeci">s64_t APOffset</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00061">SVFType.h:61</a></div></div>
1015
1022
  <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338acad23a87cb6f2b3b2486a9a1277b491c09"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acad23a87cb6f2b3b2486a9a1277b491c09">SVF::CmpStmt::FCMP_UNE</a></div><div class="ttdeci">@ FCMP_UNE</div><div class="ttdoc">1 1 1 0 True if unordered or not equal</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00903">SVFStatements.h:903</a></div></div>
1016
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_adb82778157e0f5e7a2ea4d803bcd07ad"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#adb82778157e0f5e7a2ea4d803bcd07ad">SVF::SVFIR2ItvExeState::translateCall</a></div><div class="ttdeci">void translateCall(const CallPE *callPE)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00964">SVFIR2ItvExeState.cpp:964</a></div></div>
1023
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_adb82778157e0f5e7a2ea4d803bcd07ad"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#adb82778157e0f5e7a2ea4d803bcd07ad">SVF::SVFIR2ItvExeState::translateCall</a></div><div class="ttdeci">void translateCall(const CallPE *callPE)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00971">SVFIR2ItvExeState.cpp:971</a></div></div>
1017
1024
  <div class="ttc" id="aclassSVF_1_1SVFType_html_a333e01a9c431c8f53bd2fc597bd5c40cac8c846ff3208d07a4a39c7a21433c6a5"><div class="ttname"><a href="classSVF_1_1SVFType.html#a333e01a9c431c8f53bd2fc597bd5c40cac8c846ff3208d07a4a39c7a21433c6a5">SVF::SVFType::SVFArrayTy</a></div><div class="ttdeci">@ SVFArrayTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00257">SVFType.h:257</a></div></div>
1018
1025
  <div class="ttc" id="aclassSVF_1_1CopyStmt_html"><div class="ttname"><a href="classSVF_1_1CopyStmt.html">SVF::CopyStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00351">SVFStatements.h:351</a></div></div>
1019
1026
  <div class="ttc" id="aclassSVF_1_1SVFType_html_a4bc7962d519c1c0380b5a6a144c91c51"><div class="ttname"><a href="classSVF_1_1SVFType.html#a4bc7962d519c1c0380b5a6a144c91c51">SVF::SVFType::getKind</a></div><div class="ttdeci">GNodeK getKind() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00281">SVFType.h:281</a></div></div>
@@ -1030,7 +1037,7 @@ $(function() {
1030
1037
  <div class="ttc" id="aclassSVF_1_1PhiStmt_html"><div class="ttname"><a href="classSVF_1_1PhiStmt.html">SVF::PhiStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00748">SVFStatements.h:748</a></div></div>
1031
1038
  <div class="ttc" id="aclassSVF_1_1SelectStmt_html_af64d7855e352a0afb5d2e98a8622a4ad"><div class="ttname"><a href="classSVF_1_1SelectStmt.html#af64d7855e352a0afb5d2e98a8622a4ad">SVF::SelectStmt::getFalseValue</a></div><div class="ttdeci">const SVFVar * getFalseValue() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00862">SVFStatements.h:862</a></div></div>
1032
1039
  <div class="ttc" id="aclassSVF_1_1MultiOpndStmt_html_a5c6efcc023e90ef2e618586091958c59"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">SVF::MultiOpndStmt::getOpVarID</a></div><div class="ttdeci">NodeID getOpVarID(u32_t pos) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00284">SVFStatements.cpp:284</a></div></div>
1033
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a604126e59364cb56b44a88cae5afbfb8"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a604126e59364cb56b44a88cae5afbfb8">SVF::SVFIR2ItvExeState::translateSelect</a></div><div class="ttdeci">void translateSelect(const SelectStmt *select)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00902">SVFIR2ItvExeState.cpp:902</a></div></div>
1040
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a604126e59364cb56b44a88cae5afbfb8"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a604126e59364cb56b44a88cae5afbfb8">SVF::SVFIR2ItvExeState::translateSelect</a></div><div class="ttdeci">void translateSelect(const SelectStmt *select)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00909">SVFIR2ItvExeState.cpp:909</a></div></div>
1034
1041
  <div class="ttc" id="aclassSVF_1_1AddressValue_html_acad5216bdc02a234d57abfe9ae72a12a"><div class="ttname"><a href="classSVF_1_1AddressValue.html#acad5216bdc02a234d57abfe9ae72a12a">SVF::AddressValue::join_with</a></div><div class="ttdeci">bool join_with(const AddressValue &amp;other)</div><div class="ttdoc">Current AddressValue joins with another AddressValue.</div><div class="ttdef"><b>Definition:</b> <a href="AddressValue_8h_source.html#l00139">AddressValue.h:139</a></div></div>
1035
1042
  <div class="ttc" id="aclassSVF_1_1AddressValue_html_ae93859318bf4f618b4cf681988a870ce"><div class="ttname"><a href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">SVF::AddressValue::size</a></div><div class="ttdeci">u32_t size() const</div><div class="ttdef"><b>Definition:</b> <a href="AddressValue_8h_source.html#l00118">AddressValue.h:118</a></div></div>
1036
1043
  <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338acaa100cf99398f6118d332191380574c06"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaa100cf99398f6118d332191380574c06">SVF::CmpStmt::FCMP_FALSE</a></div><div class="ttdeci">@ FCMP_FALSE</div><div class="ttdoc">0 0 0 0 Always false (always folded)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00889">SVFStatements.h:889</a></div></div>
@@ -1044,19 +1051,19 @@ $(function() {
1044
1051
  <div class="ttc" id="aSVFIR2ItvExeState_8h_html"><div class="ttname"><a href="SVFIR2ItvExeState_8h.html">SVFIR2ItvExeState.h</a></div></div>
1045
1052
  <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_a2f647224242dd87099104e0fdc994de6a758382a3b40e116175ca321fa4449d7f"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a758382a3b40e116175ca321fa4449d7f">SVF::BinaryOPStmt::Sub</a></div><div class="ttdeci">@ Sub</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00975">SVFStatements.h:975</a></div></div>
1046
1053
  <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338aca3428808abe683bfc6bb0267077cdb128"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca3428808abe683bfc6bb0267077cdb128">SVF::CmpStmt::ICMP_UGE</a></div><div class="ttdeci">@ ICMP_UGE</div><div class="ttdoc">unsigned greater or equal</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00911">SVFStatements.h:911</a></div></div>
1047
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_af7f42ee51b03b1aaaee18f10eec0c2b9"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#af7f42ee51b03b1aaaee18f10eec0c2b9">SVF::SVFIR2ItvExeState::translateAddr</a></div><div class="ttdeci">void translateAddr(const AddrStmt *addr)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00503">SVFIR2ItvExeState.cpp:503</a></div></div>
1054
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_af7f42ee51b03b1aaaee18f10eec0c2b9"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#af7f42ee51b03b1aaaee18f10eec0c2b9">SVF::SVFIR2ItvExeState::translateAddr</a></div><div class="ttdeci">void translateAddr(const AddrStmt *addr)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00510">SVFIR2ItvExeState.cpp:510</a></div></div>
1048
1055
  <div class="ttc" id="aclassSVF_1_1SelectStmt_html"><div class="ttname"><a href="classSVF_1_1SelectStmt.html">SVF::SelectStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00816">SVFStatements.h:816</a></div></div>
1049
1056
  <div class="ttc" id="aclassSVF_1_1IntervalValue_html_a144e17cec654e83654298b379ed4ce9f"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#a144e17cec654e83654298b379ed4ce9f">SVF::IntervalValue::meet_with</a></div><div class="ttdeci">void meet_with(const IntervalValue &amp;other)</div><div class="ttdoc">Return a intersected IntervalValue.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00408">IntervalValue.h:408</a></div></div>
1050
1057
  <div class="ttc" id="aclassSVF_1_1RetPE_html"><div class="ttname"><a href="classSVF_1_1RetPE.html">SVF::RetPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00605">SVFStatements.h:605</a></div></div>
1051
1058
  <div class="ttc" id="aclassSVF_1_1CmpStmt_html"><div class="ttname"><a href="classSVF_1_1CmpStmt.html">SVF::CmpStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00871">SVFStatements.h:871</a></div></div>
1052
1059
  <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_a2f647224242dd87099104e0fdc994de6a90745e5effc8b7ef43c693d1e4fa7dbe"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a90745e5effc8b7ef43c693d1e4fa7dbe">SVF::BinaryOPStmt::Or</a></div><div class="ttdeci">@ Or</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00989">SVFStatements.h:989</a></div></div>
1053
1060
  <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_a2f647224242dd87099104e0fdc994de6a193780e40cee5123c543b6f739b3b46b"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a193780e40cee5123c543b6f739b3b46b">SVF::BinaryOPStmt::Shl</a></div><div class="ttdeci">@ Shl</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00985">SVFStatements.h:985</a></div></div>
1054
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_aac5cc8767eb750bf121f1897788dee24"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#aac5cc8767eb750bf121f1897788dee24">SVF::SVFIR2ItvExeState::translateCmp</a></div><div class="ttdeci">void translateCmp(const CmpStmt *cmp)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00591">SVFIR2ItvExeState.cpp:591</a></div></div>
1055
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_aa274b5b4e18c28ec8035ca1b073aacfc"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#aa274b5b4e18c28ec8035ca1b073aacfc">SVF::SVFIR2ItvExeState::translateGep</a></div><div class="ttdeci">void translateGep(const GepStmt *gep)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00876">SVFIR2ItvExeState.cpp:876</a></div></div>
1061
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_aac5cc8767eb750bf121f1897788dee24"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#aac5cc8767eb750bf121f1897788dee24">SVF::SVFIR2ItvExeState::translateCmp</a></div><div class="ttdeci">void translateCmp(const CmpStmt *cmp)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00598">SVFIR2ItvExeState.cpp:598</a></div></div>
1062
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_aa274b5b4e18c28ec8035ca1b073aacfc"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#aa274b5b4e18c28ec8035ca1b073aacfc">SVF::SVFIR2ItvExeState::translateGep</a></div><div class="ttdeci">void translateGep(const GepStmt *gep)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00883">SVFIR2ItvExeState.cpp:883</a></div></div>
1056
1063
  <div class="ttc" id="aclassSVF_1_1SVFVar_html_ac2db6304ea5526fb446ae882983beeb0"><div class="ttname"><a href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">SVF::SVFVar::getValue</a></div><div class="ttdeci">const SVFValue * getValue() const</div><div class="ttdoc">Get/has methods of the components.</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00094">SVFVariables.h:94</a></div></div>
1057
1064
  <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338aca900bbc9c7824294c3a69c2cb006c27ee"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca900bbc9c7824294c3a69c2cb006c27ee">SVF::CmpStmt::FCMP_OEQ</a></div><div class="ttdeci">@ FCMP_OEQ</div><div class="ttdoc">0 0 0 1 True if ordered and equal</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00890">SVFStatements.h:890</a></div></div>
1058
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a198e8d5f586a698462dee2c3fde8c83e"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a198e8d5f586a698462dee2c3fde8c83e">SVF::SVFIR2ItvExeState::applySummary</a></div><div class="ttdeci">void applySummary(IntervalExeState &amp;es)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00105">SVFIR2ItvExeState.cpp:105</a></div></div>
1059
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_ae00e5398cbeb9aa1cfc464da4250a91e"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#ae00e5398cbeb9aa1cfc464da4250a91e">SVF::SVFIR2ItvExeState::translatePhi</a></div><div class="ttdeci">void translatePhi(const PhiStmt *phi)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00930">SVFIR2ItvExeState.cpp:930</a></div></div>
1065
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a198e8d5f586a698462dee2c3fde8c83e"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a198e8d5f586a698462dee2c3fde8c83e">SVF::SVFIR2ItvExeState::applySummary</a></div><div class="ttdeci">void applySummary(IntervalExeState &amp;es)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00112">SVFIR2ItvExeState.cpp:112</a></div></div>
1066
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_ae00e5398cbeb9aa1cfc464da4250a91e"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#ae00e5398cbeb9aa1cfc464da4250a91e">SVF::SVFIR2ItvExeState::translatePhi</a></div><div class="ttdeci">void translatePhi(const PhiStmt *phi)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00937">SVFIR2ItvExeState.cpp:937</a></div></div>
1060
1067
  <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_a2f647224242dd87099104e0fdc994de6ad2f8b02de2c62175d3341be92a925250"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ad2f8b02de2c62175d3341be92a925250">SVF::BinaryOPStmt::UDiv</a></div><div class="ttdeci">@ UDiv</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00979">SVFStatements.h:979</a></div></div>
1061
1068
  <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_a2f647224242dd87099104e0fdc994de6a553540425a63724c8b7f2fd0ca25b567"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a553540425a63724c8b7f2fd0ca25b567">SVF::BinaryOPStmt::FDiv</a></div><div class="ttdeci">@ FDiv</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00981">SVFStatements.h:981</a></div></div>
1062
1069
  <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338aca6121702881c763c3c8cd3e30dedc7486"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca6121702881c763c3c8cd3e30dedc7486">SVF::CmpStmt::FCMP_OGT</a></div><div class="ttdeci">@ FCMP_OGT</div><div class="ttdoc">0 0 1 0 True if ordered and greater than</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00891">SVFStatements.h:891</a></div></div>
@@ -1069,7 +1076,7 @@ $(function() {
1069
1076
  <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_a2f647224242dd87099104e0fdc994de6a0bf768bb67e7f6f5ee6302bb6dd71da1"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a0bf768bb67e7f6f5ee6302bb6dd71da1">SVF::BinaryOPStmt::LShr</a></div><div class="ttdeci">@ LShr</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00986">SVFStatements.h:986</a></div></div>
1070
1077
  <div class="ttc" id="aclassSVF_1_1AccessPath_html_a3c98f0c5f07109f9da0a8a897aa51d18"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a3c98f0c5f07109f9da0a8a897aa51d18">SVF::AccessPath::getElementNum</a></div><div class="ttdeci">u32_t getElementNum(const SVFType *type) const</div><div class="ttdoc">Return element number of a type.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00063">AccessPath.cpp:63</a></div></div>
1071
1078
  <div class="ttc" id="aclassSVF_1_1IntervalValue_html_add3acad151d5af6c9a5f692f7a01e65b"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">SVF::IntervalValue::top</a></div><div class="ttdeci">static IntervalValue top()</div><div class="ttdoc">Create the IntervalValue [-oo, +oo].</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00083">IntervalValue.h:83</a></div></div>
1072
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a8f2a564370d9b9fb05e139c45eeaba68"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a8f2a564370d9b9fb05e139c45eeaba68">SVF::SVFIR2ItvExeState::translateLoad</a></div><div class="ttdeci">void translateLoad(const LoadStmt *load)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00775">SVFIR2ItvExeState.cpp:775</a></div></div>
1079
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a8f2a564370d9b9fb05e139c45eeaba68"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a8f2a564370d9b9fb05e139c45eeaba68">SVF::SVFIR2ItvExeState::translateLoad</a></div><div class="ttdeci">void translateLoad(const LoadStmt *load)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00782">SVFIR2ItvExeState.cpp:782</a></div></div>
1073
1080
  <div class="ttc" id="aOptions_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
1074
1081
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a24df52313f8093bb651ae9da972cd663"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a24df52313f8093bb651ae9da972cd663">SVF::SymbolTableInfo::getFlattenedElemIdx</a></div><div class="ttdeci">u32_t getFlattenedElemIdx(const SVFType *T, u32_t origId)</div><div class="ttdoc">Flattened element idx of an array or struct by considering stride.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00181">SymbolTableInfo.cpp:181</a></div></div>
1075
1082
  <div class="ttc" id="aclassSVF_1_1AssignStmt_html_a4cec89489e82c60c287cae3327f3f01d"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">SVF::AssignStmt::getRHSVarID</a></div><div class="ttdeci">NodeID getRHSVarID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00298">SVFStatements.h:298</a></div></div>
@@ -1081,18 +1088,18 @@ $(function() {
1081
1088
  <div class="ttc" id="aclassSVF_1_1IntervalExeState_html_a39dead4fe213e3d02b1613debbc86e71"><div class="ttname"><a href="classSVF_1_1IntervalExeState.html#a39dead4fe213e3d02b1613debbc86e71">SVF::IntervalExeState::_locToItvVal</a></div><div class="ttdeci">LocToValMap _locToItvVal</div><div class="ttdoc">Map a memory address to its stored interval value.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8h_source.html#l00152">IntervalExeState.h:152</a></div></div>
1082
1089
  <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>
1083
1090
  <div class="ttc" id="aclassSVF_1_1GepStmt_html_a348de09a7ccd04d1fa76fa6b250249ba"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">SVF::GepStmt::getOffsetVarAndGepTypePairVec</a></div><div class="ttdeci">const AccessPath::IdxOperandPairs getOffsetVarAndGepTypePairVec() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00495">SVFStatements.h:495</a></div></div>
1084
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a31e299f91eed29d1a8db3b884d57d1dc"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a31e299f91eed29d1a8db3b884d57d1dc">SVF::SVFIR2ItvExeState::translateRet</a></div><div class="ttdeci">void translateRet(const RetPE *retPE)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00979">SVFIR2ItvExeState.cpp:979</a></div></div>
1091
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a31e299f91eed29d1a8db3b884d57d1dc"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a31e299f91eed29d1a8db3b884d57d1dc">SVF::SVFIR2ItvExeState::translateRet</a></div><div class="ttdeci">void translateRet(const RetPE *retPE)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00986">SVFIR2ItvExeState.cpp:986</a></div></div>
1085
1092
  <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338aca88d74bf66465f4fdd221db0c11d62927"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca88d74bf66465f4fdd221db0c11d62927">SVF::CmpStmt::ICMP_SLT</a></div><div class="ttdeci">@ ICMP_SLT</div><div class="ttdoc">signed less than</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00916">SVFStatements.h:916</a></div></div>
1086
1093
  <div class="ttc" id="aclassSVF_1_1SVFArrayType_html"><div class="ttname"><a href="classSVF_1_1SVFArrayType.html">SVF::SVFArrayType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00469">SVFType.h:469</a></div></div>
1087
1094
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a37cfa2aa4e7b98ef9dc8179f581a2362"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVF::SVFIR::getPAG</a></div><div class="ttdeci">static SVFIR * getPAG(bool buildFromFile=false)</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00114">SVFIR.h:114</a></div></div>
1088
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a449ee8f244120866037c7f6d2ee5fc13"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a449ee8f244120866037c7f6d2ee5fc13">SVF::SVFIR2ItvExeState::translateBinary</a></div><div class="ttdeci">void translateBinary(const BinaryOPStmt *binary)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00529">SVFIR2ItvExeState.cpp:529</a></div></div>
1095
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a449ee8f244120866037c7f6d2ee5fc13"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a449ee8f244120866037c7f6d2ee5fc13">SVF::SVFIR2ItvExeState::translateBinary</a></div><div class="ttdeci">void translateBinary(const BinaryOPStmt *binary)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00536">SVFIR2ItvExeState.cpp:536</a></div></div>
1089
1096
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a5dc699aa85fe879eb4b2c9109cf3030d"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a5dc699aa85fe879eb4b2c9109cf3030d">SVF::SymbolTableInfo::getTypeInfo</a></div><div class="ttdeci">const StInfo * getTypeInfo(const SVFType *T) const</div><div class="ttdoc">Get struct info.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00056">SymbolTableInfo.cpp:56</a></div></div>
1090
1097
  <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>
1091
1098
  <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>
1092
1099
  <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338acaa6b852204a4d0758ebd632d8a88b966d"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaa6b852204a4d0758ebd632d8a88b966d">SVF::CmpStmt::FCMP_ULT</a></div><div class="ttdeci">@ FCMP_ULT</div><div class="ttdoc">1 1 0 0 True if unordered or less than</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00901">SVFStatements.h:901</a></div></div>
1093
1100
  <div class="ttc" id="aclassSVF_1_1GepStmt_html_a6c74f234a6b40bc5292bb14874c2e600"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">SVF::GepStmt::getAccessPath</a></div><div class="ttdeci">const AccessPath &amp; getAccessPath() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00491">SVFStatements.h:491</a></div></div>
1094
1101
  <div class="ttc" id="aclassSVF_1_1SVFStructType_html"><div class="ttname"><a href="classSVF_1_1SVFStructType.html">SVF::SVFStructType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00436">SVFType.h:436</a></div></div>
1095
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a335922caf105ee72cd9d66a451ae3d4e"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a335922caf105ee72cd9d66a451ae3d4e">SVF::SVFIR2ItvExeState::getByteOffset</a></div><div class="ttdeci">IntervalValue getByteOffset(const GepStmt *gep)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00267">SVFIR2ItvExeState.cpp:267</a></div></div>
1102
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a335922caf105ee72cd9d66a451ae3d4e"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a335922caf105ee72cd9d66a451ae3d4e">SVF::SVFIR2ItvExeState::getByteOffset</a></div><div class="ttdeci">IntervalValue getByteOffset(const GepStmt *gep)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00274">SVFIR2ItvExeState.cpp:274</a></div></div>
1096
1103
  <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_a2f647224242dd87099104e0fdc994de6a97c70ced12e0f1c5e3c3708b13727e8e"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a97c70ced12e0f1c5e3c3708b13727e8e">SVF::BinaryOPStmt::FAdd</a></div><div class="ttdeci">@ FAdd</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00974">SVFStatements.h:974</a></div></div>
1097
1104
  <div class="ttc" id="aclassSVF_1_1IRGraph_html_a3b417ee79560fd00f4cf80906044c198"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a3b417ee79560fd00f4cf80906044c198">SVF::IRGraph::getBlkPtr</a></div><div class="ttdeci">NodeID getBlkPtr() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00170">IRGraph.h:170</a></div></div>
1098
1105
  <div class="ttc" id="aclassSVF_1_1SelectStmt_html_ad4c3e9529176478bb726279a76050e8c"><div class="ttname"><a href="classSVF_1_1SelectStmt.html#ad4c3e9529176478bb726279a76050e8c">SVF::SelectStmt::getCondition</a></div><div class="ttdeci">const SVFVar * getCondition() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00854">SVFStatements.h:854</a></div></div>
@@ -1103,7 +1110,7 @@ $(function() {
1103
1110
  <div class="ttc" id="aclassSVF_1_1SVFConstantFP_html"><div class="ttname"><a href="classSVF_1_1SVFConstantFP.html">SVF::SVFConstantFP</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00995">SVFValue.h:995</a></div></div>
1104
1111
  <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_a2f647224242dd87099104e0fdc994de6a787e5771d6e70f3cbec3e2a33f5a4e8a"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a787e5771d6e70f3cbec3e2a33f5a4e8a">SVF::BinaryOPStmt::Mul</a></div><div class="ttdeci">@ Mul</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00977">SVFStatements.h:977</a></div></div>
1105
1112
  <div class="ttc" id="aclassSVF_1_1AccessPath_html_a4f482ca73cc6e7b8d946651e2b2ea2ae"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a4f482ca73cc6e7b8d946651e2b2ea2ae">SVF::AccessPath::IdxOperandPair</a></div><div class="ttdeci">std::pair&lt; const SVFVar *, const SVFType * &gt; IdxOperandPair</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00064">AccessPath.h:64</a></div></div>
1106
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_aed2e41879bae8389c49e69356b7aaac5"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#aed2e41879bae8389c49e69356b7aaac5">SVF::SVFIR2ItvExeState::translateStore</a></div><div class="ttdeci">void translateStore(const StoreStmt *store)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00817">SVFIR2ItvExeState.cpp:817</a></div></div>
1113
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_aed2e41879bae8389c49e69356b7aaac5"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#aed2e41879bae8389c49e69356b7aaac5">SVF::SVFIR2ItvExeState::translateStore</a></div><div class="ttdeci">void translateStore(const StoreStmt *store)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00824">SVFIR2ItvExeState.cpp:824</a></div></div>
1107
1114
  <div class="ttc" id="aclassSVF_1_1IntervalValue_html_adac2dc2c9f744a071ad3f0175ed40cd9"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">SVF::IntervalValue::ub</a></div><div class="ttdeci">const NumericLiteral &amp; ub() const</div><div class="ttdoc">Return the upper bound.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00225">IntervalValue.h:225</a></div></div>
1108
1115
  <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338aca2793f23e72e3ff432bf193adf0f1b021"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca2793f23e72e3ff432bf193adf0f1b021">SVF::CmpStmt::FCMP_UEQ</a></div><div class="ttdeci">@ FCMP_UEQ</div><div class="ttdoc">1 0 0 1 True if unordered or equal</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00898">SVFStatements.h:898</a></div></div>
1109
1116
  <div class="ttc" id="aclassSVF_1_1IntervalExeState_html"><div class="ttname"><a href="classSVF_1_1IntervalExeState.html">SVF::IntervalExeState</a></div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8h_source.html#l00055">IntervalExeState.h:55</a></div></div>
@@ -1111,18 +1118,18 @@ $(function() {
1111
1118
  <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338aca2a3ce0c02931984d92d70356efc49193"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca2a3ce0c02931984d92d70356efc49193">SVF::CmpStmt::FCMP_ONE</a></div><div class="ttdeci">@ FCMP_ONE</div><div class="ttdoc">0 1 1 0 True if ordered and operands are unequal</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00895">SVFStatements.h:895</a></div></div>
1112
1119
  <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338acac0e2d9db5453eb8be7543fb4315003da"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acac0e2d9db5453eb8be7543fb4315003da">SVF::CmpStmt::FCMP_UGE</a></div><div class="ttdeci">@ FCMP_UGE</div><div class="ttdoc">1 0 1 1 True if unordered, greater than, or equal</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00900">SVFStatements.h:900</a></div></div>
1113
1120
  <div class="ttc" id="aclassSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00045">SVFVariables.h:45</a></div></div>
1114
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a6e4e3eeca9d25fb5eab496faeb6264c3"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a6e4e3eeca9d25fb5eab496faeb6264c3">SVF::SVFIR2ItvExeState::getItvOfFlattenedElemIndex</a></div><div class="ttdeci">IntervalValue getItvOfFlattenedElemIndex(const GepStmt *gep)</div><div class="ttdoc">Return the offset expression of a GepStmt.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00337">SVFIR2ItvExeState.cpp:337</a></div></div>
1121
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a6e4e3eeca9d25fb5eab496faeb6264c3"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a6e4e3eeca9d25fb5eab496faeb6264c3">SVF::SVFIR2ItvExeState::getItvOfFlattenedElemIndex</a></div><div class="ttdeci">IntervalValue getItvOfFlattenedElemIndex(const GepStmt *gep)</div><div class="ttdoc">Return the offset expression of a GepStmt.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00344">SVFIR2ItvExeState.cpp:344</a></div></div>
1115
1122
  <div class="ttc" id="aclassSVF_1_1IntervalExeState_html_a92b1b163493a74a31d30a261128edd05"><div class="ttname"><a href="classSVF_1_1IntervalExeState.html#a92b1b163493a74a31d30a261128edd05">SVF::IntervalExeState::globalES</a></div><div class="ttdeci">static IntervalExeState globalES</div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8h_source.html#l00065">IntervalExeState.h:65</a></div></div>
1116
1123
  <div class="ttc" id="aclassSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00424">SVFStatements.h:424</a></div></div>
1117
1124
  <div class="ttc" id="aclassSVF_1_1IntervalValue_html"><div class="ttname"><a href="classSVF_1_1IntervalValue.html">SVF::IntervalValue</a></div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00043">IntervalValue.h:43</a></div></div>
1118
1125
  <div class="ttc" id="aclassSVF_1_1AddressValue_html_a269a73753a7b495eb08bb0c9c0a58dc0"><div class="ttname"><a href="classSVF_1_1AddressValue.html#a269a73753a7b495eb08bb0c9c0a58dc0">SVF::AddressValue::hasIntersect</a></div><div class="ttdeci">bool hasIntersect(const AddressValue &amp;other)</div><div class="ttdef"><b>Definition:</b> <a href="AddressValue_8h_source.html#l00175">AddressValue.h:175</a></div></div>
1119
1126
  <div class="ttc" id="aclassSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00081">SymbolTableInfo.cpp:81</a></div></div>
1120
1127
  <div class="ttc" id="aclassSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00406">GenericGraph.h:406</a></div></div>
1121
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_afcf2f81101f1b9580d82b5c2efb83999"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#afcf2f81101f1b9580d82b5c2efb83999">SVF::SVFIR2ItvExeState::translateCopy</a></div><div class="ttdeci">void translateCopy(const CopyStmt *copy)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00846">SVFIR2ItvExeState.cpp:846</a></div></div>
1128
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_afcf2f81101f1b9580d82b5c2efb83999"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#afcf2f81101f1b9580d82b5c2efb83999">SVF::SVFIR2ItvExeState::translateCopy</a></div><div class="ttdeci">void translateCopy(const CopyStmt *copy)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00853">SVFIR2ItvExeState.cpp:853</a></div></div>
1122
1129
  <div class="ttc" id="aclassSVF_1_1AssignStmt_html_ad03d28d16754c9049dd4d0ad3b6c1e28"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#ad03d28d16754c9049dd4d0ad3b6c1e28">SVF::AssignStmt::getRHSVar</a></div><div class="ttdeci">SVFVar * getRHSVar() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00290">SVFStatements.h:290</a></div></div>
1123
1130
  <div class="ttc" id="aclassSVF_1_1ExeState_html_ad317f2ae2e599a131a6fd9f415f5d712"><div class="ttname"><a href="classSVF_1_1ExeState.html#ad317f2ae2e599a131a6fd9f415f5d712">SVF::ExeState::_varToAddrs</a></div><div class="ttdeci">VarToAddrs _varToAddrs</div><div class="ttdoc">Map a variable (symbol) to its memory addresses.</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00095">ExeState.h:95</a></div></div>
1124
1131
  <div class="ttc" id="aclassSVF_1_1GepStmt_html_ab6f37c073e4755c4b8bb3ed6365687f4"><div class="ttname"><a href="classSVF_1_1GepStmt.html#ab6f37c073e4755c4b8bb3ed6365687f4">SVF::GepStmt::isConstantOffset</a></div><div class="ttdeci">bool isConstantOffset() const</div><div class="ttdoc">Return TRUE if this is a constant location set.</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00500">SVFStatements.h:500</a></div></div>
1125
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_af80d7665d9815a80ffdba92c3ba029d1"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#af80d7665d9815a80ffdba92c3ba029d1">SVF::SVFIR2ItvExeState::moveToGlobal</a></div><div class="ttdeci">void moveToGlobal()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00125">SVFIR2ItvExeState.cpp:125</a></div></div>
1132
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_af80d7665d9815a80ffdba92c3ba029d1"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#af80d7665d9815a80ffdba92c3ba029d1">SVF::SVFIR2ItvExeState::moveToGlobal</a></div><div class="ttdeci">void moveToGlobal()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00132">SVFIR2ItvExeState.cpp:132</a></div></div>
1126
1133
  <div class="ttc" id="anamespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00052">SVFType.h:52</a></div></div>
1127
1134
  <div class="ttc" id="aclassSVF_1_1AddressValue_html_aa7291f4b74bb824fb38b8c383fa0b6a0"><div class="ttname"><a href="classSVF_1_1AddressValue.html#aa7291f4b74bb824fb38b8c383fa0b6a0">SVF::AddressValue::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="AddressValue_8h_source.html#l00113">AddressValue.h:113</a></div></div>
1128
1135
  <div class="ttc" id="aclassSVF_1_1MemObj_html_a2f70e9c830b18f25c56b530722f106c4"><div class="ttname"><a href="classSVF_1_1MemObj.html#a2f70e9c830b18f25c56b530722f106c4">SVF::MemObj::getValue</a></div><div class="ttdeci">const SVFValue * getValue() const</div><div class="ttdoc">Get the reference value to this object.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00406">SymbolTableInfo.h:406</a></div></div>
@@ -1146,23 +1153,23 @@ $(function() {
1146
1153
  <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#l01354">LLVMUtil.cpp:1354</a></div></div>
1147
1154
  <div class="ttc" id="aclassSVF_1_1AddressValue_html"><div class="ttname"><a href="classSVF_1_1AddressValue.html">SVF::AddressValue</a></div><div class="ttdef"><b>Definition:</b> <a href="AddressValue_8h_source.html#l00041">AddressValue.h:41</a></div></div>
1148
1155
  <div class="ttc" id="aclassSVF_1_1SelectStmt_html_a537c03b08444da34c26b9e989bb0e568"><div class="ttname"><a href="classSVF_1_1SelectStmt.html#a537c03b08444da34c26b9e989bb0e568">SVF::SelectStmt::getTrueValue</a></div><div class="ttdeci">const SVFVar * getTrueValue() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00858">SVFStatements.h:858</a></div></div>
1149
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_af5d05c5316127cfe8d975a3a0a23798b"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#af5d05c5316127cfe8d975a3a0a23798b">SVF::SVFIR2ItvExeState::initSVFVar</a></div><div class="ttdeci">void initSVFVar(u32_t varId)</div><div class="ttdoc">Init SVFVar.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00479">SVFIR2ItvExeState.cpp:479</a></div></div>
1156
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_af5d05c5316127cfe8d975a3a0a23798b"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#af5d05c5316127cfe8d975a3a0a23798b">SVF::SVFIR2ItvExeState::initSVFVar</a></div><div class="ttdeci">void initSVFVar(u32_t varId)</div><div class="ttdoc">Init SVFVar.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00486">SVFIR2ItvExeState.cpp:486</a></div></div>
1150
1157
  <div class="ttc" id="acJSON_8cpp_html_a7669ee67a0563250c1efaa24d130e1ac"><div class="ttname"><a href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a></div><div class="ttdeci">copy</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l00414">cJSON.cpp:414</a></div></div>
1151
1158
  <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_ad0a7c5e87355d7a83176343322db448f"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f">SVF::BinaryOPStmt::getOpcode</a></div><div class="ttdeci">u32_t getOpcode() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01016">SVFStatements.h:1016</a></div></div>
1152
1159
  <div class="ttc" id="aclassSVF_1_1ObjVar_html_a6a4feb73b54e602407e35eeb09f55930"><div class="ttname"><a href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">SVF::ObjVar::getMemObj</a></div><div class="ttdeci">const MemObj * getMemObj() const</div><div class="ttdoc">Return memory object.</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00353">SVFVariables.h:353</a></div></div>
1153
1160
  <div class="ttc" id="aclassSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
1154
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a646fa58f61db6abd98d0a04af1fab88d"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a646fa58f61db6abd98d0a04af1fab88d">SVF::SVFIR2ItvExeState::initObjVar</a></div><div class="ttdeci">void initObjVar(const ObjVar *objVar, u32_t varId)</div><div class="ttdoc">Init ObjVar.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00447">SVFIR2ItvExeState.cpp:447</a></div></div>
1161
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a646fa58f61db6abd98d0a04af1fab88d"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a646fa58f61db6abd98d0a04af1fab88d">SVF::SVFIR2ItvExeState::initObjVar</a></div><div class="ttdeci">void initObjVar(const ObjVar *objVar, u32_t varId)</div><div class="ttdoc">Init ObjVar.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00454">SVFIR2ItvExeState.cpp:454</a></div></div>
1155
1162
  <div class="ttc" id="acJSON_8h_html_ac76cea59d438ba893d2f82aabb367d14"><div class="ttname"><a href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a></div><div class="ttdeci">cJSON * item</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00222">cJSON.h:222</a></div></div>
1156
1163
  <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_a2f647224242dd87099104e0fdc994de6a7a4ce4e97992d92ac044456e66821552"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a7a4ce4e97992d92ac044456e66821552">SVF::BinaryOPStmt::SDiv</a></div><div class="ttdeci">@ SDiv</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00980">SVFStatements.h:980</a></div></div>
1157
1164
  <div class="ttc" id="aclassSVF_1_1AssignStmt_html_a98f731be7be9bc8e7fd09f5c2204c840"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">SVF::AssignStmt::getLHSVarID</a></div><div class="ttdeci">NodeID getLHSVarID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00302">SVFStatements.h:302</a></div></div>
1158
1165
  <div class="ttc" id="aclassSVF_1_1MultiOpndStmt_html_af300571886b7aa2d84b0a70851c99bc3"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#af300571886b7aa2d84b0a70851c99bc3">SVF::MultiOpndStmt::getOpVarNum</a></div><div class="ttdeci">u32_t getOpVarNum() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00725">SVFStatements.h:725</a></div></div>
1159
1166
  <div class="ttc" id="aclassSVF_1_1ExeState_html_a79866a547dc4805d3fefdfd528d2df2a"><div class="ttname"><a href="classSVF_1_1ExeState.html#a79866a547dc4805d3fefdfd528d2df2a">SVF::ExeState::_locToAddrs</a></div><div class="ttdeci">VarToAddrs _locToAddrs</div><div class="ttdoc">Map a memory address to its stored memory addresses.</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00096">ExeState.h:96</a></div></div>
1160
1167
  <div class="ttc" id="aclassSVF_1_1SVFVar_html_a1ace69053c2c4436fd78d5624bd0086a"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">SVF::SVFVar::hasValue</a></div><div class="ttdeci">bool hasValue() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00112">SVFVariables.h:112</a></div></div>
1161
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_af8d06156bcbb61beb305ed8096319966"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#af8d06156bcbb61beb305ed8096319966">SVF::SVFIR2ItvExeState::getGepObjAddress</a></div><div class="ttdeci">Addrs getGepObjAddress(u32_t pointer, APOffset offset)</div><div class="ttdoc">Return the field address given a pointer points to a struct object and an offset.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00224">SVFIR2ItvExeState.cpp:224</a></div></div>
1168
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_af8d06156bcbb61beb305ed8096319966"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#af8d06156bcbb61beb305ed8096319966">SVF::SVFIR2ItvExeState::getGepObjAddress</a></div><div class="ttdeci">Addrs getGepObjAddress(u32_t pointer, APOffset offset)</div><div class="ttdoc">Return the field address given a pointer points to a struct object and an offset.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00231">SVFIR2ItvExeState.cpp:231</a></div></div>
1162
1169
  <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338acaeeae52f8d195815edfb8c85037d246d6"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaeeae52f8d195815edfb8c85037d246d6">SVF::CmpStmt::ICMP_SLE</a></div><div class="ttdeci">@ ICMP_SLE</div><div class="ttdoc">signed less or equal</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00917">SVFStatements.h:917</a></div></div>
1163
1170
  <div class="ttc" id="aclassSVF_1_1Options_html_aaab923c093730b1670a54f09340b1bd5"><div class="ttname"><a href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">SVF::Options::MaxFieldLimit</a></div><div class="ttdeci">static const Option&lt; u32_t &gt; MaxFieldLimit</div><div class="ttdoc">Maximum number of field derivations for an object.</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00038">Options.h:38</a></div></div>
1164
1171
  <div class="ttc" id="anamespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
1165
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a103b55536f1cec38edb2f169d3f94675"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a103b55536f1cec38edb2f169d3f94675">SVF::SVFIR2ItvExeState::narrowAddrs</a></div><div class="ttdeci">void narrowAddrs(IntervalExeState &amp;lhs, const IntervalExeState &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00190">SVFIR2ItvExeState.cpp:190</a></div></div>
1172
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a103b55536f1cec38edb2f169d3f94675"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a103b55536f1cec38edb2f169d3f94675">SVF::SVFIR2ItvExeState::narrowAddrs</a></div><div class="ttdeci">void narrowAddrs(IntervalExeState &amp;lhs, const IntervalExeState &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00197">SVFIR2ItvExeState.cpp:197</a></div></div>
1166
1173
  <div class="ttc" id="aclassSVF_1_1SVFVar_html_ab6f95d3e7e099d75cfc9645ebc037047"><div class="ttname"><a href="classSVF_1_1SVFVar.html#ab6f95d3e7e099d75cfc9645ebc037047">SVF::SVFVar::getType</a></div><div class="ttdeci">virtual const SVFType * getType() const</div><div class="ttdoc">Return type of the value.</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00107">SVFVariables.h:107</a></div></div>
1167
1174
  <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338acac5a87d53b1ad255cec18b3784cd81f80"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acac5a87d53b1ad255cec18b3784cd81f80">SVF::CmpStmt::ICMP_SGE</a></div><div class="ttdeci">@ ICMP_SGE</div><div class="ttdoc">signed greater or equal</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00915">SVFStatements.h:915</a></div></div>
1168
1175
  <div class="ttc" id="aclassSVF_1_1MultiOpndStmt_html_a71a530eb9fa9f7e273e471b4a75a039e"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">SVF::MultiOpndStmt::getResID</a></div><div class="ttdeci">NodeID getResID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00289">SVFStatements.cpp:289</a></div></div>
@@ -1179,9 +1186,9 @@ $(function() {
1179
1186
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream &amp; errs()</div><div class="ttdoc">Overwrite llvm::errs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00056">SVFUtil.h:56</a></div></div>
1180
1187
  <div class="ttc" id="aclassSVF_1_1MemObj_html_a019a77516c403f1f3cc72917b810a41f"><div class="ttname"><a href="classSVF_1_1MemObj.html#a019a77516c403f1f3cc72917b810a41f">SVF::MemObj::isConstantStruct</a></div><div class="ttdeci">bool isConstantStruct() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00525">SymbolTableInfo.cpp:525</a></div></div>
1181
1188
  <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_a2f647224242dd87099104e0fdc994de6a06926877b6c25931a409224497753862"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a06926877b6c25931a409224497753862">SVF::BinaryOPStmt::Add</a></div><div class="ttdeci">@ Add</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00973">SVFStatements.h:973</a></div></div>
1182
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a198fd724be35f415851a2467c3930f76"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a198fd724be35f415851a2467c3930f76">SVF::SVFIR2ItvExeState::widenAddrs</a></div><div class="ttdeci">void widenAddrs(IntervalExeState &amp;lhs, const IntervalExeState &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00152">SVFIR2ItvExeState.cpp:152</a></div></div>
1189
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a198fd724be35f415851a2467c3930f76"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a198fd724be35f415851a2467c3930f76">SVF::SVFIR2ItvExeState::widenAddrs</a></div><div class="ttdeci">void widenAddrs(IntervalExeState &amp;lhs, const IntervalExeState &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00159">SVFIR2ItvExeState.cpp:159</a></div></div>
1183
1190
  <div class="ttc" id="aclassSVF_1_1AddressValue_html_aed0b4789beda4980e4e215a65350f323"><div class="ttname"><a href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">SVF::AddressValue::begin</a></div><div class="ttdeci">AddrSet::const_iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="AddressValue_8h_source.html#l00103">AddressValue.h:103</a></div></div>
1184
- <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a61d288c8dc621a0578faa5ff784f4b6e"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a61d288c8dc621a0578faa5ff784f4b6e">SVF::SVFIR2ItvExeState::initValVar</a></div><div class="ttdeci">void initValVar(const ValVar *valVar, u32_t varId)</div><div class="ttdoc">Init ValVar.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00411">SVFIR2ItvExeState.cpp:411</a></div></div>
1191
+ <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a61d288c8dc621a0578faa5ff784f4b6e"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a61d288c8dc621a0578faa5ff784f4b6e">SVF::SVFIR2ItvExeState::initValVar</a></div><div class="ttdeci">void initValVar(const ValVar *valVar, u32_t varId)</div><div class="ttdoc">Init ValVar.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00418">SVFIR2ItvExeState.cpp:418</a></div></div>
1185
1192
  <!-- start footer part -->
1186
1193
  <hr class="footer"/><address class="footer"><small>
1187
1194
  Generated by &#160;<a href="http://www.doxygen.org/index.html">