svf-tools 1.0.813 → 1.0.814

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 (268) hide show
  1. package/SVF-doxygen/html/AccessPath_8cpp_source.html +4 -4
  2. package/SVF-doxygen/html/AccessPath_8h_source.html +3 -3
  3. package/SVF-doxygen/html/Andersen_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/ConsGEdge_8h_source.html +2 -2
  5. package/SVF-doxygen/html/ContextDDA_8cpp_source.html +184 -183
  6. package/SVF-doxygen/html/ContextDDA_8h_source.html +5 -5
  7. package/SVF-doxygen/html/FlowDDA_8cpp_source.html +2 -2
  8. package/SVF-doxygen/html/FlowSensitive_8cpp_source.html +2 -2
  9. package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +191 -190
  10. package/SVF-doxygen/html/SVFIR2ConsExeState_8h_source.html +4 -4
  11. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +695 -688
  12. package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +15 -15
  13. package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +3 -3
  14. package/SVF-doxygen/html/SVFIRExtAPI_8cpp_source.html +120 -118
  15. package/SVF-doxygen/html/SVFIR_8cpp_source.html +2 -2
  16. package/SVF-doxygen/html/SVFStatements_8h_source.html +4 -4
  17. package/SVF-doxygen/html/SVFVariables_8h_source.html +2 -2
  18. package/SVF-doxygen/html/classSVF_1_1AccessPath-members.html +1 -1
  19. package/SVF-doxygen/html/classSVF_1_1AccessPath.html +11 -11
  20. package/SVF-doxygen/html/classSVF_1_1Andersen.html +1 -1
  21. package/SVF-doxygen/html/classSVF_1_1ContextDDA.html +176 -175
  22. package/SVF-doxygen/html/classSVF_1_1FlowDDA.html +2 -2
  23. package/SVF-doxygen/html/classSVF_1_1FlowSensitive.html +2 -2
  24. package/SVF-doxygen/html/classSVF_1_1GepStmt-members.html +1 -1
  25. package/SVF-doxygen/html/classSVF_1_1GepStmt.html +8 -8
  26. package/SVF-doxygen/html/classSVF_1_1GepValVar.html +2 -2
  27. package/SVF-doxygen/html/classSVF_1_1NormalGepCGEdge.html +2 -2
  28. package/SVF-doxygen/html/classSVF_1_1SVFIR.html +2 -2
  29. package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +186 -185
  30. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +667 -660
  31. package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +123 -121
  32. package/SVF-doxygen/html/functions_b.html +3 -3
  33. package/SVF-doxygen/html/functions_func_g.html +7 -5
  34. package/SVF-doxygen/html/functions_func_i.html +1 -1
  35. package/SVF-doxygen/html/functions_g.html +6 -4
  36. package/SVF-doxygen/html/functions_i.html +2 -2
  37. package/SVF-doxygen/html/functions_o.html +4 -4
  38. package/SVF-doxygen/html/functions_p.html +9 -9
  39. package/SVF-doxygen/html/functions_r.html +2 -4
  40. package/SVF-doxygen/html/functions_s.html +5 -5
  41. package/SVF-doxygen/html/functions_t.html +6 -6
  42. package/SVF-doxygen/html/functions_v.html +4 -6
  43. package/SVF-doxygen/html/functions_w.html +1 -1
  44. package/SVF-doxygen/html/search/all_10.js +324 -324
  45. package/SVF-doxygen/html/search/all_11.js +222 -222
  46. package/SVF-doxygen/html/search/all_12.js +544 -544
  47. package/SVF-doxygen/html/search/all_13.js +191 -191
  48. package/SVF-doxygen/html/search/all_14.js +67 -67
  49. package/SVF-doxygen/html/search/all_15.js +167 -167
  50. package/SVF-doxygen/html/search/all_16.js +63 -63
  51. package/SVF-doxygen/html/search/all_17.js +1 -1
  52. package/SVF-doxygen/html/search/all_18.js +1 -1
  53. package/SVF-doxygen/html/search/all_19.js +11 -11
  54. package/SVF-doxygen/html/search/all_1a.js +172 -172
  55. package/SVF-doxygen/html/search/all_2.js +1 -1
  56. package/SVF-doxygen/html/search/all_7.js +715 -714
  57. package/SVF-doxygen/html/search/all_8.js +197 -197
  58. package/SVF-doxygen/html/search/all_9.js +607 -607
  59. package/SVF-doxygen/html/search/all_a.js +46 -46
  60. package/SVF-doxygen/html/search/all_b.js +26 -26
  61. package/SVF-doxygen/html/search/all_c.js +116 -116
  62. package/SVF-doxygen/html/search/all_d.js +196 -196
  63. package/SVF-doxygen/html/search/all_e.js +207 -207
  64. package/SVF-doxygen/html/search/all_f.js +115 -115
  65. package/SVF-doxygen/html/search/classes_0.js +26 -26
  66. package/SVF-doxygen/html/search/classes_1.js +9 -9
  67. package/SVF-doxygen/html/search/classes_10.js +73 -73
  68. package/SVF-doxygen/html/search/classes_11.js +15 -15
  69. package/SVF-doxygen/html/search/classes_12.js +2 -2
  70. package/SVF-doxygen/html/search/classes_13.js +10 -10
  71. package/SVF-doxygen/html/search/classes_14.js +14 -14
  72. package/SVF-doxygen/html/search/classes_15.js +1 -1
  73. package/SVF-doxygen/html/search/classes_2.js +80 -80
  74. package/SVF-doxygen/html/search/classes_3.js +37 -37
  75. package/SVF-doxygen/html/search/classes_4.js +9 -9
  76. package/SVF-doxygen/html/search/classes_5.js +28 -28
  77. package/SVF-doxygen/html/search/classes_6.js +104 -104
  78. package/SVF-doxygen/html/search/classes_7.js +33 -33
  79. package/SVF-doxygen/html/search/classes_8.js +56 -56
  80. package/SVF-doxygen/html/search/classes_9.js +1 -1
  81. package/SVF-doxygen/html/search/classes_a.js +12 -12
  82. package/SVF-doxygen/html/search/classes_b.js +29 -29
  83. package/SVF-doxygen/html/search/classes_c.js +6 -6
  84. package/SVF-doxygen/html/search/classes_d.js +18 -18
  85. package/SVF-doxygen/html/search/classes_e.js +36 -36
  86. package/SVF-doxygen/html/search/classes_f.js +25 -25
  87. package/SVF-doxygen/html/search/defines_0.js +3 -3
  88. package/SVF-doxygen/html/search/defines_1.js +2 -2
  89. package/SVF-doxygen/html/search/defines_2.js +30 -30
  90. package/SVF-doxygen/html/search/defines_3.js +21 -21
  91. package/SVF-doxygen/html/search/defines_4.js +2 -2
  92. package/SVF-doxygen/html/search/defines_5.js +4 -4
  93. package/SVF-doxygen/html/search/defines_6.js +2 -2
  94. package/SVF-doxygen/html/search/defines_7.js +5 -5
  95. package/SVF-doxygen/html/search/defines_8.js +11 -11
  96. package/SVF-doxygen/html/search/defines_9.js +9 -9
  97. package/SVF-doxygen/html/search/defines_a.js +2 -2
  98. package/SVF-doxygen/html/search/defines_b.js +1 -1
  99. package/SVF-doxygen/html/search/defines_c.js +3 -3
  100. package/SVF-doxygen/html/search/defines_d.js +2 -2
  101. package/SVF-doxygen/html/search/defines_e.js +7 -7
  102. package/SVF-doxygen/html/search/defines_f.js +3 -3
  103. package/SVF-doxygen/html/search/enums_0.js +3 -3
  104. package/SVF-doxygen/html/search/enums_1.js +2 -2
  105. package/SVF-doxygen/html/search/enums_10.js +1 -1
  106. package/SVF-doxygen/html/search/enums_11.js +1 -1
  107. package/SVF-doxygen/html/search/enums_2.js +8 -8
  108. package/SVF-doxygen/html/search/enums_3.js +1 -1
  109. package/SVF-doxygen/html/search/enums_4.js +3 -3
  110. package/SVF-doxygen/html/search/enums_5.js +1 -1
  111. package/SVF-doxygen/html/search/enums_6.js +2 -2
  112. package/SVF-doxygen/html/search/enums_7.js +2 -2
  113. package/SVF-doxygen/html/search/enums_8.js +4 -4
  114. package/SVF-doxygen/html/search/enums_9.js +1 -1
  115. package/SVF-doxygen/html/search/enums_a.js +1 -1
  116. package/SVF-doxygen/html/search/enums_b.js +7 -7
  117. package/SVF-doxygen/html/search/enums_c.js +1 -1
  118. package/SVF-doxygen/html/search/enums_d.js +4 -4
  119. package/SVF-doxygen/html/search/enums_e.js +2 -2
  120. package/SVF-doxygen/html/search/enums_f.js +4 -4
  121. package/SVF-doxygen/html/search/enumvalues_0.js +14 -14
  122. package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
  123. package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
  124. package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
  125. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  126. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  127. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  128. package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
  129. package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
  130. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  131. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  132. package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
  133. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  134. package/SVF-doxygen/html/search/enumvalues_7.js +9 -9
  135. package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
  136. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  137. package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
  138. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  139. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  140. package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
  141. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  142. package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
  143. package/SVF-doxygen/html/search/files_0.js +13 -13
  144. package/SVF-doxygen/html/search/files_1.js +7 -7
  145. package/SVF-doxygen/html/search/files_10.js +8 -8
  146. package/SVF-doxygen/html/search/files_11.js +8 -8
  147. package/SVF-doxygen/html/search/files_12.js +2 -2
  148. package/SVF-doxygen/html/search/files_2.js +55 -55
  149. package/SVF-doxygen/html/search/files_3.js +14 -14
  150. package/SVF-doxygen/html/search/files_4.js +5 -5
  151. package/SVF-doxygen/html/search/files_5.js +13 -13
  152. package/SVF-doxygen/html/search/files_6.js +9 -9
  153. package/SVF-doxygen/html/search/files_7.js +14 -14
  154. package/SVF-doxygen/html/search/files_8.js +13 -13
  155. package/SVF-doxygen/html/search/files_9.js +18 -18
  156. package/SVF-doxygen/html/search/files_a.js +3 -3
  157. package/SVF-doxygen/html/search/files_b.js +2 -2
  158. package/SVF-doxygen/html/search/files_c.js +20 -20
  159. package/SVF-doxygen/html/search/files_d.js +4 -4
  160. package/SVF-doxygen/html/search/files_e.js +62 -62
  161. package/SVF-doxygen/html/search/files_f.js +8 -8
  162. package/SVF-doxygen/html/search/functions_0.js +12 -12
  163. package/SVF-doxygen/html/search/functions_1.js +360 -360
  164. package/SVF-doxygen/html/search/functions_10.js +140 -140
  165. package/SVF-doxygen/html/search/functions_11.js +138 -138
  166. package/SVF-doxygen/html/search/functions_12.js +279 -279
  167. package/SVF-doxygen/html/search/functions_13.js +59 -59
  168. package/SVF-doxygen/html/search/functions_14.js +39 -39
  169. package/SVF-doxygen/html/search/functions_15.js +71 -71
  170. package/SVF-doxygen/html/search/functions_16.js +32 -32
  171. package/SVF-doxygen/html/search/functions_17.js +3 -3
  172. package/SVF-doxygen/html/search/functions_18.js +172 -172
  173. package/SVF-doxygen/html/search/functions_2.js +87 -87
  174. package/SVF-doxygen/html/search/functions_3.js +257 -257
  175. package/SVF-doxygen/html/search/functions_4.js +75 -75
  176. package/SVF-doxygen/html/search/functions_5.js +53 -53
  177. package/SVF-doxygen/html/search/functions_6.js +59 -59
  178. package/SVF-doxygen/html/search/functions_7.js +853 -852
  179. package/SVF-doxygen/html/search/functions_8.js +149 -149
  180. package/SVF-doxygen/html/search/functions_9.js +423 -423
  181. package/SVF-doxygen/html/search/functions_a.js +30 -30
  182. package/SVF-doxygen/html/search/functions_b.js +2 -2
  183. package/SVF-doxygen/html/search/functions_c.js +26 -26
  184. package/SVF-doxygen/html/search/functions_d.js +77 -77
  185. package/SVF-doxygen/html/search/functions_e.js +35 -35
  186. package/SVF-doxygen/html/search/functions_f.js +56 -56
  187. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  188. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  189. package/SVF-doxygen/html/search/related_0.js +2 -2
  190. package/SVF-doxygen/html/search/related_1.js +2 -2
  191. package/SVF-doxygen/html/search/related_2.js +2 -2
  192. package/SVF-doxygen/html/search/related_3.js +2 -2
  193. package/SVF-doxygen/html/search/related_4.js +2 -2
  194. package/SVF-doxygen/html/search/related_5.js +1 -1
  195. package/SVF-doxygen/html/search/related_6.js +2 -2
  196. package/SVF-doxygen/html/search/related_7.js +4 -4
  197. package/SVF-doxygen/html/search/related_8.js +2 -2
  198. package/SVF-doxygen/html/search/related_9.js +4 -4
  199. package/SVF-doxygen/html/search/related_a.js +19 -19
  200. package/SVF-doxygen/html/search/related_b.js +4 -4
  201. package/SVF-doxygen/html/search/related_c.js +1 -1
  202. package/SVF-doxygen/html/search/related_d.js +12 -12
  203. package/SVF-doxygen/html/search/related_e.js +2 -2
  204. package/SVF-doxygen/html/search/related_f.js +2 -2
  205. package/SVF-doxygen/html/search/typedefs_0.js +19 -19
  206. package/SVF-doxygen/html/search/typedefs_1.js +26 -26
  207. package/SVF-doxygen/html/search/typedefs_10.js +61 -61
  208. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  209. package/SVF-doxygen/html/search/typedefs_12.js +11 -11
  210. package/SVF-doxygen/html/search/typedefs_13.js +33 -33
  211. package/SVF-doxygen/html/search/typedefs_14.js +8 -8
  212. package/SVF-doxygen/html/search/typedefs_2.js +129 -129
  213. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  214. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  215. package/SVF-doxygen/html/search/typedefs_5.js +41 -41
  216. package/SVF-doxygen/html/search/typedefs_6.js +55 -55
  217. package/SVF-doxygen/html/search/typedefs_7.js +44 -44
  218. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  219. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  220. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  221. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  222. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  223. package/SVF-doxygen/html/search/typedefs_d.js +14 -14
  224. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  225. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  226. package/SVF-doxygen/html/search/variables_0.js +151 -151
  227. package/SVF-doxygen/html/search/variables_1.js +75 -75
  228. package/SVF-doxygen/html/search/variables_10.js +97 -97
  229. package/SVF-doxygen/html/search/variables_11.js +44 -44
  230. package/SVF-doxygen/html/search/variables_12.js +92 -92
  231. package/SVF-doxygen/html/search/variables_13.js +75 -75
  232. package/SVF-doxygen/html/search/variables_14.js +14 -14
  233. package/SVF-doxygen/html/search/variables_15.js +48 -48
  234. package/SVF-doxygen/html/search/variables_16.js +9 -9
  235. package/SVF-doxygen/html/search/variables_17.js +1 -1
  236. package/SVF-doxygen/html/search/variables_18.js +2 -2
  237. package/SVF-doxygen/html/search/variables_2.js +38 -38
  238. package/SVF-doxygen/html/search/variables_3.js +142 -142
  239. package/SVF-doxygen/html/search/variables_4.js +55 -55
  240. package/SVF-doxygen/html/search/variables_5.js +37 -37
  241. package/SVF-doxygen/html/search/variables_6.js +66 -66
  242. package/SVF-doxygen/html/search/variables_7.js +33 -33
  243. package/SVF-doxygen/html/search/variables_8.js +7 -7
  244. package/SVF-doxygen/html/search/variables_9.js +78 -78
  245. package/SVF-doxygen/html/search/variables_a.js +4 -4
  246. package/SVF-doxygen/html/search/variables_b.js +10 -10
  247. package/SVF-doxygen/html/search/variables_c.js +45 -45
  248. package/SVF-doxygen/html/search/variables_d.js +56 -56
  249. package/SVF-doxygen/html/search/variables_e.js +123 -123
  250. package/SVF-doxygen/html/search/variables_f.js +29 -29
  251. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1AccessPath_01_4.html +2 -2
  252. package/SVF-doxygen/html/svf-ex_8cpp.html +11 -11
  253. package/SVF-doxygen/html/svf-ex_8cpp_source.html +11 -11
  254. package/package.json +1 -1
  255. package/svf/include/Graphs/ConsGEdge.h +1 -1
  256. package/svf/include/MemoryModel/AccessPath.h +2 -2
  257. package/svf/include/SVFIR/SVFStatements.h +2 -2
  258. package/svf/include/SVFIR/SVFVariables.h +1 -1
  259. package/svf/lib/AbstractExecution/SVFIR2ConsExeState.cpp +2 -1
  260. package/svf/lib/AbstractExecution/SVFIR2ItvExeState.cpp +4 -0
  261. package/svf/lib/DDA/ContextDDA.cpp +2 -1
  262. package/svf/lib/DDA/FlowDDA.cpp +1 -1
  263. package/svf/lib/MemoryModel/AccessPath.cpp +4 -4
  264. package/svf/lib/SVFIR/SVFIR.cpp +1 -1
  265. package/svf/lib/WPA/Andersen.cpp +1 -1
  266. package/svf/lib/WPA/FlowSensitive.cpp +1 -1
  267. package/svf-llvm/lib/SVFIRBuilder.cpp +2 -2
  268. package/svf-llvm/lib/SVFIRExtAPI.cpp +7 -5
@@ -304,715 +304,720 @@ $(function() {
304
304
  <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; </div>
305
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
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; <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>
308
- <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="comment">// Loop through the offsetVarAndGepTypePairVec in reverse order.</span></div>
309
- <div class="line"><a name="l00271"></a><span class="lineno"> 271</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>
310
- <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div>
311
- <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* idxOperandVar =</div>
312
- <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>()[i].first;</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_1SVFType.html">SVFType</a>* idxOperandType =</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].second;</div>
315
- <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="comment">// calculating Array/Ptr by elemByteSize * indexOperand</span></div>
316
- <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFArrayType&gt;(idxOperandType) || SVFUtil::isa&lt;SVFPointerType&gt;(idxOperandType))</div>
317
- <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; {</div>
318
- <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> elemByteSize = 1;</div>
319
- <div class="line"><a name="l00281"></a><span class="lineno"> 281</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>
320
- <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; {</div>
321
- <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; elemByteSize = arrOperandType-&gt;getTypeOfElement()-&gt;getByteSize();</div>
322
- <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; }</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> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>* ptrOperandType = SVFUtil::dyn_cast&lt;SVFPointerType&gt;(idxOperandType))</div>
324
- <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; {</div>
325
- <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; elemByteSize = ptrOperandType-&gt;getPtrElementType()-&gt;getByteSize();</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; <span class="keywordflow">else</span></div>
328
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;idxOperandType must be ArrType or PtrType&quot;</span>);</div>
329
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</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>
330
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div>
331
- <div class="line"><a name="l00293"></a><span class="lineno"> 293</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>
332
- <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; : <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
333
- <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(lb, lb);</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; <span class="keywordflow">else</span></div>
336
- <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; {</div>
337
- <div class="line"><a name="l00299"></a><span class="lineno"> 299</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>
338
- <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> idxVal = _es[idx];</div>
339
- <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">if</span> (idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#af8be90fc1b61103187908dce4ba68001">isBottom</a>())</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; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
342
- <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div>
343
- <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">else</span></div>
344
- <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; {</div>
345
- <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> ub = (double)<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; 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>
347
- <div class="line"><a name="l00309"></a><span class="lineno"> 309</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>
348
- <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; ((<span class="keywordtype">double</span>)<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; 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>
350
- <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(lb, ub);</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; }</div>
354
- <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="comment">// Process struct subtype by calculating the byte offset from beginning to the field of struct</span></div>
355
- <div class="line"><a name="l00317"></a><span class="lineno"> 317</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>
356
- <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; {</div>
357
- <div class="line"><a name="l00319"></a><span class="lineno"> 319</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>
358
- <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; idxOperandVar, structOperandType));</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="keywordflow">else</span></div>
361
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; {</div>
362
- <div class="line"><a name="l00324"></a><span class="lineno"> 324</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>
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; }</div>
365
- <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">return</span> res; <span class="comment">// Return the resulting byte offset as an IntervalValue.</span></div>
366
- <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;}</div>
367
- <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; </div>
368
- <div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a6e4e3eeca9d25fb5eab496faeb6264c3"> 338</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>
369
- <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;{</div>
370
- <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> res(0);</div>
371
- <div class="line"><a name="l00341"></a><span class="lineno"> 341</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>
372
- <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; {</div>
373
- <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <a class="code" href="classSVF_1_1AccessPath.html#a4f482ca73cc6e7b8d946651e2b2ea2ae">AccessPath::IdxOperandPair</a> IdxVarAndType =</div>
374
- <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>()[i];</div>
375
- <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a> *value =</div>
376
- <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>()[i].first-&gt;getValue();</div>
377
- <div class="line"><a name="l00347"></a><span class="lineno"> 347</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>
378
- <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="comment">// idxLb/Ub is the flattened offset generated by the current OffsetVarAndGepTypePair</span></div>
379
- <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> idxLb;</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> idxUb;</div>
381
- <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="comment">// get lb and ub of the index value</span></div>
382
- <div class="line"><a name="l00352"></a><span class="lineno"> 352</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>
383
- <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; idxLb = idxUb = constInt-&gt;getSExtValue();</div>
384
- <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">else</span></div>
385
- <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div>
386
- <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> idxItv = _es[_svfir-&gt;getValueNode(value)];</div>
387
- <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">if</span> (idxItv.<a class="code" href="classSVF_1_1IntervalValue.html#af8be90fc1b61103187908dce4ba68001">isBottom</a>())</div>
388
- <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; idxLb = idxUb = 0;</div>
389
- <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">else</span></div>
390
- <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div>
391
- <div class="line"><a name="l00361"></a><span class="lineno"> 361</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>
392
- <div class="line"><a name="l00362"></a><span class="lineno"> 362</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>
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; }</div>
395
- <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="comment">// for pointer type, flattened index = elemNum * idx</span></div>
396
- <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a> *pty = SVFUtil::dyn_cast&lt;SVFPointerType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
397
- <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; {</div>
398
- <div class="line"><a name="l00368"></a><span class="lineno"> 368</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>(pty-&gt;getPtrElementType());</div>
399
- <div class="line"><a name="l00369"></a><span class="lineno"> 369</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>
400
- <div class="line"><a name="l00370"></a><span class="lineno"> 370</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>
401
- <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; }</div>
402
- <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="comment">// for array or struct, get flattened index from SymbolTable Info</span></div>
403
- <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">else</span></div>
404
- <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; {</div>
405
- <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a429c3000ee2ac45119b8c241aa06762c">Options::ModelArrays</a>())</div>
406
- <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; {</div>
407
- <div class="line"><a name="l00377"></a><span class="lineno"> 377</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>
408
- <div class="line"><a name="l00378"></a><span class="lineno"> 378</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>
409
- <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; -&gt;<a class="code" href="classSVF_1_1StInfo.html#a55e5fd85f232c1867c5c6a73646d53eb">getFlattenedElemIdxVec</a>();</div>
410
- <div class="line"><a name="l00380"></a><span class="lineno"> 380</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>
411
- <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; {</div>
412
- <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; idxLb = idxUb = 0;</div>
413
- <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; }</div>
414
- <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">else</span></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; {</div>
323
+ <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; elemByteSize = arrOperandType-&gt;getTypeOfElement()-&gt;getByteSize();</div>
324
+ <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; }</div>
325
+ <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a>* ptrOperandType = SVFUtil::dyn_cast&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; elemByteSize = ptrOperandType-&gt;getPtrElementType()-&gt;getByteSize();</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; <span class="keywordflow">else</span></div>
330
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;idxOperandType must be ArrType or PtrType&quot;</span>);</div>
331
+ <div class="line"><a name="l00293"></a><span class="lineno"> 293</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>
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; <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>
334
+ <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; : <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
335
+ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(lb, lb);</div>
336
+ <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div>
337
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">else</span></div>
338
+ <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; {</div>
339
+ <div class="line"><a name="l00301"></a><span class="lineno"> 301</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>
340
+ <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> idxVal = _es[idx];</div>
341
+ <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">if</span> (idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#af8be90fc1b61103187908dce4ba68001">isBottom</a>())</div>
342
+ <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; {</div>
343
+ <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
344
+ <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div>
345
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">else</span></div>
346
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div>
347
+ <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> ub = (double)<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#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>
349
+ <div class="line"><a name="l00311"></a><span class="lineno"> 311</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>
350
+ <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; ((<span class="keywordtype">double</span>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() /</div>
351
+ <div class="line"><a name="l00313"></a><span class="lineno"> 313</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>
352
+ <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(lb, ub);</div>
353
+ <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div>
354
+ <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</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; <span class="comment">// Process struct subtype by calculating the byte offset from beginning to the field of struct</span></div>
357
+ <div class="line"><a name="l00319"></a><span class="lineno"> 319</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>
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; 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>
360
+ <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; idxOperandVar, structOperandType));</div>
361
+ <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div>
362
+ <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">else</span></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; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;gep type pair only support arr/ptr/struct&quot;</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="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">return</span> res; <span class="comment">// Return the resulting byte offset as an IntervalValue.</span></div>
368
+ <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;}</div>
369
+ <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; </div>
370
+ <div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a6e4e3eeca9d25fb5eab496faeb6264c3"> 340</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>
371
+ <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;{</div>
372
+ <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">if</span> (gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#ab6f37c073e4755c4b8bb3ed6365687f4">isConstantOffset</a>())</div>
373
+ <div class="line"><a name="l00343"></a><span class="lineno"> 343</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>
374
+ <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> res(0);</div>
375
+ <div class="line"><a name="l00345"></a><span class="lineno"> 345</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>
376
+ <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; {</div>
377
+ <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="classSVF_1_1AccessPath.html#a4f482ca73cc6e7b8d946651e2b2ea2ae">AccessPath::IdxOperandPair</a> IdxVarAndType =</div>
378
+ <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>()[i];</div>
379
+ <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a> *value =</div>
380
+ <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>()[i].first-&gt;getValue();</div>
381
+ <div class="line"><a name="l00351"></a><span class="lineno"> 351</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>
382
+ <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="comment">// idxLb/Ub is the flattened offset generated by the current OffsetVarAndGepTypePair</span></div>
383
+ <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> idxLb;</div>
384
+ <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> idxUb;</div>
385
+ <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="comment">// get lb and ub of the index value</span></div>
386
+ <div class="line"><a name="l00356"></a><span class="lineno"> 356</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>
387
+ <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; idxLb = idxUb = constInt-&gt;getSExtValue();</div>
388
+ <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">else</span></div>
389
+ <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; {</div>
390
+ <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> idxItv = _es[_svfir-&gt;getValueNode(value)];</div>
391
+ <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">if</span> (idxItv.<a class="code" href="classSVF_1_1IntervalValue.html#af8be90fc1b61103187908dce4ba68001">isBottom</a>())</div>
392
+ <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; idxLb = idxUb = 0;</div>
393
+ <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">else</span></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; 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>
396
+ <div class="line"><a name="l00366"></a><span class="lineno"> 366</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>
397
+ <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; }</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; <span class="comment">// for pointer type, flattened index = elemNum * idx</span></div>
400
+ <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFPointerType.html">SVFPointerType</a> *pty = SVFUtil::dyn_cast&lt;SVFPointerType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
401
+ <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; {</div>
402
+ <div class="line"><a name="l00372"></a><span class="lineno"> 372</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>(pty-&gt;getPtrElementType());</div>
403
+ <div class="line"><a name="l00373"></a><span class="lineno"> 373</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>
404
+ <div class="line"><a name="l00374"></a><span class="lineno"> 374</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>
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="comment">// for array or struct, get flattened index from SymbolTable Info</span></div>
407
+ <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">else</span></div>
408
+ <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; {</div>
409
+ <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a429c3000ee2ac45119b8c241aa06762c">Options::ModelArrays</a>())</div>
410
+ <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; {</div>
411
+ <div class="line"><a name="l00381"></a><span class="lineno"> 381</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>
412
+ <div class="line"><a name="l00382"></a><span class="lineno"> 382</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>
413
+ <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; -&gt;<a class="code" href="classSVF_1_1StInfo.html#a55e5fd85f232c1867c5c6a73646d53eb">getFlattenedElemIdxVec</a>();</div>
414
+ <div class="line"><a name="l00384"></a><span class="lineno"> 384</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>
415
415
  <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; {</div>
416
- <div class="line"><a name="l00386"></a><span class="lineno"> 386</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>
417
- <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>, idxLb);</div>
418
- <div class="line"><a name="l00388"></a><span class="lineno"> 388</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>
419
- <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>, idxUb);</div>
420
- <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }</div>
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; <span class="keywordflow">else</span></div>
423
- <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; idxLb = idxUb = 0;</div>
424
- <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; }</div>
425
- <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(idxLb, idxUb);</div>
426
- <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</div>
427
- <div class="line"><a name="l00397"></a><span class="lineno"> 397</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>
428
- <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">return</span> res;</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; </div>
431
- <div class="line"><a name="l00406"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a61d288c8dc621a0578faa5ff784f4b6e"> 406</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>
432
- <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;{</div>
433
- <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; </div>
434
- <div class="line"><a name="l00409"></a><span class="lineno"> 409</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>
435
- <div class="line"><a name="l00410"></a><span class="lineno"> 410</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>
436
- <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; {</div>
437
- <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="comment">// TODO:miss floatpointerty, voidty, labelty, matadataty</span></div>
438
- <div class="line"><a name="l00413"></a><span class="lineno"> 413</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>
439
- <div class="line"><a name="l00414"></a><span class="lineno"> 414</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>
440
- <div class="line"><a name="l00415"></a><span class="lineno"> 415</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>
441
- <div class="line"><a name="l00416"></a><span class="lineno"> 416</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>
442
- <div class="line"><a name="l00417"></a><span class="lineno"> 417</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>
443
- <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="comment">// continue with null expression</span></div>
444
- <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; _es[varId] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
445
- <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">else</span></div>
446
- <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; {</div>
447
- <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; </div>
448
- <div class="line"><a name="l00423"></a><span class="lineno"> 423</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>
449
- <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;what other types we have&quot;</span>);</div>
450
- <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</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; <span class="keywordflow">else</span></div>
453
- <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; {</div>
454
- <div class="line"><a name="l00429"></a><span class="lineno"> 429</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>
455
- <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; _es[varId] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
456
- <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">else</span></div>
457
- <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; _es[varId] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
458
- <div class="line"><a name="l00433"></a><span class="lineno"> 433</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>
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;}</div>
461
- <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; </div>
462
- <div class="line"><a name="l00442"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a646fa58f61db6abd98d0a04af1fab88d"> 442</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>
463
- <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;{</div>
464
- <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; </div>
465
- <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">if</span> (objVar-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>())</div>
466
- <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; {</div>
467
- <div class="line"><a name="l00447"></a><span class="lineno"> 447</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>
468
- <div class="line"><a name="l00449"></a><span class="lineno"> 449</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>
469
- <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; {</div>
470
- <div class="line"><a name="l00451"></a><span class="lineno"> 451</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>
471
- <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; {</div>
472
- <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordtype">double</span> numeral = (double)consInt-&gt;getSExtValue();</div>
473
- <div class="line"><a name="l00454"></a><span class="lineno"> 454</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>
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">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>
476
- <div class="line"><a name="l00457"></a><span class="lineno"> 457</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>
477
- <div class="line"><a name="l00458"></a><span class="lineno"> 458</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>
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>(0, 0);</div>
479
- <div class="line"><a name="l00460"></a><span class="lineno"> 460</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>
480
- <div class="line"><a name="l00461"></a><span class="lineno"> 461</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>
481
- <div class="line"><a name="l00462"></a><span class="lineno"> 462</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>
482
- <div class="line"><a name="l00463"></a><span class="lineno"> 463</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>
483
- <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">else</span></div>
484
- <div class="line"><a name="l00465"></a><span class="lineno"> 465</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>
485
- <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div>
486
- <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">else</span></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>.<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>
488
- <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; }</div>
489
- <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">else</span></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>.<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>
491
- <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;}</div>
492
- <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; </div>
493
- <div class="line"><a name="l00474"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#af5d05c5316127cfe8d975a3a0a23798b"> 474</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>
494
- <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;{</div>
495
- <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(varId) || _es.inVarToAddrsTable(varId)) <span class="keywordflow">return</span>;</div>
496
- <div class="line"><a name="l00477"></a><span class="lineno"> 477</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>
497
- <div class="line"><a name="l00478"></a><span class="lineno"> 478</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>
498
- <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="comment">// write objvar into cache instead of exestate</span></div>
499
- <div class="line"><a name="l00480"></a><span class="lineno"> 480</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>
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; initObjVar(objVar, varId);</div>
502
- <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">return</span>;</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; <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>
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; initValVar(valVar, 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></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;}</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; </div>
517
- <div class="line"><a name="l00498"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#af7f42ee51b03b1aaaee18f10eec0c2b9"> 498</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>
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; initSVFVar(addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>());</div>
520
- <div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>()))</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"> 503</span>&#160; <span class="comment">// if addr RHS is integerType(i8 i32 etc), value should be limited.</span></div>
523
- <div class="line"><a name="l00504"></a><span class="lineno"> 504</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>
524
- <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; {</div>
525
- <div class="line"><a name="l00506"></a><span class="lineno"> 506</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>
526
- <div class="line"><a name="l00507"></a><span class="lineno"> 507</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>
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; <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>
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; }</div>
531
- <div class="line"><a name="l00512"></a><span class="lineno"> 512</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>
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>.<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>
534
- <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>());</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></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; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;not number or virtual addrs?&quot;</span>);</div>
416
+ <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; idxLb = idxUb = 0;</div>
417
+ <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div>
418
+ <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">else</span></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 = <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>
421
+ <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>, idxLb);</div>
422
+ <div class="line"><a name="l00392"></a><span class="lineno"> 392</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>
423
+ <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>, idxUb);</div>
424
+ <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; }</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; <span class="keywordflow">else</span></div>
427
+ <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; idxLb = idxUb = 0;</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; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(idxLb, idxUb);</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#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>
432
+ <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">return</span> res;</div>
433
+ <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;}</div>
434
+ <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; </div>
435
+ <div class="line"><a name="l00410"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a61d288c8dc621a0578faa5ff784f4b6e"> 410</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>
436
+ <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;{</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; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> *svfir = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>();</div>
439
+ <div class="line"><a name="l00414"></a><span class="lineno"> 414</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>
440
+ <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; {</div>
441
+ <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="comment">// TODO:miss floatpointerty, voidty, labelty, matadataty</span></div>
442
+ <div class="line"><a name="l00417"></a><span class="lineno"> 417</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>
443
+ <div class="line"><a name="l00418"></a><span class="lineno"> 418</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>
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#a333e01a9c431c8f53bd2fc597bd5c40ca01274de074f51be05f2ad6b2d0ca9dd6">SVFType::SVFFunctionTy</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#a333e01a9c431c8f53bd2fc597bd5c40ca77e52ad9bebff282f40383f468fe856d">SVFType::SVFStructTy</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#a333e01a9c431c8f53bd2fc597bd5c40cac8c846ff3208d07a4a39c7a21433c6a5">SVFType::SVFArrayTy</a>)</div>
447
+ <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="comment">// continue with null expression</span></div>
448
+ <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; _es[varId] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
449
+ <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">else</span></div>
450
+ <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; {</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; <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>
453
+ <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;what other types we have&quot;</span>);</div>
454
+ <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</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; <span class="keywordflow">else</span></div>
457
+ <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; {</div>
458
+ <div class="line"><a name="l00433"></a><span class="lineno"> 433</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>
459
+ <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; _es[varId] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
460
+ <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">else</span></div>
461
+ <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; _es[varId] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
462
+ <div class="line"><a name="l00437"></a><span class="lineno"> 437</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>
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;}</div>
465
+ <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; </div>
466
+ <div class="line"><a name="l00446"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a646fa58f61db6abd98d0a04af1fab88d"> 446</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>
467
+ <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;{</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; <span class="keywordflow">if</span> (objVar-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>())</div>
470
+ <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; {</div>
471
+ <div class="line"><a name="l00451"></a><span class="lineno"> 451</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>
472
+ <div class="line"><a name="l00453"></a><span class="lineno"> 453</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>
473
+ <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; {</div>
474
+ <div class="line"><a name="l00455"></a><span class="lineno"> 455</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>
475
+ <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; {</div>
476
+ <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordtype">double</span> numeral = (double)consInt-&gt;getSExtValue();</div>
477
+ <div class="line"><a name="l00458"></a><span class="lineno"> 458</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>
478
+ <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; }</div>
479
+ <div class="line"><a name="l00460"></a><span class="lineno"> 460</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>
480
+ <div class="line"><a name="l00461"></a><span class="lineno"> 461</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>
481
+ <div class="line"><a name="l00462"></a><span class="lineno"> 462</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>
482
+ <div class="line"><a name="l00463"></a><span class="lineno"> 463</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>
483
+ <div class="line"><a name="l00464"></a><span class="lineno"> 464</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>
484
+ <div class="line"><a name="l00465"></a><span class="lineno"> 465</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>
485
+ <div class="line"><a name="l00466"></a><span class="lineno"> 466</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>
486
+ <div class="line"><a name="l00467"></a><span class="lineno"> 467</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>
487
+ <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">else</span></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#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
489
+ <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; }</div>
490
+ <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">else</span></div>
491
+ <div class="line"><a name="l00472"></a><span class="lineno"> 472</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>
492
+ <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }</div>
493
+ <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">else</span></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>.<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>
495
+ <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;}</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"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#af5d05c5316127cfe8d975a3a0a23798b"> 478</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>
498
+ <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;{</div>
499
+ <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(varId) || _es.inVarToAddrsTable(varId)) <span class="keywordflow">return</span>;</div>
500
+ <div class="line"><a name="l00481"></a><span class="lineno"> 481</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>
501
+ <div class="line"><a name="l00482"></a><span class="lineno"> 482</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>
502
+ <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="comment">// write objvar into cache instead of exestate</span></div>
503
+ <div class="line"><a name="l00484"></a><span class="lineno"> 484</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>
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"> 486</span>&#160; initObjVar(objVar, varId);</div>
506
+ <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">return</span>;</div>
507
+ <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div>
508
+ <div class="line"><a name="l00489"></a><span class="lineno"> 489</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>
509
+ <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; {</div>
510
+ <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; initValVar(valVar, varId);</div>
511
+ <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">return</span>;</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; <span class="keywordflow">else</span></div>
514
+ <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div>
515
+ <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; initValVar(valVar, varId);</div>
516
+ <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">return</span>;</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;}</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"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#af7f42ee51b03b1aaaee18f10eec0c2b9"> 502</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>
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; initSVFVar(addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>());</div>
524
+ <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(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; {</div>
526
+ <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="comment">// if addr RHS is integerType(i8 i32 etc), value should be limited.</span></div>
527
+ <div class="line"><a name="l00508"></a><span class="lineno"> 508</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>
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"> 510</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>
530
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</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>
531
+ <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div>
532
+ <div class="line"><a name="l00513"></a><span class="lineno"> 513</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>
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; }</div>
535
+ <div class="line"><a name="l00516"></a><span class="lineno"> 516</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>
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>.<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>
538
+ <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>());</div>
539
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;}</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"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a449ee8f244120866037c7f6d2ee5fc13"> 524</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>
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="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> op0 = binary-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(0);</div>
546
- <div class="line"><a name="l00527"></a><span class="lineno"> 527</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>
547
- <div class="line"><a name="l00528"></a><span class="lineno"> 528</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>
548
- <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">if</span> (!inVarToValTable(op0)) _es[op0] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
549
- <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">if</span> (!inVarToValTable(op1)) _es[op1] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
550
- <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(op0) &amp;&amp; inVarToValTable(op1))</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; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> &amp;lhs = _es[op0], &amp;rhs = _es[op1];</div>
553
- <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> resVal;</div>
554
- <div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">switch</span> (binary-&gt;<a class="code" href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f">getOpcode</a>())</div>
555
- <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; {</div>
556
- <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a06926877b6c25931a409224497753862">BinaryOPStmt::Add</a>:</div>
557
- <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a97c70ced12e0f1c5e3c3708b13727e8e">BinaryOPStmt::FAdd</a>:</div>
558
- <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; resVal = (lhs + rhs);</div>
559
- <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">break</span>;</div>
560
- <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a758382a3b40e116175ca321fa4449d7f">BinaryOPStmt::Sub</a>:</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#a2f647224242dd87099104e0fdc994de6a05348a0e3f232ac552bb3ca56525c448">BinaryOPStmt::FSub</a>:</div>
562
- <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; resVal = (lhs - rhs);</div>
540
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">else</span></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; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;not number or virtual addrs?&quot;</span>);</div>
543
+ <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; }</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"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a449ee8f244120866037c7f6d2ee5fc13"> 528</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>
548
+ <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;{</div>
549
+ <div class="line"><a name="l00530"></a><span class="lineno"> 530</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>
550
+ <div class="line"><a name="l00531"></a><span class="lineno"> 531</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>
551
+ <div class="line"><a name="l00532"></a><span class="lineno"> 532</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>
552
+ <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">if</span> (!inVarToValTable(op0)) _es[op0] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
553
+ <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">if</span> (!inVarToValTable(op1)) _es[op1] = <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(op0) &amp;&amp; inVarToValTable(op1))</div>
555
+ <div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; {</div>
556
+ <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> &amp;lhs = _es[op0], &amp;rhs = _es[op1];</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> resVal;</div>
558
+ <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">switch</span> (binary-&gt;<a class="code" href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f">getOpcode</a>())</div>
559
+ <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; {</div>
560
+ <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a06926877b6c25931a409224497753862">BinaryOPStmt::Add</a>:</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#a2f647224242dd87099104e0fdc994de6a97c70ced12e0f1c5e3c3708b13727e8e">BinaryOPStmt::FAdd</a>:</div>
562
+ <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; resVal = (lhs + rhs);</div>
563
563
  <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">break</span>;</div>
564
- <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a787e5771d6e70f3cbec3e2a33f5a4e8a">BinaryOPStmt::Mul</a>:</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#a2f647224242dd87099104e0fdc994de6a22a047e74227056ef3340628fae80198">BinaryOPStmt::FMul</a>:</div>
566
- <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; resVal = (lhs * rhs);</div>
564
+ <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a758382a3b40e116175ca321fa4449d7f">BinaryOPStmt::Sub</a>:</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#a2f647224242dd87099104e0fdc994de6a05348a0e3f232ac552bb3ca56525c448">BinaryOPStmt::FSub</a>:</div>
566
+ <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; resVal = (lhs - rhs);</div>
567
567
  <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">break</span>;</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#a2f647224242dd87099104e0fdc994de6a7a4ce4e97992d92ac044456e66821552">BinaryOPStmt::SDiv</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#a2f647224242dd87099104e0fdc994de6a553540425a63724c8b7f2fd0ca25b567">BinaryOPStmt::FDiv</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#a2f647224242dd87099104e0fdc994de6ad2f8b02de2c62175d3341be92a925250">BinaryOPStmt::UDiv</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#a2f647224242dd87099104e0fdc994de6ad2db0456c9943dd75aa091cb19040448">BinaryOPStmt::SRem</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#a2f647224242dd87099104e0fdc994de6aafa66e75600b0098c4fa3304720cb7a6">BinaryOPStmt::FRem</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#a2f647224242dd87099104e0fdc994de6af7dba9dda5edcee046ca81fb184858bc">BinaryOPStmt::URem</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#a2f647224242dd87099104e0fdc994de6ac89b793572db14a3c018122cf9fc79d6">BinaryOPStmt::Xor</a>:</div>
579
- <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; resVal = (lhs ^ rhs);</div>
580
- <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">break</span>;</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#a2f647224242dd87099104e0fdc994de6a0df258a85e260bcb9534ae1b650e1856">BinaryOPStmt::And</a>:</div>
582
- <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; resVal = (lhs &amp; rhs);</div>
583
- <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordflow">break</span>;</div>
584
- <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a90745e5effc8b7ef43c693d1e4fa7dbe">BinaryOPStmt::Or</a>:</div>
585
- <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; resVal = (lhs | rhs);</div>
586
- <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">break</span>;</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#a2f647224242dd87099104e0fdc994de6ac988853383e1588cf568687848e73576">BinaryOPStmt::AShr</a>:</div>
588
- <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; resVal = (lhs &gt;&gt; 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#a2f647224242dd87099104e0fdc994de6a193780e40cee5123c543b6f739b3b46b">BinaryOPStmt::Shl</a>:</div>
591
- <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; resVal = (lhs &lt;&lt; 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#a2f647224242dd87099104e0fdc994de6a0bf768bb67e7f6f5ee6302bb6dd71da1">BinaryOPStmt::LShr</a>:</div>
594
- <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; resVal = (lhs &gt;&gt; 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">default</span>:</div>
597
- <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; {</div>
598
- <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;undefined binary: &quot;</span>);</div>
599
- <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; }</div>
600
- <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; }</div>
601
- <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; _es[res] = resVal;</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;}</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"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#aac5cc8767eb750bf121f1897788dee24"> 586</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>
606
- <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;{</div>
607
- <div class="line"><a name="l00588"></a><span class="lineno"> 588</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>
608
- <div class="line"><a name="l00589"></a><span class="lineno"> 589</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>
609
- <div class="line"><a name="l00590"></a><span class="lineno"> 590</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>
610
- <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(op0) &amp;&amp; inVarToValTable(op1))</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="classSVF_1_1IntervalValue.html">IntervalValue</a> resVal;</div>
613
- <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> &amp;lhs = _es[op0], &amp;rhs = _es[op1];</div>
614
- <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keyword">auto</span> predicate = cmp-&gt;<a class="code" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632">getPredicate</a>();</div>
615
- <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">switch</span> (predicate)</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; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acafa5a0ab60aff74a8d653c3f9fac04936">CmpStmt::ICMP_EQ</a>:</div>
618
- <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca900bbc9c7824294c3a69c2cb006c27ee">CmpStmt::FCMP_OEQ</a>:</div>
619
- <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca2793f23e72e3ff432bf193adf0f1b021">CmpStmt::FCMP_UEQ</a>:</div>
620
- <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; resVal = (lhs == rhs);</div>
621
- <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">break</span>;</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#ad8e01744bfd98d584661025ce59338aca6eef834451ec753add639be49c51f03f">CmpStmt::ICMP_NE</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#ad8e01744bfd98d584661025ce59338aca2a3ce0c02931984d92d70356efc49193">CmpStmt::FCMP_ONE</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#ad8e01744bfd98d584661025ce59338acad23a87cb6f2b3b2486a9a1277b491c09">CmpStmt::FCMP_UNE</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#ad8e01744bfd98d584661025ce59338aca8d59d9d7f39bb9c8b1e3dcebe0c5dc48">CmpStmt::ICMP_UGT</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#ad8e01744bfd98d584661025ce59338aca229d105d0841dc895811b29af62a91ee">CmpStmt::ICMP_SGT</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#ad8e01744bfd98d584661025ce59338aca6121702881c763c3c8cd3e30dedc7486">CmpStmt::FCMP_OGT</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#ad8e01744bfd98d584661025ce59338aca3873c41e060b95cb37eac587402b597c">CmpStmt::FCMP_UGT</a>:</div>
631
- <div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; resVal = (lhs &gt; rhs);</div>
632
- <div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">break</span>;</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#ad8e01744bfd98d584661025ce59338aca3428808abe683bfc6bb0267077cdb128">CmpStmt::ICMP_UGE</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#ad8e01744bfd98d584661025ce59338acac5a87d53b1ad255cec18b3784cd81f80">CmpStmt::ICMP_SGE</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#ad8e01744bfd98d584661025ce59338aca5c4576ce636e323cbc3aa322480c5d2c">CmpStmt::FCMP_OGE</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#ad8e01744bfd98d584661025ce59338acac0e2d9db5453eb8be7543fb4315003da">CmpStmt::FCMP_UGE</a>:</div>
637
- <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; resVal = (lhs &gt;= 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#ad8e01744bfd98d584661025ce59338aca7833b647068883840c9bb438103e736d">CmpStmt::ICMP_ULT</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#ad8e01744bfd98d584661025ce59338aca88d74bf66465f4fdd221db0c11d62927">CmpStmt::ICMP_SLT</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#ad8e01744bfd98d584661025ce59338aca5e3cf3105b8f13da66719856579956fa">CmpStmt::FCMP_OLT</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#ad8e01744bfd98d584661025ce59338acaa6b852204a4d0758ebd632d8a88b966d">CmpStmt::FCMP_ULT</a>:</div>
643
- <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; resVal = (lhs &lt; 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#ad8e01744bfd98d584661025ce59338aca56a20e408f9639234e4a11036764a38f">CmpStmt::ICMP_ULE</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#ad8e01744bfd98d584661025ce59338acaeeae52f8d195815edfb8c85037d246d6">CmpStmt::ICMP_SLE</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#ad8e01744bfd98d584661025ce59338aca9dd165c6da06811ffc8c2e53b30ab32d">CmpStmt::FCMP_OLE</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#ad8e01744bfd98d584661025ce59338aca8149cba2e9e265892f02bbd4a35fe6fb">CmpStmt::FCMP_ULE</a>:</div>
649
- <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; resVal = (lhs &lt;= 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#ad8e01744bfd98d584661025ce59338acaa100cf99398f6118d332191380574c06">CmpStmt::FCMP_FALSE</a>:</div>
652
- <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
653
- <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">break</span>;</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#ad8e01744bfd98d584661025ce59338aca7234c9a242034a71d0bdcb54aeec6da7">CmpStmt::FCMP_TRUE</a>:</div>
655
- <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 1);</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">default</span>:</div>
658
- <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; {</div>
659
- <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;undefined compare: &quot;</span>);</div>
660
- <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; }</div>
661
- <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; }</div>
662
- <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; _es[res] = resVal;</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(op0) &amp;&amp; inVarToAddrsTable(op1))</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; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> resVal;</div>
667
- <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;lhs = getAddrs(op0), &amp;rhs = getAddrs(op1);</div>
668
- <div class="line"><a name="l00649"></a><span class="lineno"> 649</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>
669
- <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keyword">auto</span> predicate = cmp-&gt;<a class="code" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632">getPredicate</a>();</div>
670
- <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">switch</span> (predicate)</div>
671
- <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; {</div>
672
- <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acafa5a0ab60aff74a8d653c3f9fac04936">CmpStmt::ICMP_EQ</a>:</div>
673
- <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca900bbc9c7824294c3a69c2cb006c27ee">CmpStmt::FCMP_OEQ</a>:</div>
674
- <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca2793f23e72e3ff432bf193adf0f1b021">CmpStmt::FCMP_UEQ</a>:</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#a2f647224242dd87099104e0fdc994de6a787e5771d6e70f3cbec3e2a33f5a4e8a">BinaryOPStmt::Mul</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#a2f647224242dd87099104e0fdc994de6a22a047e74227056ef3340628fae80198">BinaryOPStmt::FMul</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#a2f647224242dd87099104e0fdc994de6a7a4ce4e97992d92ac044456e66821552">BinaryOPStmt::SDiv</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#a2f647224242dd87099104e0fdc994de6a553540425a63724c8b7f2fd0ca25b567">BinaryOPStmt::FDiv</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#a2f647224242dd87099104e0fdc994de6ad2f8b02de2c62175d3341be92a925250">BinaryOPStmt::UDiv</a>:</div>
575
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; resVal = (lhs / rhs);</div>
576
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">break</span>;</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#a2f647224242dd87099104e0fdc994de6ad2db0456c9943dd75aa091cb19040448">BinaryOPStmt::SRem</a>:</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#a2f647224242dd87099104e0fdc994de6aafa66e75600b0098c4fa3304720cb7a6">BinaryOPStmt::FRem</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#a2f647224242dd87099104e0fdc994de6af7dba9dda5edcee046ca81fb184858bc">BinaryOPStmt::URem</a>:</div>
580
+ <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; resVal = (lhs % rhs);</div>
581
+ <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">break</span>;</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#a2f647224242dd87099104e0fdc994de6ac89b793572db14a3c018122cf9fc79d6">BinaryOPStmt::Xor</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#a2f647224242dd87099104e0fdc994de6a0df258a85e260bcb9534ae1b650e1856">BinaryOPStmt::And</a>:</div>
586
+ <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; resVal = (lhs &amp; rhs);</div>
587
+ <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">break</span>;</div>
588
+ <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a90745e5effc8b7ef43c693d1e4fa7dbe">BinaryOPStmt::Or</a>:</div>
589
+ <div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; resVal = (lhs | rhs);</div>
590
+ <div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">break</span>;</div>
591
+ <div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ac988853383e1588cf568687848e73576">BinaryOPStmt::AShr</a>:</div>
592
+ <div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; resVal = (lhs &gt;&gt; rhs);</div>
593
+ <div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">break</span>;</div>
594
+ <div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a193780e40cee5123c543b6f739b3b46b">BinaryOPStmt::Shl</a>:</div>
595
+ <div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; resVal = (lhs &lt;&lt; rhs);</div>
596
+ <div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">break</span>;</div>
597
+ <div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a0bf768bb67e7f6f5ee6302bb6dd71da1">BinaryOPStmt::LShr</a>:</div>
598
+ <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; resVal = (lhs &gt;&gt; rhs);</div>
599
+ <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">break</span>;</div>
600
+ <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">default</span>:</div>
601
+ <div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; {</div>
602
+ <div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;undefined binary: &quot;</span>);</div>
603
+ <div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; }</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; _es[res] = resVal;</div>
606
+ <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; }</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"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#aac5cc8767eb750bf121f1897788dee24"> 590</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>
610
+ <div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;{</div>
611
+ <div class="line"><a name="l00592"></a><span class="lineno"> 592</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>
612
+ <div class="line"><a name="l00593"></a><span class="lineno"> 593</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>
613
+ <div class="line"><a name="l00594"></a><span class="lineno"> 594</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>
614
+ <div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(op0) &amp;&amp; inVarToValTable(op1))</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; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> resVal;</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> &amp;lhs = _es[op0], &amp;rhs = _es[op1];</div>
618
+ <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keyword">auto</span> predicate = cmp-&gt;<a class="code" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632">getPredicate</a>();</div>
619
+ <div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">switch</span> (predicate)</div>
620
+ <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; {</div>
621
+ <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acafa5a0ab60aff74a8d653c3f9fac04936">CmpStmt::ICMP_EQ</a>:</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#ad8e01744bfd98d584661025ce59338aca900bbc9c7824294c3a69c2cb006c27ee">CmpStmt::FCMP_OEQ</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#ad8e01744bfd98d584661025ce59338aca2793f23e72e3ff432bf193adf0f1b021">CmpStmt::FCMP_UEQ</a>:</div>
624
+ <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; resVal = (lhs == rhs);</div>
625
+ <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">break</span>;</div>
626
+ <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca6eef834451ec753add639be49c51f03f">CmpStmt::ICMP_NE</a>:</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#ad8e01744bfd98d584661025ce59338aca2a3ce0c02931984d92d70356efc49193">CmpStmt::FCMP_ONE</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#ad8e01744bfd98d584661025ce59338acad23a87cb6f2b3b2486a9a1277b491c09">CmpStmt::FCMP_UNE</a>:</div>
629
+ <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; resVal = (lhs != rhs);</div>
630
+ <div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">break</span>;</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#ad8e01744bfd98d584661025ce59338aca8d59d9d7f39bb9c8b1e3dcebe0c5dc48">CmpStmt::ICMP_UGT</a>:</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#ad8e01744bfd98d584661025ce59338aca229d105d0841dc895811b29af62a91ee">CmpStmt::ICMP_SGT</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#ad8e01744bfd98d584661025ce59338aca6121702881c763c3c8cd3e30dedc7486">CmpStmt::FCMP_OGT</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#ad8e01744bfd98d584661025ce59338aca3873c41e060b95cb37eac587402b597c">CmpStmt::FCMP_UGT</a>:</div>
635
+ <div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; resVal = (lhs &gt; rhs);</div>
636
+ <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">break</span>;</div>
637
+ <div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca3428808abe683bfc6bb0267077cdb128">CmpStmt::ICMP_UGE</a>:</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#ad8e01744bfd98d584661025ce59338acac5a87d53b1ad255cec18b3784cd81f80">CmpStmt::ICMP_SGE</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#ad8e01744bfd98d584661025ce59338aca5c4576ce636e323cbc3aa322480c5d2c">CmpStmt::FCMP_OGE</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#ad8e01744bfd98d584661025ce59338acac0e2d9db5453eb8be7543fb4315003da">CmpStmt::FCMP_UGE</a>:</div>
641
+ <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; resVal = (lhs &gt;= rhs);</div>
642
+ <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">break</span>;</div>
643
+ <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca7833b647068883840c9bb438103e736d">CmpStmt::ICMP_ULT</a>:</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#ad8e01744bfd98d584661025ce59338aca88d74bf66465f4fdd221db0c11d62927">CmpStmt::ICMP_SLT</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#ad8e01744bfd98d584661025ce59338aca5e3cf3105b8f13da66719856579956fa">CmpStmt::FCMP_OLT</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#ad8e01744bfd98d584661025ce59338acaa6b852204a4d0758ebd632d8a88b966d">CmpStmt::FCMP_ULT</a>:</div>
647
+ <div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; resVal = (lhs &lt; rhs);</div>
648
+ <div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">break</span>;</div>
649
+ <div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca56a20e408f9639234e4a11036764a38f">CmpStmt::ICMP_ULE</a>:</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#ad8e01744bfd98d584661025ce59338acaeeae52f8d195815edfb8c85037d246d6">CmpStmt::ICMP_SLE</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#ad8e01744bfd98d584661025ce59338aca9dd165c6da06811ffc8c2e53b30ab32d">CmpStmt::FCMP_OLE</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#ad8e01744bfd98d584661025ce59338aca8149cba2e9e265892f02bbd4a35fe6fb">CmpStmt::FCMP_ULE</a>:</div>
653
+ <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; resVal = (lhs &lt;= rhs);</div>
654
+ <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">break</span>;</div>
655
+ <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaa100cf99398f6118d332191380574c06">CmpStmt::FCMP_FALSE</a>:</div>
656
+ <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
657
+ <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">break</span>;</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#ad8e01744bfd98d584661025ce59338aca7234c9a242034a71d0bdcb54aeec6da7">CmpStmt::FCMP_TRUE</a>:</div>
659
+ <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 1);</div>
660
+ <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">break</span>;</div>
661
+ <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">default</span>:</div>
662
+ <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; {</div>
663
+ <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;undefined compare: &quot;</span>);</div>
664
+ <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; }</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; _es[res] = resVal;</div>
667
+ <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div>
668
+ <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(op0) &amp;&amp; inVarToAddrsTable(op1))</div>
669
+ <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; {</div>
670
+ <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> resVal;</div>
671
+ <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;lhs = getAddrs(op0), &amp;rhs = getAddrs(op1);</div>
672
+ <div class="line"><a name="l00653"></a><span class="lineno"> 653</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>
673
+ <div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keyword">auto</span> predicate = cmp-&gt;<a class="code" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632">getPredicate</a>();</div>
674
+ <div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">switch</span> (predicate)</div>
675
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">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.size() == 1)</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; 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>
679
- <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; }</div>
680
- <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">else</span></div>
676
+ <div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acafa5a0ab60aff74a8d653c3f9fac04936">CmpStmt::ICMP_EQ</a>:</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#ad8e01744bfd98d584661025ce59338aca900bbc9c7824294c3a69c2cb006c27ee">CmpStmt::FCMP_OEQ</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#ad8e01744bfd98d584661025ce59338aca2793f23e72e3ff432bf193adf0f1b021">CmpStmt::FCMP_UEQ</a>:</div>
679
+ <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; {</div>
680
+ <div class="line"><a name="l00661"></a><span class="lineno"> 661</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>
681
681
  <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; {</div>
682
- <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#a269a73753a7b495eb08bb0c9c0a58dc0">hasIntersect</a>(rhs))</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; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
685
- <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; }</div>
686
- <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">else</span></div>
682
+ <div class="line"><a name="l00663"></a><span class="lineno"> 663</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>
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">else</span></div>
685
+ <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; {</div>
686
+ <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#a269a73753a7b495eb08bb0c9c0a58dc0">hasIntersect</a>(rhs))</div>
687
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; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0);</div>
688
+ <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
689
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; }</div>
691
- <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">break</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; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca6eef834451ec753add639be49c51f03f">CmpStmt::ICMP_NE</a>:</div>
694
- <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca2a3ce0c02931984d92d70356efc49193">CmpStmt::FCMP_ONE</a>:</div>
695
- <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acad23a87cb6f2b3b2486a9a1277b491c09">CmpStmt::FCMP_UNE</a>:</div>
696
- <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; {</div>
697
- <div class="line"><a name="l00678"></a><span class="lineno"> 678</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>
698
- <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; {</div>
699
- <div class="line"><a name="l00680"></a><span class="lineno"> 680</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>
700
- <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; }</div>
701
- <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keywordflow">else</span></div>
690
+ <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">else</span></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; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0);</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; }</div>
695
+ <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">break</span>;</div>
696
+ <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; }</div>
697
+ <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca6eef834451ec753add639be49c51f03f">CmpStmt::ICMP_NE</a>:</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#ad8e01744bfd98d584661025ce59338aca2a3ce0c02931984d92d70356efc49193">CmpStmt::FCMP_ONE</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#ad8e01744bfd98d584661025ce59338acad23a87cb6f2b3b2486a9a1277b491c09">CmpStmt::FCMP_UNE</a>:</div>
700
+ <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; {</div>
701
+ <div class="line"><a name="l00682"></a><span class="lineno"> 682</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>
702
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">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#a269a73753a7b495eb08bb0c9c0a58dc0">hasIntersect</a>(rhs))</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; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
706
- <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; }</div>
707
- <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">else</span></div>
703
+ <div class="line"><a name="l00684"></a><span class="lineno"> 684</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>
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">else</span></div>
706
+ <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; {</div>
707
+ <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#a269a73753a7b495eb08bb0c9c0a58dc0">hasIntersect</a>(rhs))</div>
708
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; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1);</div>
709
+ <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
710
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; }</div>
712
- <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">break</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; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca8d59d9d7f39bb9c8b1e3dcebe0c5dc48">CmpStmt::ICMP_UGT</a>:</div>
715
- <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca229d105d0841dc895811b29af62a91ee">CmpStmt::ICMP_SGT</a>:</div>
716
- <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca6121702881c763c3c8cd3e30dedc7486">CmpStmt::FCMP_OGT</a>:</div>
717
- <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca3873c41e060b95cb37eac587402b597c">CmpStmt::FCMP_UGT</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">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.size() == 1)</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>(*lhs.<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>() &gt; *rhs.begin());</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; <span class="keywordflow">else</span></div>
711
+ <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">else</span></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; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1);</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; }</div>
716
+ <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordflow">break</span>;</div>
717
+ <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; }</div>
718
+ <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca8d59d9d7f39bb9c8b1e3dcebe0c5dc48">CmpStmt::ICMP_UGT</a>:</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#ad8e01744bfd98d584661025ce59338aca229d105d0841dc895811b29af62a91ee">CmpStmt::ICMP_SGT</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#ad8e01744bfd98d584661025ce59338aca6121702881c763c3c8cd3e30dedc7486">CmpStmt::FCMP_OGT</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#ad8e01744bfd98d584661025ce59338aca3873c41e060b95cb37eac587402b597c">CmpStmt::FCMP_UGT</a>:</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; <span class="keywordflow">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.size() == 1)</div>
724
724
  <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; {</div>
725
- <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
725
+ <div class="line"><a name="l00706"></a><span class="lineno"> 706</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>
726
726
  <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; }</div>
727
- <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">break</span>;</div>
728
- <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; }</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#ad8e01744bfd98d584661025ce59338aca3428808abe683bfc6bb0267077cdb128">CmpStmt::ICMP_UGE</a>:</div>
730
- <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acac5a87d53b1ad255cec18b3784cd81f80">CmpStmt::ICMP_SGE</a>:</div>
731
- <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca5c4576ce636e323cbc3aa322480c5d2c">CmpStmt::FCMP_OGE</a>:</div>
732
- <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acac0e2d9db5453eb8be7543fb4315003da">CmpStmt::FCMP_UGE</a>:</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">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.size() == 1)</div>
735
- <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; {</div>
736
- <div class="line"><a name="l00717"></a><span class="lineno"> 717</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>
737
- <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; }</div>
738
- <div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">else</span></div>
727
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">else</span></div>
728
+ <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; {</div>
729
+ <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</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">break</span>;</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; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca3428808abe683bfc6bb0267077cdb128">CmpStmt::ICMP_UGE</a>:</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#ad8e01744bfd98d584661025ce59338acac5a87d53b1ad255cec18b3784cd81f80">CmpStmt::ICMP_SGE</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#ad8e01744bfd98d584661025ce59338aca5c4576ce636e323cbc3aa322480c5d2c">CmpStmt::FCMP_OGE</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#ad8e01744bfd98d584661025ce59338acac0e2d9db5453eb8be7543fb4315003da">CmpStmt::FCMP_UGE</a>:</div>
737
+ <div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; {</div>
738
+ <div class="line"><a name="l00719"></a><span class="lineno"> 719</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>
739
739
  <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; {</div>
740
- <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
740
+ <div class="line"><a name="l00721"></a><span class="lineno"> 721</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>
741
741
  <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; }</div>
742
- <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">break</span>;</div>
743
- <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; }</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#ad8e01744bfd98d584661025ce59338aca7833b647068883840c9bb438103e736d">CmpStmt::ICMP_ULT</a>:</div>
745
- <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca88d74bf66465f4fdd221db0c11d62927">CmpStmt::ICMP_SLT</a>:</div>
746
- <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca5e3cf3105b8f13da66719856579956fa">CmpStmt::FCMP_OLT</a>:</div>
747
- <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaa6b852204a4d0758ebd632d8a88b966d">CmpStmt::FCMP_ULT</a>:</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">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.size() == 1)</div>
750
- <div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; {</div>
751
- <div class="line"><a name="l00732"></a><span class="lineno"> 732</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>
752
- <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; }</div>
753
- <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">else</span></div>
742
+ <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">else</span></div>
743
+ <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; {</div>
744
+ <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</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">break</span>;</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; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca7833b647068883840c9bb438103e736d">CmpStmt::ICMP_ULT</a>:</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#ad8e01744bfd98d584661025ce59338aca88d74bf66465f4fdd221db0c11d62927">CmpStmt::ICMP_SLT</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#ad8e01744bfd98d584661025ce59338aca5e3cf3105b8f13da66719856579956fa">CmpStmt::FCMP_OLT</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#ad8e01744bfd98d584661025ce59338acaa6b852204a4d0758ebd632d8a88b966d">CmpStmt::FCMP_ULT</a>:</div>
752
+ <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; {</div>
753
+ <div class="line"><a name="l00734"></a><span class="lineno"> 734</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>
754
754
  <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; {</div>
755
- <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
755
+ <div class="line"><a name="l00736"></a><span class="lineno"> 736</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>
756
756
  <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; }</div>
757
- <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">break</span>;</div>
758
- <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; }</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#ad8e01744bfd98d584661025ce59338aca56a20e408f9639234e4a11036764a38f">CmpStmt::ICMP_ULE</a>:</div>
760
- <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaeeae52f8d195815edfb8c85037d246d6">CmpStmt::ICMP_SLE</a>:</div>
761
- <div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca9dd165c6da06811ffc8c2e53b30ab32d">CmpStmt::FCMP_OLE</a>:</div>
762
- <div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca8149cba2e9e265892f02bbd4a35fe6fb">CmpStmt::FCMP_ULE</a>:</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">if</span> (lhs.<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.size() == 1)</div>
765
- <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; {</div>
766
- <div class="line"><a name="l00747"></a><span class="lineno"> 747</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>
767
- <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; }</div>
768
- <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keywordflow">else</span></div>
757
+ <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">else</span></div>
758
+ <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; {</div>
759
+ <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</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">break</span>;</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; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca56a20e408f9639234e4a11036764a38f">CmpStmt::ICMP_ULE</a>:</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#ad8e01744bfd98d584661025ce59338acaeeae52f8d195815edfb8c85037d246d6">CmpStmt::ICMP_SLE</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#ad8e01744bfd98d584661025ce59338aca9dd165c6da06811ffc8c2e53b30ab32d">CmpStmt::FCMP_OLE</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#ad8e01744bfd98d584661025ce59338aca8149cba2e9e265892f02bbd4a35fe6fb">CmpStmt::FCMP_ULE</a>:</div>
767
+ <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; {</div>
768
+ <div class="line"><a name="l00749"></a><span class="lineno"> 749</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>
769
769
  <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; {</div>
770
- <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
770
+ <div class="line"><a name="l00751"></a><span class="lineno"> 751</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>
771
771
  <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; }</div>
772
- <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordflow">break</span>;</div>
773
- <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; }</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#ad8e01744bfd98d584661025ce59338acaa100cf99398f6118d332191380574c06">CmpStmt::FCMP_FALSE</a>:</div>
775
- <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
772
+ <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordflow">else</span></div>
773
+ <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; {</div>
774
+ <div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
775
+ <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; }</div>
776
776
  <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">break</span>;</div>
777
- <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca7234c9a242034a71d0bdcb54aeec6da7">CmpStmt::FCMP_TRUE</a>:</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>(1, 1);</div>
779
- <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordflow">break</span>;</div>
780
- <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="keywordflow">default</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; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;undefined compare: &quot;</span>);</div>
783
- <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; }</div>
784
- <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; }</div>
785
- <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; _es[res] = resVal;</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;}</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"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a8f2a564370d9b9fb05e139c45eeaba68"> 770</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>
790
- <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160;{</div>
791
- <div class="line"><a name="l00772"></a><span class="lineno"> 772</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>
792
- <div class="line"><a name="l00773"></a><span class="lineno"> 773</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>
793
- <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">if</span> (inVarToAddrsTable(rhs))</div>
794
- <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; {</div>
795
- <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;addrs = getAddrs(rhs);</div>
796
- <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; assert(!addrs.<a class="code" href="classSVF_1_1AddressValue.html#aa7291f4b74bb824fb38b8c383fa0b6a0">empty</a>());</div>
797
- <div class="line"><a name="l00778"></a><span class="lineno"> 778</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>
798
- <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">AddressValue</a> rhsAddr;</div>
799
- <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordtype">bool</span> isVal = <span class="keyword">false</span>, isAddr = <span class="keyword">false</span>;</div>
800
- <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: addrs)</div>
801
- <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; {</div>
802
- <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> objId = getInternalID(addr);</div>
803
- <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">if</span> (inLocToValTable(objId))</div>
804
- <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; {</div>
805
- <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; rhsItv.<a class="code" href="classSVF_1_1IntervalValue.html#a3771eb932069dcad8212009efc411b99">join_with</a>(_es.load(addr));</div>
806
- <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; isVal = <span class="keyword">true</span>;</div>
807
- <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; }</div>
808
- <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inLocToAddrsTable(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; rhsAddr.<a class="code" href="classSVF_1_1AddressValue.html#acad5216bdc02a234d57abfe9ae72a12a">join_with</a>(_es.loadAddrs(addr));</div>
811
- <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; isAddr = <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; }</div>
814
- <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordflow">if</span> (isVal)</div>
815
- <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; {</div>
816
- <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="comment">// lhs var is an integer</span></div>
817
- <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; _es[lhs] = rhsItv;</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">else</span> <span class="keywordflow">if</span> (isAddr)</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 address</span></div>
822
- <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; _es.getAddrs(lhs) = rhsAddr;</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></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">// rhs not initialized, e.g., absence of a store before load</span></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; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaa100cf99398f6118d332191380574c06">CmpStmt::FCMP_FALSE</a>:</div>
779
+ <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
780
+ <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="keywordflow">break</span>;</div>
781
+ <div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca7234c9a242034a71d0bdcb54aeec6da7">CmpStmt::FCMP_TRUE</a>:</div>
782
+ <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 1);</div>
783
+ <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">break</span>;</div>
784
+ <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">default</span>:</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; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;undefined compare: &quot;</span>);</div>
787
+ <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; }</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; _es[res] = resVal;</div>
790
+ <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; }</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"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a8f2a564370d9b9fb05e139c45eeaba68"> 774</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>
794
+ <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;{</div>
795
+ <div class="line"><a name="l00776"></a><span class="lineno"> 776</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>
796
+ <div class="line"><a name="l00777"></a><span class="lineno"> 777</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>
797
+ <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">if</span> (inVarToAddrsTable(rhs))</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; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;addrs = getAddrs(rhs);</div>
800
+ <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; assert(!addrs.<a class="code" href="classSVF_1_1AddressValue.html#aa7291f4b74bb824fb38b8c383fa0b6a0">empty</a>());</div>
801
+ <div class="line"><a name="l00782"></a><span class="lineno"> 782</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>
802
+ <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">AddressValue</a> rhsAddr;</div>
803
+ <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordtype">bool</span> isVal = <span class="keyword">false</span>, isAddr = <span class="keyword">false</span>;</div>
804
+ <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: addrs)</div>
805
+ <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; {</div>
806
+ <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> objId = getInternalID(addr);</div>
807
+ <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">if</span> (inLocToValTable(objId))</div>
808
+ <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; {</div>
809
+ <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; rhsItv.<a class="code" href="classSVF_1_1IntervalValue.html#a3771eb932069dcad8212009efc411b99">join_with</a>(_es.load(addr));</div>
810
+ <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; isVal = <span class="keyword">true</span>;</div>
811
+ <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; }</div>
812
+ <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inLocToAddrsTable(objId))</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; rhsAddr.<a class="code" href="classSVF_1_1AddressValue.html#acad5216bdc02a234d57abfe9ae72a12a">join_with</a>(_es.loadAddrs(addr));</div>
815
+ <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; isAddr = <span class="keyword">true</span>;</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; }</div>
818
+ <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">if</span> (isVal)</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="comment">// lhs var is an integer</span></div>
821
+ <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; _es[lhs] = rhsItv;</div>
822
+ <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; }</div>
823
+ <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isAddr)</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; <span class="comment">// lhs var is an address</span></div>
826
+ <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; _es.getAddrs(lhs) = rhsAddr;</div>
827
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; }</div>
829
- <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;}</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"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#aed2e41879bae8389c49e69356b7aaac5"> 812</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>
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; <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>
834
- <div class="line"><a name="l00815"></a><span class="lineno"> 815</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>
835
- <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">if</span> (inVarToAddrsTable(lhs))</div>
836
- <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; {</div>
837
- <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(rhs))</div>
838
- <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; {</div>
839
- <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; assert(!getAddrs(lhs).empty());</div>
840
- <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;addrs = getAddrs(lhs);</div>
841
- <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: addrs)</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"> 824</span>&#160; _es.store(addr, _es[rhs]);</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; }</div>
846
- <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(rhs))</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; assert(!getAddrs(lhs).empty());</div>
849
- <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;addrs = getAddrs(lhs);</div>
850
- <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: addrs)</div>
851
- <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; {</div>
852
- <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; assert(!getAddrs(rhs).empty());</div>
853
- <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; _es.storeAddrs(addr, getAddrs(rhs));</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; </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;}</div>
828
+ <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keywordflow">else</span></div>
829
+ <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; {</div>
830
+ <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="comment">// rhs not initialized, e.g., absence of a store before load</span></div>
831
+ <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; }</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"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#aed2e41879bae8389c49e69356b7aaac5"> 816</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>
836
+ <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160;{</div>
837
+ <div class="line"><a name="l00818"></a><span class="lineno"> 818</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>
838
+ <div class="line"><a name="l00819"></a><span class="lineno"> 819</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>
839
+ <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keywordflow">if</span> (inVarToAddrsTable(lhs))</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; <span class="keywordflow">if</span> (inVarToValTable(rhs))</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"> 824</span>&#160; assert(!getAddrs(lhs).empty());</div>
844
+ <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;addrs = getAddrs(lhs);</div>
845
+ <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: addrs)</div>
846
+ <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; {</div>
847
+ <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; _es.store(addr, _es[rhs]);</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; }</div>
850
+ <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(rhs))</div>
851
+ <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; {</div>
852
+ <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; assert(!getAddrs(lhs).empty());</div>
853
+ <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;addrs = getAddrs(lhs);</div>
854
+ <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: addrs)</div>
855
+ <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; {</div>
856
+ <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; assert(!getAddrs(rhs).empty());</div>
857
+ <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; _es.storeAddrs(addr, getAddrs(rhs));</div>
858
+ <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; }</div>
859
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"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#afcf2f81101f1b9580d82b5c2efb83999"> 841</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>
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; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> lhs = <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getLHSVarID();</div>
863
- <div class="line"><a name="l00844"></a><span class="lineno"> 844</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>
864
- <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()-&gt;isBlkPtr(lhs))</div>
865
- <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; {</div>
866
- <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; _es[lhs] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</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; <span class="keywordflow">else</span></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"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#afcf2f81101f1b9580d82b5c2efb83999"> 845</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>
865
+ <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160;{</div>
866
+ <div class="line"><a name="l00847"></a><span class="lineno"> 847</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>
867
+ <div class="line"><a name="l00848"></a><span class="lineno"> 848</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>
868
+ <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()-&gt;isBlkPtr(lhs))</div>
869
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; <span class="keywordflow">if</span> (inVarToValTable(rhs))</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"> 853</span>&#160; _es[lhs] = _es[rhs];</div>
873
- <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="comment">// if copy LHS is integerType(i8 i32 etc), value should be limited.</span></div>
874
- <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="comment">// this branch can handle bitcast from higher bits integer to</span></div>
875
- <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="comment">// lower bits integer. e.g. bitcast i32 to i8</span></div>
876
- <div class="line"><a name="l00857"></a><span class="lineno"> 857</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>
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].meet_with(</div>
879
- <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; getRangeLimitFromType(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getLHSVar()-&gt;getType()));</div>
880
- <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; }</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">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(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; assert(!getAddrs(rhs).empty());</div>
885
- <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; _es.getAddrs(lhs) = getAddrs(rhs);</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; }</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; </div>
890
- <div class="line"><a name="l00871"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#aa274b5b4e18c28ec8035ca1b073aacfc"> 871</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>
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; <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>
893
- <div class="line"><a name="l00874"></a><span class="lineno"> 874</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>
894
- <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="keywordflow">if</span> (!inVarToAddrsTable(rhs)) <span class="keywordflow">return</span>;</div>
895
- <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; assert(!getAddrs(rhs).empty());</div>
896
- <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;rhsVal = getAddrs(rhs);</div>
897
- <div class="line"><a name="l00878"></a><span class="lineno"> 878</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>
898
- <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> offsetPair = getItvOfFlattenedElemIndex(gep);</div>
899
- <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="keywordflow">if</span> (!isVirtualMemAddress(*rhsVal.<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>()))</div>
900
- <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">return</span>;</div>
901
- <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <span class="keywordflow">else</span></div>
902
- <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; {</div>
903
- <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> gepAddrs;</div>
904
- <div class="line"><a name="l00885"></a><span class="lineno"> 885</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>
905
- <div class="line"><a name="l00886"></a><span class="lineno"> 886</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>
906
- <div class="line"><a name="l00887"></a><span class="lineno"> 887</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>
907
- <div class="line"><a name="l00888"></a><span class="lineno"> 888</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>
908
- <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> i = lb; i &lt;= ub; i++)</div>
909
- <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; gepAddrs.<a class="code" href="classSVF_1_1AddressValue.html#acad5216bdc02a234d57abfe9ae72a12a">join_with</a>(getGepObjAddress(rhs, i));</div>
910
- <div class="line"><a name="l00891"></a><span class="lineno"> 891</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>
911
- <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; _es.getAddrs(lhs) = gepAddrs;</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; }</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; </div>
916
- <div class="line"><a name="l00897"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a604126e59364cb56b44a88cae5afbfb8"> 897</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>
917
- <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160;{</div>
918
- <div class="line"><a name="l00899"></a><span class="lineno"> 899</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>
919
- <div class="line"><a name="l00900"></a><span class="lineno"> 900</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>
920
- <div class="line"><a name="l00901"></a><span class="lineno"> 901</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>
921
- <div class="line"><a name="l00902"></a><span class="lineno"> 902</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>
922
- <div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(tval) &amp;&amp; inVarToValTable(fval) &amp;&amp; inVarToValTable(cond))</div>
923
- <div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; {</div>
924
- <div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keywordflow">if</span> (_es[cond].is_numeral())</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; _es[res] = _es[cond].is_zero() ? _es[fval] : _es[tval];</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"> 909</span>&#160; <span class="keywordflow">else</span></div>
870
+ <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; _es[lhs] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</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"> 853</span>&#160; <span class="keywordflow">else</span></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; <span class="keywordflow">if</span> (inVarToValTable(rhs))</div>
875
+ <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; {</div>
876
+ <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; _es[lhs] = _es[rhs];</div>
877
+ <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="comment">// if copy LHS is integerType(i8 i32 etc), value should be limited.</span></div>
878
+ <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="comment">// this branch can handle bitcast from higher bits integer to</span></div>
879
+ <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="comment">// lower bits integer. e.g. bitcast i32 to i8</span></div>
880
+ <div class="line"><a name="l00861"></a><span class="lineno"> 861</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>
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; _es[lhs].meet_with(</div>
883
+ <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; getRangeLimitFromType(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getLHSVar()-&gt;getType()));</div>
884
+ <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; }</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(rhs))</div>
887
+ <div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; {</div>
888
+ <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; assert(!getAddrs(rhs).empty());</div>
889
+ <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; _es.getAddrs(lhs) = getAddrs(rhs);</div>
890
+ <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; }</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"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#aa274b5b4e18c28ec8035ca1b073aacfc"> 875</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>
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; <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>
897
+ <div class="line"><a name="l00878"></a><span class="lineno"> 878</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>
898
+ <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordflow">if</span> (!inVarToAddrsTable(rhs)) <span class="keywordflow">return</span>;</div>
899
+ <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; assert(!getAddrs(rhs).empty());</div>
900
+ <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> &amp;rhsVal = getAddrs(rhs);</div>
901
+ <div class="line"><a name="l00882"></a><span class="lineno"> 882</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>
902
+ <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> offsetPair = getItvOfFlattenedElemIndex(gep);</div>
903
+ <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="keywordflow">if</span> (!isVirtualMemAddress(*rhsVal.<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>()))</div>
904
+ <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">return</span>;</div>
905
+ <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">else</span></div>
906
+ <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; {</div>
907
+ <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">Addrs</a> gepAddrs;</div>
908
+ <div class="line"><a name="l00889"></a><span class="lineno"> 889</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>
909
+ <div class="line"><a name="l00890"></a><span class="lineno"> 890</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>
910
+ <div class="line"><a name="l00891"></a><span class="lineno"> 891</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>
911
+ <div class="line"><a name="l00892"></a><span class="lineno"> 892</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>
912
+ <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> i = lb; i &lt;= ub; i++)</div>
913
+ <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; gepAddrs.<a class="code" href="classSVF_1_1AddressValue.html#acad5216bdc02a234d57abfe9ae72a12a">join_with</a>(getGepObjAddress(rhs, i));</div>
914
+ <div class="line"><a name="l00895"></a><span class="lineno"> 895</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>
915
+ <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; _es.getAddrs(lhs) = gepAddrs;</div>
916
+ <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keywordflow">return</span>;</div>
917
+ <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; }</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"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a604126e59364cb56b44a88cae5afbfb8"> 901</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>
921
+ <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;{</div>
922
+ <div class="line"><a name="l00903"></a><span class="lineno"> 903</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>
923
+ <div class="line"><a name="l00904"></a><span class="lineno"> 904</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>
924
+ <div class="line"><a name="l00905"></a><span class="lineno"> 905</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>
925
+ <div class="line"><a name="l00906"></a><span class="lineno"> 906</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>
926
+ <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(tval) &amp;&amp; inVarToValTable(fval) &amp;&amp; inVarToValTable(cond))</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"> 909</span>&#160; <span class="keywordflow">if</span> (_es[cond].is_numeral())</div>
929
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; _es[res] = _es[cond];</div>
930
+ <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; _es[res] = _es[cond].is_zero() ? _es[fval] : _es[tval];</div>
931
931
  <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; }</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> <span class="keywordflow">if</span> (inVarToAddrsTable(tval) &amp;&amp; inVarToAddrsTable(fval) &amp;&amp; inVarToValTable(cond))</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; <span class="keywordflow">if</span> (_es[cond].is_numeral())</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; assert(!getAddrs(fval).empty());</div>
938
- <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; assert(!getAddrs(tval).empty());</div>
939
- <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; _es.getAddrs(res) = _es[cond].is_zero() ? getAddrs(fval) : getAddrs(tval);</div>
940
- <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; }</div>
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;}</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"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#ae00e5398cbeb9aa1cfc464da4250a91e"> 925</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>
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; <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>
947
- <div class="line"><a name="l00928"></a><span class="lineno"> 928</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>
948
- <div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">AddressValue</a> rhsAddr;</div>
949
- <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="keywordtype">bool</span> isVal = <span class="keyword">false</span>, isAddr = <span class="keyword">false</span>;</div>
950
- <div class="line"><a name="l00931"></a><span class="lineno"> 931</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>
951
- <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; {</div>
952
- <div class="line"><a name="l00933"></a><span class="lineno"> 933</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>
953
- <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(curId))</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; rhsItv.<a class="code" href="classSVF_1_1IntervalValue.html#a3771eb932069dcad8212009efc411b99">join_with</a>(_es[curId]);</div>
956
- <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; isVal = <span class="keyword">true</span>;</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(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; assert(!getAddrs(curId).empty());</div>
961
- <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; rhsAddr.<a class="code" href="classSVF_1_1AddressValue.html#acad5216bdc02a234d57abfe9ae72a12a">join_with</a>(getAddrs(curId));</div>
962
- <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; isAddr = <span class="keyword">true</span>;</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; }</div>
965
- <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <span class="keywordflow">if</span> (isVal)</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; <span class="comment">// res var is an integer</span></div>
968
- <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; _es[res] = rhsItv;</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> (isAddr)</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 address</span></div>
973
- <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; _es.getAddrs(res) = rhsAddr;</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;}</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; </div>
978
- <div class="line"><a name="l00959"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#adb82778157e0f5e7a2ea4d803bcd07ad"> 959</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>
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; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> lhs = callPE-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div>
981
- <div class="line"><a name="l00962"></a><span class="lineno"> 962</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>
982
- <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(rhs))</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; _es[lhs] = _es[rhs];</div>
985
- <div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; }</div>
986
- <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(rhs))</div>
932
+ <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">else</span></div>
933
+ <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; {</div>
934
+ <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; _es[res] = _es[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; }</div>
937
+ <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(tval) &amp;&amp; inVarToAddrsTable(fval) &amp;&amp; inVarToValTable(cond))</div>
938
+ <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; {</div>
939
+ <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <span class="keywordflow">if</span> (_es[cond].is_numeral())</div>
940
+ <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; {</div>
941
+ <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; assert(!getAddrs(fval).empty());</div>
942
+ <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; assert(!getAddrs(tval).empty());</div>
943
+ <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; _es.getAddrs(res) = _es[cond].is_zero() ? getAddrs(fval) : getAddrs(tval);</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; }</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"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#ae00e5398cbeb9aa1cfc464da4250a91e"> 929</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>
949
+ <div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160;{</div>
950
+ <div class="line"><a name="l00931"></a><span class="lineno"> 931</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>
951
+ <div class="line"><a name="l00932"></a><span class="lineno"> 932</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>
952
+ <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <a class="code" href="classSVF_1_1AddressValue.html">AddressValue</a> rhsAddr;</div>
953
+ <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="keywordtype">bool</span> isVal = <span class="keyword">false</span>, isAddr = <span class="keyword">false</span>;</div>
954
+ <div class="line"><a name="l00935"></a><span class="lineno"> 935</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>
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"> 937</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>
957
+ <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(curId))</div>
958
+ <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; {</div>
959
+ <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; rhsItv.<a class="code" href="classSVF_1_1IntervalValue.html#a3771eb932069dcad8212009efc411b99">join_with</a>(_es[curId]);</div>
960
+ <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; isVal = <span class="keyword">true</span>;</div>
961
+ <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; }</div>
962
+ <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(curId))</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; assert(!getAddrs(curId).empty());</div>
965
+ <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; rhsAddr.<a class="code" href="classSVF_1_1AddressValue.html#acad5216bdc02a234d57abfe9ae72a12a">join_with</a>(getAddrs(curId));</div>
966
+ <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; isAddr = <span class="keyword">true</span>;</div>
967
+ <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; }</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; <span class="keywordflow">if</span> (isVal)</div>
970
+ <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; {</div>
971
+ <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="comment">// res var is an integer</span></div>
972
+ <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; _es[res] = rhsItv;</div>
973
+ <div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; }</div>
974
+ <div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isAddr)</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; <span class="comment">// res var is an address</span></div>
977
+ <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; _es.getAddrs(res) = rhsAddr;</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;}</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"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#adb82778157e0f5e7a2ea4d803bcd07ad"> 963</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>
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; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> lhs = callPE-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div>
985
+ <div class="line"><a name="l00966"></a><span class="lineno"> 966</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>
986
+ <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(rhs))</div>
987
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; assert(!getAddrs(rhs).empty());</div>
989
- <div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; _es.getAddrs(lhs) = getAddrs(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;}</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"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a31e299f91eed29d1a8db3b884d57d1dc"> 974</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>
994
- <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160;{</div>
995
- <div class="line"><a name="l00976"></a><span class="lineno"> 976</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>
996
- <div class="line"><a name="l00977"></a><span class="lineno"> 977</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>
997
- <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(rhs))</div>
998
- <div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; {</div>
999
- <div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; _es[lhs] = _es[rhs];</div>
1000
- <div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; }</div>
1001
- <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(rhs))</div>
988
+ <div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; _es[lhs] = _es[rhs];</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"> 971</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(rhs))</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; assert(!getAddrs(rhs).empty());</div>
993
+ <div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; _es.getAddrs(lhs) = getAddrs(rhs);</div>
994
+ <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; }</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"><a class="line" href="classSVF_1_1SVFIR2ItvExeState.html#a31e299f91eed29d1a8db3b884d57d1dc"> 978</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>
998
+ <div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160;{</div>
999
+ <div class="line"><a name="l00980"></a><span class="lineno"> 980</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>
1000
+ <div class="line"><a name="l00981"></a><span class="lineno"> 981</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>
1001
+ <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <span class="keywordflow">if</span> (inVarToValTable(rhs))</div>
1002
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; assert(!getAddrs(rhs).empty());</div>
1004
- <div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; _es.getAddrs(lhs) = getAddrs(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;}</div>
1003
+ <div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; _es[lhs] = _es[rhs];</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"> 986</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inVarToAddrsTable(rhs))</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; assert(!getAddrs(rhs).empty());</div>
1008
+ <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; _es.getAddrs(lhs) = getAddrs(rhs);</div>
1009
+ <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; }</div>
1010
+ <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;}</div>
1007
1011
  </div><!-- fragment --></div><!-- contents -->
1008
1012
  <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#l00162">AccessPath.cpp:162</a></div></div>
1009
1013
  <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>
1010
1014
  <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>
1011
- <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#l00959">SVFIR2ItvExeState.cpp:959</a></div></div>
1015
+ <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#l00963">SVFIR2ItvExeState.cpp:963</a></div></div>
1012
1016
  <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>
1013
1017
  <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>
1014
1018
  <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>
1015
1019
  <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_a2f647224242dd87099104e0fdc994de6aafa66e75600b0098c4fa3304720cb7a6"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6aafa66e75600b0098c4fa3304720cb7a6">SVF::BinaryOPStmt::FRem</a></div><div class="ttdeci">@ FRem</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00984">SVFStatements.h:984</a></div></div>
1020
+ <div class="ttc" id="aclassSVF_1_1GepStmt_html_a28a7ca818584abdc2d345b41d592c5dc"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a28a7ca818584abdc2d345b41d592c5dc">SVF::GepStmt::accumulateConstantByteOffset</a></div><div class="ttdeci">APOffset accumulateConstantByteOffset() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00509">SVFStatements.h:509</a></div></div>
1016
1021
  <div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_afbb9ff1f2c47d2afda117bf63a80a1a7"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#afbb9ff1f2c47d2afda117bf63a80a1a7">SVF::SVFIR2ItvExeState::getRangeLimitFromType</a></div><div class="ttdeci">IntervalValue getRangeLimitFromType(const SVFType *type)</div><div class="ttdoc">Return the value range of Integer SVF Type, e.g. unsigned i8 Type-&gt;[0, 255], signed i8 Type-&gt;[-128,...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00050">SVFIR2ItvExeState.cpp:50</a></div></div>
1017
1022
  <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_a2f647224242dd87099104e0fdc994de6a22a047e74227056ef3340628fae80198"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a22a047e74227056ef3340628fae80198">SVF::BinaryOPStmt::FMul</a></div><div class="ttdeci">@ FMul</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00978">SVFStatements.h:978</a></div></div>
1018
1023
  <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_a2f647224242dd87099104e0fdc994de6af7dba9dda5edcee046ca81fb184858bc"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6af7dba9dda5edcee046ca81fb184858bc">SVF::BinaryOPStmt::URem</a></div><div class="ttdeci">@ URem</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00982">SVFStatements.h:982</a></div></div>
@@ -1023,7 +1028,7 @@ $(function() {
1023
1028
  <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>
1024
1029
  <div class="ttc" id="aclassSVF_1_1SVFPointerType_html"><div class="ttname"><a href="classSVF_1_1SVFPointerType.html">SVF::SVFPointerType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00351">SVFType.h:351</a></div></div>
1025
1030
  <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>
1026
- <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#l00897">SVFIR2ItvExeState.cpp:897</a></div></div>
1031
+ <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#l00901">SVFIR2ItvExeState.cpp:901</a></div></div>
1027
1032
  <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>
1028
1033
  <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>
1029
1034
  <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>
@@ -1037,19 +1042,19 @@ $(function() {
1037
1042
  <div class="ttc" id="aSVFIR2ItvExeState_8h_html"><div class="ttname"><a href="SVFIR2ItvExeState_8h.html">SVFIR2ItvExeState.h</a></div></div>
1038
1043
  <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>
1039
1044
  <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>
1040
- <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#l00498">SVFIR2ItvExeState.cpp:498</a></div></div>
1045
+ <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#l00502">SVFIR2ItvExeState.cpp:502</a></div></div>
1041
1046
  <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>
1042
1047
  <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>
1043
1048
  <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>
1044
1049
  <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>
1045
1050
  <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>
1046
1051
  <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>
1047
- <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#l00586">SVFIR2ItvExeState.cpp:586</a></div></div>
1048
- <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#l00871">SVFIR2ItvExeState.cpp:871</a></div></div>
1052
+ <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#l00590">SVFIR2ItvExeState.cpp:590</a></div></div>
1053
+ <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#l00875">SVFIR2ItvExeState.cpp:875</a></div></div>
1049
1054
  <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>
1050
1055
  <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>
1051
1056
  <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>
1052
- <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#l00925">SVFIR2ItvExeState.cpp:925</a></div></div>
1057
+ <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#l00929">SVFIR2ItvExeState.cpp:929</a></div></div>
1053
1058
  <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>
1054
1059
  <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>
1055
1060
  <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>
@@ -1062,7 +1067,7 @@ $(function() {
1062
1067
  <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>
1063
1068
  <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>
1064
1069
  <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>
1065
- <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#l00770">SVFIR2ItvExeState.cpp:770</a></div></div>
1070
+ <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#l00774">SVFIR2ItvExeState.cpp:774</a></div></div>
1066
1071
  <div class="ttc" id="aOptions_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
1067
1072
  <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>
1068
1073
  <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>
@@ -1074,11 +1079,11 @@ $(function() {
1074
1079
  <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#l00151">IntervalExeState.h:151</a></div></div>
1075
1080
  <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>
1076
1081
  <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>
1077
- <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#l00974">SVFIR2ItvExeState.cpp:974</a></div></div>
1082
+ <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#l00978">SVFIR2ItvExeState.cpp:978</a></div></div>
1078
1083
  <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>
1079
1084
  <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>
1080
1085
  <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>
1081
- <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#l00524">SVFIR2ItvExeState.cpp:524</a></div></div>
1086
+ <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#l00528">SVFIR2ItvExeState.cpp:528</a></div></div>
1082
1087
  <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>
1083
1088
  <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>
1084
1089
  <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>
@@ -1096,7 +1101,7 @@ $(function() {
1096
1101
  <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#l01000">SVFValue.h:1000</a></div></div>
1097
1102
  <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>
1098
1103
  <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>
1099
- <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#l00812">SVFIR2ItvExeState.cpp:812</a></div></div>
1104
+ <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#l00816">SVFIR2ItvExeState.cpp:816</a></div></div>
1100
1105
  <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>
1101
1106
  <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>
1102
1107
  <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>
@@ -1104,16 +1109,17 @@ $(function() {
1104
1109
  <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>
1105
1110
  <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>
1106
1111
  <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>
1107
- <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#l00338">SVFIR2ItvExeState.cpp:338</a></div></div>
1112
+ <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#l00340">SVFIR2ItvExeState.cpp:340</a></div></div>
1108
1113
  <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#l00064">IntervalExeState.h:64</a></div></div>
1109
1114
  <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>
1110
1115
  <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>
1111
1116
  <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>
1112
1117
  <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>
1113
1118
  <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>
1114
- <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#l00841">SVFIR2ItvExeState.cpp:841</a></div></div>
1119
+ <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#l00845">SVFIR2ItvExeState.cpp:845</a></div></div>
1115
1120
  <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>
1116
1121
  <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>
1122
+ <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>
1117
1123
  <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>
1118
1124
  <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>
1119
1125
  <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>
@@ -1125,6 +1131,7 @@ $(function() {
1125
1131
  <div class="ttc" id="aclassSVF_1_1AddressValue_html_a40c67147606ab95dd3318d0fe821d8c0"><div class="ttname"><a href="classSVF_1_1AddressValue.html#a40c67147606ab95dd3318d0fe821d8c0">SVF::AddressValue::insert</a></div><div class="ttdeci">std::pair&lt; AddressValue::AddrSet::iterator, bool &gt; insert(u32_t id)</div><div class="ttdef"><b>Definition:</b> <a href="AddressValue_8h_source.html#l00123">AddressValue.h:123</a></div></div>
1126
1132
  <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_a2f647224242dd87099104e0fdc994de6a05348a0e3f232ac552bb3ca56525c448"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a05348a0e3f232ac552bb3ca56525c448">SVF::BinaryOPStmt::FSub</a></div><div class="ttdeci">@ FSub</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00976">SVFStatements.h:976</a></div></div>
1127
1133
  <div class="ttc" id="aclassSVF_1_1IntervalValue_html_aa027be2f9243ce4cae799b265b019443"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#aa027be2f9243ce4cae799b265b019443">SVF::IntervalValue::bottom</a></div><div class="ttdeci">static IntervalValue bottom()</div><div class="ttdoc">Create the bottom IntervalValue.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00089">IntervalValue.h:89</a></div></div>
1134
+ <div class="ttc" id="aclassSVF_1_1GepStmt_html_a1dd264b9f3b43d04aa1396443ad6ad33"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a1dd264b9f3b43d04aa1396443ad6ad33">SVF::GepStmt::accumulateConstantOffset</a></div><div class="ttdeci">APOffset accumulateConstantOffset() const</div><div class="ttdoc">Return accumulated constant offset (when accessing array or struct) if this offset is a constant.</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00515">SVFStatements.h:515</a></div></div>
1128
1135
  <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338aca5c4576ce636e323cbc3aa322480c5d2c"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca5c4576ce636e323cbc3aa322480c5d2c">SVF::CmpStmt::FCMP_OGE</a></div><div class="ttdeci">@ FCMP_OGE</div><div class="ttdoc">0 0 1 1 True if ordered and greater than or equal</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00892">SVFStatements.h:892</a></div></div>
1129
1136
  <div class="ttc" id="acJSON_8cpp_html_a95bf816579e97b6f33bdb5e25ed6d5de"><div class="ttname"><a href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a></div><div class="ttdeci">buffer offset</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01113">cJSON.cpp:1113</a></div></div>
1130
1137
  <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338aca3873c41e060b95cb37eac587402b597c"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca3873c41e060b95cb37eac587402b597c">SVF::CmpStmt::FCMP_UGT</a></div><div class="ttdeci">@ FCMP_UGT</div><div class="ttdoc">1 0 1 0 True if unordered or greater than</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00899">SVFStatements.h:899</a></div></div>
@@ -1137,12 +1144,12 @@ $(function() {
1137
1144
  <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#l01284">LLVMUtil.cpp:1284</a></div></div>
1138
1145
  <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>
1139
1146
  <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>
1140
- <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#l00474">SVFIR2ItvExeState.cpp:474</a></div></div>
1147
+ <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#l00478">SVFIR2ItvExeState.cpp:478</a></div></div>
1141
1148
  <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>
1142
1149
  <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>
1143
1150
  <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>
1144
1151
  <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>
1145
- <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#l00442">SVFIR2ItvExeState.cpp:442</a></div></div>
1152
+ <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#l00446">SVFIR2ItvExeState.cpp:446</a></div></div>
1146
1153
  <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>
1147
1154
  <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>
1148
1155
  <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>
@@ -1172,7 +1179,7 @@ $(function() {
1172
1179
  <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>
1173
1180
  <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>
1174
1181
  <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>
1175
- <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#l00406">SVFIR2ItvExeState.cpp:406</a></div></div>
1182
+ <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#l00410">SVFIR2ItvExeState.cpp:410</a></div></div>
1176
1183
  <!-- start footer part -->
1177
1184
  <hr class="footer"/><address class="footer"><small>
1178
1185
  Generated by &#160;<a href="http://www.doxygen.org/index.html">