svf-tools 1.0.905 → 1.0.907

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 (438) hide show
  1. package/SVF-doxygen/html/AbstractInterpretation_8cpp.html +217 -0
  2. package/SVF-doxygen/html/AbstractInterpretation_8cpp_source.html +2093 -0
  3. package/SVF-doxygen/html/AbstractInterpretation_8h.html +115 -0
  4. package/SVF-doxygen/html/AbstractInterpretation_8h_source.html +459 -0
  5. package/SVF-doxygen/html/AbstractState_8cpp.html +84 -0
  6. package/SVF-doxygen/html/AbstractState_8cpp_source.html +461 -0
  7. package/SVF-doxygen/html/AbstractState_8h.html +105 -0
  8. package/SVF-doxygen/html/AbstractState_8h_source.html +891 -0
  9. package/SVF-doxygen/html/AbstractValue_8h.html +3 -3
  10. package/SVF-doxygen/html/AbstractValue_8h_source.html +652 -62
  11. package/SVF-doxygen/html/AddressValue_8h.html +4 -4
  12. package/SVF-doxygen/html/AddressValue_8h_source.html +180 -177
  13. package/SVF-doxygen/html/BufOverflowChecker_8cpp_source.html +782 -776
  14. package/SVF-doxygen/html/BufOverflowChecker_8h.html +1 -1
  15. package/SVF-doxygen/html/BufOverflowChecker_8h_source.html +19 -19
  16. package/SVF-doxygen/html/CFLGraph_8h_source.html +3 -3
  17. package/SVF-doxygen/html/CSC_8h_source.html +1 -1
  18. package/SVF-doxygen/html/ConsExeState_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/ConsExeState_8h_source.html +2 -2
  20. package/SVF-doxygen/html/ExeState_8cpp.html +1 -1
  21. package/SVF-doxygen/html/ExeState_8cpp_source.html +2 -2
  22. package/SVF-doxygen/html/ExeState_8h_source.html +8 -8
  23. package/SVF-doxygen/html/ICFGSimplification_8h.html +2 -2
  24. package/SVF-doxygen/html/ICFGSimplification_8h_source.html +17 -18
  25. package/SVF-doxygen/html/ICFG_8h_source.html +1 -1
  26. package/SVF-doxygen/html/IntervalValue_8h.html +2 -2
  27. package/SVF-doxygen/html/IntervalValue_8h_source.html +846 -864
  28. package/SVF-doxygen/html/LLVMModule_8cpp_source.html +1 -1
  29. package/SVF-doxygen/html/MSSAMuChi_8h_source.html +1 -1
  30. package/SVF-doxygen/html/MemRegion_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/ObjTypeInference_8cpp_source.html +1 -1
  32. package/SVF-doxygen/html/PointsTo_8cpp_source.html +3 -3
  33. package/SVF-doxygen/html/PointsTo_8h_source.html +3 -3
  34. package/SVF-doxygen/html/RelExeState_8h_source.html +5 -5
  35. package/SVF-doxygen/html/RelationSolver_8cpp_source.html +67 -68
  36. package/SVF-doxygen/html/RelationSolver_8h.html +1 -1
  37. package/SVF-doxygen/html/RelationSolver_8h_source.html +17 -17
  38. package/SVF-doxygen/html/SVFIR2AbsState_8cpp.html +84 -0
  39. package/SVF-doxygen/html/SVFIR2AbsState_8cpp_source.html +1348 -0
  40. package/SVF-doxygen/html/SVFIR2AbsState_8h.html +100 -0
  41. package/SVF-doxygen/html/SVFIR2AbsState_8h_source.html +378 -0
  42. package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +9 -8
  43. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +920 -952
  44. package/SVF-doxygen/html/SVFIR2ItvExeState_8h.html +2 -3
  45. package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +202 -207
  46. package/SVF-doxygen/html/SVFIR2Relation_8cpp.html +1 -1
  47. package/SVF-doxygen/html/SVFIR2Relation_8cpp_source.html +76 -72
  48. package/SVF-doxygen/html/SVFType_8cpp_source.html +1 -1
  49. package/SVF-doxygen/html/SVFType_8h_source.html +1 -1
  50. package/SVF-doxygen/html/SVFValue_8h_source.html +1 -1
  51. package/SVF-doxygen/html/SparseBitVector_8h_source.html +3 -3
  52. package/SVF-doxygen/html/WorkList_8h_source.html +1 -1
  53. package/SVF-doxygen/html/ae_8cpp.html +57 -57
  54. package/SVF-doxygen/html/ae_8cpp_source.html +462 -466
  55. package/SVF-doxygen/html/annotated.html +409 -418
  56. package/SVF-doxygen/html/classSVF_1_1AEStat-members.html +2 -2
  57. package/SVF-doxygen/html/classSVF_1_1AEStat.html +184 -190
  58. package/SVF-doxygen/html/classSVF_1_1AbstractInterpretation-members.html +161 -0
  59. package/SVF-doxygen/html/classSVF_1_1AbstractInterpretation.html +4325 -0
  60. package/SVF-doxygen/html/classSVF_1_1AbstractInterpretation.png +0 -0
  61. package/SVF-doxygen/html/classSVF_1_1AbstractState-members.html +134 -0
  62. package/SVF-doxygen/html/classSVF_1_1AbstractState.html +2166 -0
  63. package/SVF-doxygen/html/classSVF_1_1AbstractState.png +0 -0
  64. package/SVF-doxygen/html/classSVF_1_1AddressValue-members.html +15 -28
  65. package/SVF-doxygen/html/classSVF_1_1AddressValue.html +171 -230
  66. package/SVF-doxygen/html/classSVF_1_1BoundedZ3Expr.html +0 -1
  67. package/SVF-doxygen/html/classSVF_1_1BoundedZ3Expr.png +0 -0
  68. package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker-members.html +73 -73
  69. package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker.html +578 -574
  70. package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker.png +0 -0
  71. package/SVF-doxygen/html/classSVF_1_1CFLNode-members.html +48 -49
  72. package/SVF-doxygen/html/classSVF_1_1CFLNode.html +25 -25
  73. package/SVF-doxygen/html/classSVF_1_1ConsExeState.html +1 -1
  74. package/SVF-doxygen/html/classSVF_1_1ExeState.html +12 -14
  75. package/SVF-doxygen/html/classSVF_1_1ExeState.png +0 -0
  76. package/SVF-doxygen/html/classSVF_1_1FILOWorkList.html +3 -3
  77. package/SVF-doxygen/html/classSVF_1_1GenericNode.html +22 -8
  78. package/SVF-doxygen/html/classSVF_1_1GenericNode.png +0 -0
  79. package/SVF-doxygen/html/classSVF_1_1ICFGSimplification.html +1 -1
  80. package/SVF-doxygen/html/classSVF_1_1IntervalValue-members.html +50 -64
  81. package/SVF-doxygen/html/classSVF_1_1IntervalValue.html +349 -459
  82. package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +1 -1
  83. package/SVF-doxygen/html/classSVF_1_1ObjTypeInference.html +1 -1
  84. package/SVF-doxygen/html/classSVF_1_1RelExeState-members.html +1 -1
  85. package/SVF-doxygen/html/classSVF_1_1RelExeState.html +8 -8
  86. package/SVF-doxygen/html/classSVF_1_1RelationSolver-members.html +8 -8
  87. package/SVF-doxygen/html/classSVF_1_1RelationSolver.html +106 -107
  88. package/SVF-doxygen/html/classSVF_1_1SVFIR2AbsState-members.html +141 -0
  89. package/SVF-doxygen/html/classSVF_1_1SVFIR2AbsState.html +3137 -0
  90. package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +5 -5
  91. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState-members.html +56 -57
  92. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +1128 -1178
  93. package/SVF-doxygen/html/classSVF_1_1SVFStat.html +1 -1
  94. package/SVF-doxygen/html/classSVF_1_1SparseAbstractState-members.html +157 -0
  95. package/SVF-doxygen/html/classSVF_1_1SparseAbstractState.html +1512 -0
  96. package/SVF-doxygen/html/classSVF_1_1SparseAbstractState.png +0 -0
  97. package/SVF-doxygen/html/classSVF_1_1Z3Expr.html +0 -1
  98. package/SVF-doxygen/html/classSVF_1_1Z3Expr.png +0 -0
  99. package/SVF-doxygen/html/classSymblicAbstractionTest-members.html +3 -3
  100. package/SVF-doxygen/html/classSymblicAbstractionTest.html +400 -404
  101. package/SVF-doxygen/html/classes.html +326 -336
  102. package/SVF-doxygen/html/dir_2c6fb801affc4b3efe6e1ed5974683f6.html +2 -10
  103. package/SVF-doxygen/html/dir_81caa96ab1d3de93b353e2bbe80e6067.html +2 -4
  104. package/SVF-doxygen/html/dir_9a8e7a56f4029a0d9f62b1c6d1f6e85b.html +2 -8
  105. package/SVF-doxygen/html/dir_fbec400583b4bd6c5f2e89c86c5943a6.html +2 -4
  106. package/SVF-doxygen/html/fastcluster__dm_8cpp_8inc_source.html +1 -1
  107. package/SVF-doxygen/html/files.html +18 -27
  108. package/SVF-doxygen/html/functions.html +33 -56
  109. package/SVF-doxygen/html/functions_a.html +29 -42
  110. package/SVF-doxygen/html/functions_b.html +14 -21
  111. package/SVF-doxygen/html/functions_c.html +42 -52
  112. package/SVF-doxygen/html/functions_d.html +7 -4
  113. package/SVF-doxygen/html/functions_e.html +7 -21
  114. package/SVF-doxygen/html/functions_enum.html +4 -7
  115. package/SVF-doxygen/html/functions_eval.html +2 -2
  116. package/SVF-doxygen/html/functions_eval_c.html +0 -3
  117. package/SVF-doxygen/html/functions_eval_i.html +2 -3
  118. package/SVF-doxygen/html/functions_eval_m.html +2 -2
  119. package/SVF-doxygen/html/functions_eval_s.html +2 -5
  120. package/SVF-doxygen/html/functions_eval_u.html +4 -1
  121. package/SVF-doxygen/html/functions_f.html +6 -6
  122. package/SVF-doxygen/html/functions_func.html +24 -31
  123. package/SVF-doxygen/html/functions_func_b.html +10 -16
  124. package/SVF-doxygen/html/functions_func_c.html +30 -39
  125. package/SVF-doxygen/html/functions_func_d.html +1 -1
  126. package/SVF-doxygen/html/functions_func_e.html +7 -17
  127. package/SVF-doxygen/html/functions_func_g.html +61 -115
  128. package/SVF-doxygen/html/functions_func_h.html +22 -24
  129. package/SVF-doxygen/html/functions_func_i.html +64 -94
  130. package/SVF-doxygen/html/functions_func_j.html +4 -6
  131. package/SVF-doxygen/html/functions_func_l.html +9 -23
  132. package/SVF-doxygen/html/functions_func_m.html +7 -8
  133. package/SVF-doxygen/html/functions_func_n.html +8 -13
  134. package/SVF-doxygen/html/functions_func_o.html +57 -48
  135. package/SVF-doxygen/html/functions_func_p.html +6 -11
  136. package/SVF-doxygen/html/functions_func_r.html +4 -4
  137. package/SVF-doxygen/html/functions_func_s.html +35 -50
  138. package/SVF-doxygen/html/functions_func_t.html +26 -40
  139. package/SVF-doxygen/html/functions_func_u.html +6 -5
  140. package/SVF-doxygen/html/functions_func_v.html +2 -9
  141. package/SVF-doxygen/html/functions_func_w.html +9 -8
  142. package/SVF-doxygen/html/functions_func_z.html +1 -2
  143. package/SVF-doxygen/html/functions_func_~.html +10 -22
  144. package/SVF-doxygen/html/functions_g.html +61 -118
  145. package/SVF-doxygen/html/functions_h.html +21 -23
  146. package/SVF-doxygen/html/functions_i.html +76 -106
  147. package/SVF-doxygen/html/functions_j.html +4 -6
  148. package/SVF-doxygen/html/functions_k.html +0 -6
  149. package/SVF-doxygen/html/functions_l.html +11 -25
  150. package/SVF-doxygen/html/functions_m.html +8 -9
  151. package/SVF-doxygen/html/functions_n.html +14 -17
  152. package/SVF-doxygen/html/functions_o.html +71 -90
  153. package/SVF-doxygen/html/functions_p.html +31 -30
  154. package/SVF-doxygen/html/functions_r.html +11 -15
  155. package/SVF-doxygen/html/functions_rela.html +2 -3
  156. package/SVF-doxygen/html/functions_rela_b.html +0 -1
  157. package/SVF-doxygen/html/functions_rela_e.html +0 -1
  158. package/SVF-doxygen/html/functions_rela_i.html +0 -2
  159. package/SVF-doxygen/html/functions_rela_l.html +0 -1
  160. package/SVF-doxygen/html/functions_rela_o.html +0 -18
  161. package/SVF-doxygen/html/functions_rela_r.html +2 -2
  162. package/SVF-doxygen/html/functions_rela_s.html +4 -9
  163. package/SVF-doxygen/html/functions_s.html +45 -70
  164. package/SVF-doxygen/html/functions_t.html +29 -45
  165. package/SVF-doxygen/html/functions_type.html +0 -5
  166. package/SVF-doxygen/html/functions_type_c.html +1 -1
  167. package/SVF-doxygen/html/functions_type_k.html +0 -6
  168. package/SVF-doxygen/html/functions_type_l.html +4 -3
  169. package/SVF-doxygen/html/functions_type_t.html +0 -3
  170. package/SVF-doxygen/html/functions_type_v.html +3 -5
  171. package/SVF-doxygen/html/functions_u.html +8 -4
  172. package/SVF-doxygen/html/functions_v.html +11 -20
  173. package/SVF-doxygen/html/functions_vars.html +33 -56
  174. package/SVF-doxygen/html/functions_vars_a.html +3 -0
  175. package/SVF-doxygen/html/functions_vars_g.html +2 -5
  176. package/SVF-doxygen/html/functions_vars_i.html +3 -0
  177. package/SVF-doxygen/html/functions_vars_t.html +1 -0
  178. package/SVF-doxygen/html/functions_w.html +11 -10
  179. package/SVF-doxygen/html/functions_z.html +1 -2
  180. package/SVF-doxygen/html/functions_~.html +10 -22
  181. package/SVF-doxygen/html/globals.html +2 -2
  182. package/SVF-doxygen/html/globals_defs.html +1 -4
  183. package/SVF-doxygen/html/globals_n.html +2 -5
  184. package/SVF-doxygen/html/globals_s.html +1 -1
  185. package/SVF-doxygen/html/globals_vars.html +5 -5
  186. package/SVF-doxygen/html/globals_z.html +3 -3
  187. package/SVF-doxygen/html/hierarchy.html +622 -631
  188. package/SVF-doxygen/html/namespaceSVF.html +449 -458
  189. package/SVF-doxygen/html/search/all_0.js +155 -161
  190. package/SVF-doxygen/html/search/all_1.js +502 -503
  191. package/SVF-doxygen/html/search/all_10.js +325 -326
  192. package/SVF-doxygen/html/search/all_11.js +227 -227
  193. package/SVF-doxygen/html/search/all_12.js +563 -574
  194. package/SVF-doxygen/html/search/all_13.js +206 -208
  195. package/SVF-doxygen/html/search/all_14.js +74 -73
  196. package/SVF-doxygen/html/search/all_15.js +175 -176
  197. package/SVF-doxygen/html/search/all_16.js +77 -77
  198. package/SVF-doxygen/html/search/all_17.js +1 -1
  199. package/SVF-doxygen/html/search/all_18.js +1 -1
  200. package/SVF-doxygen/html/search/all_19.js +27 -27
  201. package/SVF-doxygen/html/search/all_1a.js +175 -179
  202. package/SVF-doxygen/html/search/all_2.js +180 -182
  203. package/SVF-doxygen/html/search/all_3.js +636 -642
  204. package/SVF-doxygen/html/search/all_4.js +237 -236
  205. package/SVF-doxygen/html/search/all_5.js +120 -126
  206. package/SVF-doxygen/html/search/all_6.js +236 -236
  207. package/SVF-doxygen/html/search/all_7.js +1040 -1056
  208. package/SVF-doxygen/html/search/all_8.js +211 -215
  209. package/SVF-doxygen/html/search/all_9.js +631 -638
  210. package/SVF-doxygen/html/search/all_a.js +46 -46
  211. package/SVF-doxygen/html/search/all_b.js +24 -26
  212. package/SVF-doxygen/html/search/all_c.js +113 -115
  213. package/SVF-doxygen/html/search/all_d.js +205 -205
  214. package/SVF-doxygen/html/search/all_e.js +207 -209
  215. package/SVF-doxygen/html/search/all_f.js +122 -122
  216. package/SVF-doxygen/html/search/classes_0.js +29 -28
  217. package/SVF-doxygen/html/search/classes_1.js +11 -11
  218. package/SVF-doxygen/html/search/classes_10.js +72 -74
  219. package/SVF-doxygen/html/search/classes_11.js +14 -14
  220. package/SVF-doxygen/html/search/classes_12.js +2 -2
  221. package/SVF-doxygen/html/search/classes_13.js +10 -10
  222. package/SVF-doxygen/html/search/classes_14.js +19 -19
  223. package/SVF-doxygen/html/search/classes_15.js +1 -1
  224. package/SVF-doxygen/html/search/classes_2.js +72 -73
  225. package/SVF-doxygen/html/search/classes_3.js +35 -35
  226. package/SVF-doxygen/html/search/classes_4.js +7 -8
  227. package/SVF-doxygen/html/search/classes_5.js +28 -28
  228. package/SVF-doxygen/html/search/classes_6.js +98 -98
  229. package/SVF-doxygen/html/search/classes_7.js +34 -38
  230. package/SVF-doxygen/html/search/classes_8.js +57 -59
  231. package/SVF-doxygen/html/search/classes_9.js +1 -1
  232. package/SVF-doxygen/html/search/classes_a.js +12 -12
  233. package/SVF-doxygen/html/search/classes_b.js +29 -29
  234. package/SVF-doxygen/html/search/classes_c.js +6 -6
  235. package/SVF-doxygen/html/search/classes_d.js +19 -19
  236. package/SVF-doxygen/html/search/classes_e.js +36 -36
  237. package/SVF-doxygen/html/search/classes_f.js +25 -25
  238. package/SVF-doxygen/html/search/defines_0.js +3 -3
  239. package/SVF-doxygen/html/search/defines_1.js +3 -3
  240. package/SVF-doxygen/html/search/defines_10.js +2 -2
  241. package/SVF-doxygen/html/search/defines_2.js +30 -30
  242. package/SVF-doxygen/html/search/defines_3.js +20 -20
  243. package/SVF-doxygen/html/search/defines_4.js +3 -3
  244. package/SVF-doxygen/html/search/defines_5.js +4 -4
  245. package/SVF-doxygen/html/search/defines_6.js +2 -2
  246. package/SVF-doxygen/html/search/defines_7.js +5 -5
  247. package/SVF-doxygen/html/search/defines_8.js +11 -11
  248. package/SVF-doxygen/html/search/defines_9.js +9 -9
  249. package/SVF-doxygen/html/search/defines_a.js +2 -2
  250. package/SVF-doxygen/html/search/defines_b.js +1 -1
  251. package/SVF-doxygen/html/search/defines_c.js +3 -4
  252. package/SVF-doxygen/html/search/defines_d.js +2 -2
  253. package/SVF-doxygen/html/search/defines_e.js +8 -8
  254. package/SVF-doxygen/html/search/defines_f.js +4 -4
  255. package/SVF-doxygen/html/search/enums_0.js +3 -4
  256. package/SVF-doxygen/html/search/enums_1.js +2 -2
  257. package/SVF-doxygen/html/search/enums_10.js +1 -1
  258. package/SVF-doxygen/html/search/enums_11.js +1 -1
  259. package/SVF-doxygen/html/search/enums_2.js +9 -9
  260. package/SVF-doxygen/html/search/enums_3.js +2 -1
  261. package/SVF-doxygen/html/search/enums_4.js +3 -4
  262. package/SVF-doxygen/html/search/enums_5.js +1 -1
  263. package/SVF-doxygen/html/search/enums_6.js +2 -2
  264. package/SVF-doxygen/html/search/enums_7.js +2 -2
  265. package/SVF-doxygen/html/search/enums_8.js +4 -4
  266. package/SVF-doxygen/html/search/enums_9.js +1 -1
  267. package/SVF-doxygen/html/search/enums_a.js +1 -1
  268. package/SVF-doxygen/html/search/enums_b.js +7 -7
  269. package/SVF-doxygen/html/search/enums_c.js +1 -1
  270. package/SVF-doxygen/html/search/enums_d.js +4 -4
  271. package/SVF-doxygen/html/search/enums_e.js +2 -2
  272. package/SVF-doxygen/html/search/enums_f.js +4 -4
  273. package/SVF-doxygen/html/search/enumvalues_0.js +15 -15
  274. package/SVF-doxygen/html/search/enumvalues_1.js +16 -16
  275. package/SVF-doxygen/html/search/enumvalues_10.js +36 -36
  276. package/SVF-doxygen/html/search/enumvalues_11.js +6 -5
  277. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  278. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  279. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  280. package/SVF-doxygen/html/search/enumvalues_15.js +4 -4
  281. package/SVF-doxygen/html/search/enumvalues_2.js +36 -37
  282. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  283. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  284. package/SVF-doxygen/html/search/enumvalues_5.js +50 -50
  285. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  286. package/SVF-doxygen/html/search/enumvalues_7.js +8 -8
  287. package/SVF-doxygen/html/search/enumvalues_8.js +24 -24
  288. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  289. package/SVF-doxygen/html/search/enumvalues_a.js +17 -17
  290. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  291. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  292. package/SVF-doxygen/html/search/enumvalues_d.js +19 -19
  293. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  294. package/SVF-doxygen/html/search/enumvalues_f.js +48 -49
  295. package/SVF-doxygen/html/search/files_0.js +18 -16
  296. package/SVF-doxygen/html/search/files_1.js +9 -9
  297. package/SVF-doxygen/html/search/files_10.js +8 -8
  298. package/SVF-doxygen/html/search/files_11.js +8 -8
  299. package/SVF-doxygen/html/search/files_12.js +2 -2
  300. package/SVF-doxygen/html/search/files_2.js +51 -53
  301. package/SVF-doxygen/html/search/files_3.js +14 -14
  302. package/SVF-doxygen/html/search/files_4.js +3 -5
  303. package/SVF-doxygen/html/search/files_5.js +13 -13
  304. package/SVF-doxygen/html/search/files_6.js +10 -10
  305. package/SVF-doxygen/html/search/files_7.js +15 -17
  306. package/SVF-doxygen/html/search/files_8.js +13 -13
  307. package/SVF-doxygen/html/search/files_9.js +18 -18
  308. package/SVF-doxygen/html/search/files_a.js +3 -3
  309. package/SVF-doxygen/html/search/files_b.js +4 -4
  310. package/SVF-doxygen/html/search/files_c.js +20 -20
  311. package/SVF-doxygen/html/search/files_d.js +4 -4
  312. package/SVF-doxygen/html/search/files_e.js +57 -62
  313. package/SVF-doxygen/html/search/files_f.js +8 -8
  314. package/SVF-doxygen/html/search/functions_0.js +13 -13
  315. package/SVF-doxygen/html/search/functions_1.js +366 -368
  316. package/SVF-doxygen/html/search/functions_10.js +139 -140
  317. package/SVF-doxygen/html/search/functions_11.js +140 -140
  318. package/SVF-doxygen/html/search/functions_12.js +294 -299
  319. package/SVF-doxygen/html/search/functions_13.js +72 -73
  320. package/SVF-doxygen/html/search/functions_14.js +41 -41
  321. package/SVF-doxygen/html/search/functions_15.js +70 -72
  322. package/SVF-doxygen/html/search/functions_16.js +38 -38
  323. package/SVF-doxygen/html/search/functions_17.js +3 -3
  324. package/SVF-doxygen/html/search/functions_18.js +175 -179
  325. package/SVF-doxygen/html/search/functions_2.js +92 -94
  326. package/SVF-doxygen/html/search/functions_3.js +258 -261
  327. package/SVF-doxygen/html/search/functions_4.js +85 -85
  328. package/SVF-doxygen/html/search/functions_5.js +54 -57
  329. package/SVF-doxygen/html/search/functions_6.js +65 -65
  330. package/SVF-doxygen/html/search/functions_7.js +857 -872
  331. package/SVF-doxygen/html/search/functions_8.js +162 -162
  332. package/SVF-doxygen/html/search/functions_9.js +440 -446
  333. package/SVF-doxygen/html/search/functions_a.js +30 -30
  334. package/SVF-doxygen/html/search/functions_b.js +2 -2
  335. package/SVF-doxygen/html/search/functions_c.js +22 -25
  336. package/SVF-doxygen/html/search/functions_d.js +82 -82
  337. package/SVF-doxygen/html/search/functions_e.js +34 -36
  338. package/SVF-doxygen/html/search/functions_f.js +58 -58
  339. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  340. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  341. package/SVF-doxygen/html/search/related_0.js +4 -4
  342. package/SVF-doxygen/html/search/related_1.js +2 -2
  343. package/SVF-doxygen/html/search/related_2.js +2 -2
  344. package/SVF-doxygen/html/search/related_3.js +2 -2
  345. package/SVF-doxygen/html/search/related_4.js +2 -2
  346. package/SVF-doxygen/html/search/related_5.js +1 -1
  347. package/SVF-doxygen/html/search/related_6.js +2 -2
  348. package/SVF-doxygen/html/search/related_7.js +5 -5
  349. package/SVF-doxygen/html/search/related_8.js +2 -2
  350. package/SVF-doxygen/html/search/related_9.js +4 -4
  351. package/SVF-doxygen/html/search/related_a.js +19 -19
  352. package/SVF-doxygen/html/search/related_b.js +4 -4
  353. package/SVF-doxygen/html/search/related_c.js +2 -2
  354. package/SVF-doxygen/html/search/related_d.js +11 -12
  355. package/SVF-doxygen/html/search/related_e.js +2 -2
  356. package/SVF-doxygen/html/search/related_f.js +2 -2
  357. package/SVF-doxygen/html/search/typedefs_0.js +18 -19
  358. package/SVF-doxygen/html/search/typedefs_1.js +27 -27
  359. package/SVF-doxygen/html/search/typedefs_10.js +65 -65
  360. package/SVF-doxygen/html/search/typedefs_11.js +12 -13
  361. package/SVF-doxygen/html/search/typedefs_12.js +13 -13
  362. package/SVF-doxygen/html/search/typedefs_13.js +40 -40
  363. package/SVF-doxygen/html/search/typedefs_14.js +11 -11
  364. package/SVF-doxygen/html/search/typedefs_2.js +125 -125
  365. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  366. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  367. package/SVF-doxygen/html/search/typedefs_5.js +42 -42
  368. package/SVF-doxygen/html/search/typedefs_6.js +54 -54
  369. package/SVF-doxygen/html/search/typedefs_7.js +47 -47
  370. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  371. package/SVF-doxygen/html/search/typedefs_9.js +4 -6
  372. package/SVF-doxygen/html/search/typedefs_a.js +30 -29
  373. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  374. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  375. package/SVF-doxygen/html/search/typedefs_d.js +15 -15
  376. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  377. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  378. package/SVF-doxygen/html/search/variables_0.js +171 -177
  379. package/SVF-doxygen/html/search/variables_1.js +78 -77
  380. package/SVF-doxygen/html/search/variables_10.js +98 -98
  381. package/SVF-doxygen/html/search/variables_11.js +47 -47
  382. package/SVF-doxygen/html/search/variables_12.js +93 -93
  383. package/SVF-doxygen/html/search/variables_13.js +76 -76
  384. package/SVF-doxygen/html/search/variables_14.js +14 -14
  385. package/SVF-doxygen/html/search/variables_15.js +49 -49
  386. package/SVF-doxygen/html/search/variables_16.js +11 -11
  387. package/SVF-doxygen/html/search/variables_17.js +1 -1
  388. package/SVF-doxygen/html/search/variables_18.js +17 -17
  389. package/SVF-doxygen/html/search/variables_2.js +40 -40
  390. package/SVF-doxygen/html/search/variables_3.js +143 -143
  391. package/SVF-doxygen/html/search/variables_4.js +51 -51
  392. package/SVF-doxygen/html/search/variables_5.js +39 -39
  393. package/SVF-doxygen/html/search/variables_6.js +66 -66
  394. package/SVF-doxygen/html/search/variables_7.js +33 -34
  395. package/SVF-doxygen/html/search/variables_8.js +8 -8
  396. package/SVF-doxygen/html/search/variables_9.js +80 -79
  397. package/SVF-doxygen/html/search/variables_a.js +4 -4
  398. package/SVF-doxygen/html/search/variables_b.js +10 -10
  399. package/SVF-doxygen/html/search/variables_c.js +44 -44
  400. package/SVF-doxygen/html/search/variables_d.js +58 -58
  401. package/SVF-doxygen/html/search/variables_e.js +123 -123
  402. package/SVF-doxygen/html/search/variables_f.js +31 -31
  403. package/SVF-doxygen/html/structSVF_1_1AbstractValue-members.html +164 -0
  404. package/SVF-doxygen/html/structSVF_1_1AbstractValue.html +2820 -0
  405. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1SparseAbstractState_01_4-members.html +84 -0
  406. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1SparseAbstractState_01_4.html +130 -0
  407. package/SVF-doxygen/html/svf-ex_8cpp.html +25 -25
  408. package/SVF-doxygen/html/svf-ex_8cpp_source.html +26 -26
  409. package/package.json +1 -1
  410. package/svf/include/AE/Core/AbstractState.h +749 -0
  411. package/svf/include/AE/Core/AbstractValue.h +514 -39
  412. package/svf/include/AE/Core/AddressValue.h +32 -25
  413. package/svf/include/AE/Core/IntervalValue.h +10 -24
  414. package/svf/include/AE/Core/RelExeState.h +1 -1
  415. package/svf/include/AE/Core/RelationSolver.h +9 -9
  416. package/svf/include/AE/Svfexe/{AbstractExecution.h → AbstractInterpretation.h} +27 -26
  417. package/svf/include/AE/Svfexe/BufOverflowChecker.h +5 -5
  418. package/svf/include/AE/Svfexe/ICFGSimplification.h +1 -2
  419. package/svf/include/AE/Svfexe/{SVFIR2ItvExeState.h → SVFIR2AbsState.h} +30 -33
  420. package/svf/lib/AE/Core/AbstractState.cpp +357 -0
  421. package/svf/lib/AE/Core/RelationSolver.cpp +31 -31
  422. package/svf/lib/AE/Core/SVFIR2Relation.cpp +17 -16
  423. package/svf/lib/AE/Svfexe/{AbstractExecution.cpp → AbstractInterpretation.cpp} +166 -156
  424. package/svf/lib/AE/Svfexe/BufOverflowChecker.cpp +51 -47
  425. package/svf/lib/AE/Svfexe/{SVFIR2ItvExeState.cpp → SVFIR2AbsState.cpp} +211 -247
  426. package/svf-llvm/tools/AE/ae.cpp +105 -108
  427. package/svf-llvm/tools/Example/svf-ex.cpp +2 -2
  428. package/svf/include/AE/Core/ConsExeState.h +0 -453
  429. package/svf/include/AE/Core/ExeState.h +0 -304
  430. package/svf/include/AE/Core/IntervalExeState.h +0 -650
  431. package/svf/include/AE/Core/SingleAbsValue.h +0 -477
  432. package/svf/include/AE/Core/SymState.h +0 -221
  433. package/svf/include/AE/Svfexe/SVFIR2ConsExeState.h +0 -148
  434. package/svf/lib/AE/Core/ConsExeState.cpp +0 -603
  435. package/svf/lib/AE/Core/ExeState.cpp +0 -117
  436. package/svf/lib/AE/Core/IntervalExeState.cpp +0 -329
  437. package/svf/lib/AE/Core/SymState.cpp +0 -37
  438. package/svf/lib/AE/Svfexe/SVFIR2ConsExeState.cpp +0 -772
@@ -0,0 +1,3137 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+ <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+ <meta name="generator" content="Doxygen 1.8.17"/>
7
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
8
+ <title>Static Value-Flow Analysis: SVF::SVFIR2AbsState Class Reference</title>
9
+ <link href="tabs.css" rel="stylesheet" type="text/css"/>
10
+ <script type="text/javascript" src="jquery.js"></script>
11
+ <script type="text/javascript" src="dynsections.js"></script>
12
+ <link href="search/search.css" rel="stylesheet" type="text/css"/>
13
+ <script type="text/javascript" src="search/searchdata.js"></script>
14
+ <script type="text/javascript" src="search/search.js"></script>
15
+ <link href="doxygen.css" rel="stylesheet" type="text/css" />
16
+ </head>
17
+ <body>
18
+ <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
19
+ <div id="titlearea">
20
+ <table cellspacing="0" cellpadding="0">
21
+ <tbody>
22
+ <tr style="height: 56px;">
23
+ <td id="projectalign" style="padding-left: 0.5em;">
24
+ <div id="projectname">Static Value-Flow Analysis
25
+ </div>
26
+ </td>
27
+ </tr>
28
+ </tbody>
29
+ </table>
30
+ </div>
31
+ <!-- end header part -->
32
+ <!-- Generated by Doxygen 1.8.17 -->
33
+ <script type="text/javascript">
34
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
35
+ var searchBox = new SearchBox("searchBox", "search",false,'Search');
36
+ /* @license-end */
37
+ </script>
38
+ <script type="text/javascript" src="menudata.js"></script>
39
+ <script type="text/javascript" src="menu.js"></script>
40
+ <script type="text/javascript">
41
+ /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
42
+ $(function() {
43
+ initMenu('',true,false,'search.php','Search');
44
+ $(document).ready(function() { init_search(); });
45
+ });
46
+ /* @license-end */</script>
47
+ <div id="main-nav"></div>
48
+ <!-- window showing the filter options -->
49
+ <div id="MSearchSelectWindow"
50
+ onmouseover="return searchBox.OnSearchSelectShow()"
51
+ onmouseout="return searchBox.OnSearchSelectHide()"
52
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
53
+ </div>
54
+
55
+ <!-- iframe showing the search results (closed by default) -->
56
+ <div id="MSearchResultsWindow">
57
+ <iframe src="javascript:void(0)" frameborder="0"
58
+ name="MSearchResults" id="MSearchResults">
59
+ </iframe>
60
+ </div>
61
+
62
+ <div id="nav-path" class="navpath">
63
+ <ul>
64
+ <li class="navelem"><a class="el" href="namespaceSVF.html">SVF</a></li><li class="navelem"><a class="el" href="classSVF_1_1SVFIR2AbsState.html">SVFIR2AbsState</a></li> </ul>
65
+ </div>
66
+ </div><!-- top -->
67
+ <div class="header">
68
+ <div class="summary">
69
+ <a href="#pub-methods">Public Member Functions</a> &#124;
70
+ <a href="#pub-static-methods">Static Public Member Functions</a> &#124;
71
+ <a href="#pub-static-attribs">Static Public Attributes</a> &#124;
72
+ <a href="#pro-methods">Protected Member Functions</a> &#124;
73
+ <a href="#pri-methods">Private Member Functions</a> &#124;
74
+ <a href="#pri-attribs">Private Attributes</a> &#124;
75
+ <a href="classSVF_1_1SVFIR2AbsState-members.html">List of all members</a> </div>
76
+ <div class="headertitle">
77
+ <div class="title">SVF::SVFIR2AbsState Class Reference</div> </div>
78
+ </div><!--header-->
79
+ <div class="contents">
80
+
81
+ <p><code>#include &lt;<a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>&gt;</code></p>
82
+ <table class="memberdecls">
83
+ <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
84
+ Public Member Functions</h2></td></tr>
85
+ <tr class="memitem:a0141f9c8689e906a082f3566cb5d2cb6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a0141f9c8689e906a082f3566cb5d2cb6">SVFIR2AbsState</a> (<a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> *ir)</td></tr>
86
+ <tr class="separator:a0141f9c8689e906a082f3566cb5d2cb6"><td class="memSeparator" colspan="2">&#160;</td></tr>
87
+ <tr class="memitem:a05c1e3d5240466dda229080df6cb48f5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a05c1e3d5240466dda229080df6cb48f5">setEs</a> (const <a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a> &amp;es)</td></tr>
88
+ <tr class="separator:a05c1e3d5240466dda229080df6cb48f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
89
+ <tr class="memitem:a260c4ccfd79a2b9dbd580fa2030ac238"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a260c4ccfd79a2b9dbd580fa2030ac238">getEs</a> ()</td></tr>
90
+ <tr class="separator:a260c4ccfd79a2b9dbd580fa2030ac238"><td class="memSeparator" colspan="2">&#160;</td></tr>
91
+ <tr class="memitem:ab58a5cc7a2bc6c38e87c8e5beb725b7a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#ab58a5cc7a2bc6c38e87c8e5beb725b7a">setRelEs</a> (const <a class="el" href="classSVF_1_1RelExeState.html">RelExeState</a> &amp;relEs)</td></tr>
92
+ <tr class="separator:ab58a5cc7a2bc6c38e87c8e5beb725b7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
93
+ <tr class="memitem:ae2ee40a59aec3fb7c7abc4ddb7784bcf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1RelExeState.html">RelExeState</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#ae2ee40a59aec3fb7c7abc4ddb7784bcf">getRelEs</a> ()</td></tr>
94
+ <tr class="separator:ae2ee40a59aec3fb7c7abc4ddb7784bcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
95
+ <tr class="memitem:a72c49e5c07eacfeeb494f26c761ec257"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a72c49e5c07eacfeeb494f26c761ec257">widenAddrs</a> (<a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a> &amp;lhs, const <a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a> &amp;rhs)</td></tr>
96
+ <tr class="separator:a72c49e5c07eacfeeb494f26c761ec257"><td class="memSeparator" colspan="2">&#160;</td></tr>
97
+ <tr class="memitem:ab18f664b8bf3df6a772aa403c9a3d13d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#ab18f664b8bf3df6a772aa403c9a3d13d">narrowAddrs</a> (<a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a> &amp;lhs, const <a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a> &amp;rhs)</td></tr>
98
+ <tr class="separator:ab18f664b8bf3df6a772aa403c9a3d13d"><td class="memSeparator" colspan="2">&#160;</td></tr>
99
+ <tr class="memitem:a10a83572bf5dee369b54cda74f402073"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a10a83572bf5dee369b54cda74f402073">getGepObjAddress</a> (<a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pointer, <a class="el" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> <a class="el" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>)</td></tr>
100
+ <tr class="memdesc:a10a83572bf5dee369b54cda74f402073"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the field address given a pointer points to a struct object and an offset. <a href="classSVF_1_1SVFIR2AbsState.html#a10a83572bf5dee369b54cda74f402073">More...</a><br /></td></tr>
101
+ <tr class="separator:a10a83572bf5dee369b54cda74f402073"><td class="memSeparator" colspan="2">&#160;</td></tr>
102
+ <tr class="memitem:a4e032a5e0898f0e349927d5a86c8477c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a4e032a5e0898f0e349927d5a86c8477c">getRangeLimitFromType</a> (const <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> *<a class="el" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</td></tr>
103
+ <tr class="memdesc:a4e032a5e0898f0e349927d5a86c8477c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the value range of Integer <a class="el" href="namespaceSVF.html" title="for isBitcode">SVF</a> Type, e.g. unsigned i8 Type-&gt;[0, 255], signed i8 Type-&gt;[-128, 127]. <a href="classSVF_1_1SVFIR2AbsState.html#a4e032a5e0898f0e349927d5a86c8477c">More...</a><br /></td></tr>
104
+ <tr class="separator:a4e032a5e0898f0e349927d5a86c8477c"><td class="memSeparator" colspan="2">&#160;</td></tr>
105
+ <tr class="memitem:a1e270574a1d6f0894868cfb098ffbb8b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a1e270574a1d6f0894868cfb098ffbb8b">getZExtValue</a> (const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> *var)</td></tr>
106
+ <tr class="separator:a1e270574a1d6f0894868cfb098ffbb8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
107
+ <tr class="memitem:aa925878721ae7028c3edae0c7fe8e127"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#aa925878721ae7028c3edae0c7fe8e127">getSExtValue</a> (const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> *var)</td></tr>
108
+ <tr class="separator:aa925878721ae7028c3edae0c7fe8e127"><td class="memSeparator" colspan="2">&#160;</td></tr>
109
+ <tr class="memitem:af48bab5352f5d1927aa467e1eb59c09f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#af48bab5352f5d1927aa467e1eb59c09f">getFPToSIntValue</a> (const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> *var)</td></tr>
110
+ <tr class="separator:af48bab5352f5d1927aa467e1eb59c09f"><td class="memSeparator" colspan="2">&#160;</td></tr>
111
+ <tr class="memitem:ae6a36e79bdc4506f9f011ad100125444"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#ae6a36e79bdc4506f9f011ad100125444">getFPToUIntValue</a> (const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> *var)</td></tr>
112
+ <tr class="separator:ae6a36e79bdc4506f9f011ad100125444"><td class="memSeparator" colspan="2">&#160;</td></tr>
113
+ <tr class="memitem:af38b6e392cfd91b3516f2bc9feacce34"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#af38b6e392cfd91b3516f2bc9feacce34">getSIntToFPValue</a> (const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> *var)</td></tr>
114
+ <tr class="separator:af38b6e392cfd91b3516f2bc9feacce34"><td class="memSeparator" colspan="2">&#160;</td></tr>
115
+ <tr class="memitem:ae247497ab346e612f645d39041b2ce32"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#ae247497ab346e612f645d39041b2ce32">getUIntToFPValue</a> (const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> *var)</td></tr>
116
+ <tr class="separator:ae247497ab346e612f645d39041b2ce32"><td class="memSeparator" colspan="2">&#160;</td></tr>
117
+ <tr class="memitem:a38a62cdec2fac4ad2e64b86b4eb3b0bf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a38a62cdec2fac4ad2e64b86b4eb3b0bf">getTruncValue</a> (const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> *var, const <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> *dstType)</td></tr>
118
+ <tr class="separator:a38a62cdec2fac4ad2e64b86b4eb3b0bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
119
+ <tr class="memitem:a5ba833f2f98f5b1b1a8a7ff7ecdb72b9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a5ba833f2f98f5b1b1a8a7ff7ecdb72b9">getFPTruncValue</a> (const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> *var, const <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> *dstType)</td></tr>
120
+ <tr class="separator:a5ba833f2f98f5b1b1a8a7ff7ecdb72b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
121
+ <tr class="memitem:a21e927af79c73460ff5629cbd4961163"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a21e927af79c73460ff5629cbd4961163">getByteOffset</a> (const <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a> *gep)</td></tr>
122
+ <tr class="separator:a21e927af79c73460ff5629cbd4961163"><td class="memSeparator" colspan="2">&#160;</td></tr>
123
+ <tr class="memitem:a928b35a6ea960a94470b0983008bfa9d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a928b35a6ea960a94470b0983008bfa9d">getItvOfFlattenedElemIndex</a> (const <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a> *gep)</td></tr>
124
+ <tr class="memdesc:a928b35a6ea960a94470b0983008bfa9d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the offset expression of a <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a>. <a href="classSVF_1_1SVFIR2AbsState.html#a928b35a6ea960a94470b0983008bfa9d">More...</a><br /></td></tr>
125
+ <tr class="separator:a928b35a6ea960a94470b0983008bfa9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
126
+ <tr class="memitem:ad247b7d3ff5fd99c0d92cac8f1c876eb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#ad247b7d3ff5fd99c0d92cac8f1c876eb">applySummary</a> (<a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a> &amp;es)</td></tr>
127
+ <tr class="separator:ad247b7d3ff5fd99c0d92cac8f1c876eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
128
+ <tr class="memitem:ae1490bd3f93a4fcbb2390a3f30539b8a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#ae1490bd3f93a4fcbb2390a3f30539b8a">initObjVar</a> (const <a class="el" href="classSVF_1_1ObjVar.html">ObjVar</a> *objVar, <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> varId)</td></tr>
129
+ <tr class="memdesc:ae1490bd3f93a4fcbb2390a3f30539b8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Init <a class="el" href="classSVF_1_1ObjVar.html">ObjVar</a>. <a href="classSVF_1_1SVFIR2AbsState.html#ae1490bd3f93a4fcbb2390a3f30539b8a">More...</a><br /></td></tr>
130
+ <tr class="separator:ae1490bd3f93a4fcbb2390a3f30539b8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
131
+ <tr class="memitem:aaecd2f39d5038009cb41b849fd8fe55f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#aaecd2f39d5038009cb41b849fd8fe55f">initSVFVar</a> (<a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> varId)</td></tr>
132
+ <tr class="memdesc:aaecd2f39d5038009cb41b849fd8fe55f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Init <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a>. <a href="classSVF_1_1SVFIR2AbsState.html#aaecd2f39d5038009cb41b849fd8fe55f">More...</a><br /></td></tr>
133
+ <tr class="separator:aaecd2f39d5038009cb41b849fd8fe55f"><td class="memSeparator" colspan="2">&#160;</td></tr>
134
+ <tr class="memitem:aa3e62b9ef912def502b95992199f5d8c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a> (<a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> id)</td></tr>
135
+ <tr class="separator:aa3e62b9ef912def502b95992199f5d8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
136
+ <tr class="memitem:a26afaf14db3b2a56e2d325630e5ba841"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">inVarToValTable</a> (<a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> id) const</td></tr>
137
+ <tr class="memdesc:a26afaf14db3b2a56e2d325630e5ba841"><td class="mdescLeft">&#160;</td><td class="mdescRight">whether the variable is in varToVal table <a href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">More...</a><br /></td></tr>
138
+ <tr class="separator:a26afaf14db3b2a56e2d325630e5ba841"><td class="memSeparator" colspan="2">&#160;</td></tr>
139
+ <tr class="memitem:a62baa9403069a9b1e010eaeb2f6b9b34"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a> (<a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> id) const</td></tr>
140
+ <tr class="memdesc:a62baa9403069a9b1e010eaeb2f6b9b34"><td class="mdescLeft">&#160;</td><td class="mdescRight">whether the variable is in varToAddrs table <a href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">More...</a><br /></td></tr>
141
+ <tr class="separator:a62baa9403069a9b1e010eaeb2f6b9b34"><td class="memSeparator" colspan="2">&#160;</td></tr>
142
+ <tr class="memitem:a847a9d505d3ed722b5b3d32cbcbd72ee"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a847a9d505d3ed722b5b3d32cbcbd72ee">inLocToValTable</a> (<a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> id) const</td></tr>
143
+ <tr class="memdesc:a847a9d505d3ed722b5b3d32cbcbd72ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">whether the memory address stores a interval value <a href="classSVF_1_1SVFIR2AbsState.html#a847a9d505d3ed722b5b3d32cbcbd72ee">More...</a><br /></td></tr>
144
+ <tr class="separator:a847a9d505d3ed722b5b3d32cbcbd72ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
145
+ <tr class="memitem:a8eb06c3e65594dbcb602ec472258f09c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a8eb06c3e65594dbcb602ec472258f09c">inLocToAddrsTable</a> (<a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> id) const</td></tr>
146
+ <tr class="memdesc:a8eb06c3e65594dbcb602ec472258f09c"><td class="mdescLeft">&#160;</td><td class="mdescRight">whether the memory address stores memory addresses <a href="classSVF_1_1SVFIR2AbsState.html#a8eb06c3e65594dbcb602ec472258f09c">More...</a><br /></td></tr>
147
+ <tr class="separator:a8eb06c3e65594dbcb602ec472258f09c"><td class="memSeparator" colspan="2">&#160;</td></tr>
148
+ <tr class="memitem:a4dc5a3a3778f84d810ad37a885804134"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a4dc5a3a3778f84d810ad37a885804134">moveToGlobal</a> ()</td></tr>
149
+ <tr class="separator:a4dc5a3a3778f84d810ad37a885804134"><td class="memSeparator" colspan="2">&#160;</td></tr>
150
+ <tr class="memitem:a21593731d5c76fe84a553037cfb4f558"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a21593731d5c76fe84a553037cfb4f558">translateAddr</a> (const <a class="el" href="classSVF_1_1AddrStmt.html">AddrStmt</a> *addr)</td></tr>
151
+ <tr class="separator:a21593731d5c76fe84a553037cfb4f558"><td class="memSeparator" colspan="2">&#160;</td></tr>
152
+ <tr class="memitem:a43a5d141547d1ceb37be60ce9647af91"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a43a5d141547d1ceb37be60ce9647af91">translateBinary</a> (const <a class="el" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> *binary)</td></tr>
153
+ <tr class="separator:a43a5d141547d1ceb37be60ce9647af91"><td class="memSeparator" colspan="2">&#160;</td></tr>
154
+ <tr class="memitem:ad574a6e7e28daebcd074021d831a1d1a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#ad574a6e7e28daebcd074021d831a1d1a">translateCmp</a> (const <a class="el" href="classSVF_1_1CmpStmt.html">CmpStmt</a> *cmp)</td></tr>
155
+ <tr class="separator:ad574a6e7e28daebcd074021d831a1d1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
156
+ <tr class="memitem:a79839998d6db869a690ab63fdf635873"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a79839998d6db869a690ab63fdf635873">translateLoad</a> (const <a class="el" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *load)</td></tr>
157
+ <tr class="separator:a79839998d6db869a690ab63fdf635873"><td class="memSeparator" colspan="2">&#160;</td></tr>
158
+ <tr class="memitem:a4d5f3771dbe847f883594a0b1c2e246f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a4d5f3771dbe847f883594a0b1c2e246f">translateStore</a> (const <a class="el" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *store)</td></tr>
159
+ <tr class="separator:a4d5f3771dbe847f883594a0b1c2e246f"><td class="memSeparator" colspan="2">&#160;</td></tr>
160
+ <tr class="memitem:a860fd3feafa0e76b53d4972f8c187dcd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a860fd3feafa0e76b53d4972f8c187dcd">translateCopy</a> (const <a class="el" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *<a class="el" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>)</td></tr>
161
+ <tr class="separator:a860fd3feafa0e76b53d4972f8c187dcd"><td class="memSeparator" colspan="2">&#160;</td></tr>
162
+ <tr class="memitem:a216039856e097a03cc158ce5729f1790"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a216039856e097a03cc158ce5729f1790">translateCall</a> (const <a class="el" href="classSVF_1_1CallPE.html">CallPE</a> *callPE)</td></tr>
163
+ <tr class="separator:a216039856e097a03cc158ce5729f1790"><td class="memSeparator" colspan="2">&#160;</td></tr>
164
+ <tr class="memitem:a9cdb7cc614bd71884304c627f141fd3d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a9cdb7cc614bd71884304c627f141fd3d">translateRet</a> (const <a class="el" href="classSVF_1_1RetPE.html">RetPE</a> *retPE)</td></tr>
165
+ <tr class="separator:a9cdb7cc614bd71884304c627f141fd3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
166
+ <tr class="memitem:a934d7f60b5610bc39c5319dab927aa1b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a934d7f60b5610bc39c5319dab927aa1b">translateGep</a> (const <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a> *gep)</td></tr>
167
+ <tr class="separator:a934d7f60b5610bc39c5319dab927aa1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
168
+ <tr class="memitem:a05ee8c5925b490f24f0d7662d0e00d42"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a05ee8c5925b490f24f0d7662d0e00d42">translateSelect</a> (const <a class="el" href="classSVF_1_1SelectStmt.html">SelectStmt</a> *select)</td></tr>
169
+ <tr class="separator:a05ee8c5925b490f24f0d7662d0e00d42"><td class="memSeparator" colspan="2">&#160;</td></tr>
170
+ <tr class="memitem:a21a24cc4e0c9e4750332e6faa036f6f2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a21a24cc4e0c9e4750332e6faa036f6f2">translatePhi</a> (const <a class="el" href="classSVF_1_1PhiStmt.html">PhiStmt</a> *phi)</td></tr>
171
+ <tr class="separator:a21a24cc4e0c9e4750332e6faa036f6f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
172
+ </table><table class="memberdecls">
173
+ <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
174
+ Static Public Member Functions</h2></td></tr>
175
+ <tr class="memitem:a36a428b990477a204cd73151680259a2"><td class="memItemLeft" align="right" valign="top">static z3::context &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a36a428b990477a204cd73151680259a2">getContext</a> ()</td></tr>
176
+ <tr class="separator:a36a428b990477a204cd73151680259a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
177
+ <tr class="memitem:ac37760566b534d89a61d789b00efb993"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">getInternalID</a> (<a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> idx)</td></tr>
178
+ <tr class="memdesc:ac37760566b534d89a61d789b00efb993"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the internal index if idx is an address otherwise return the value of idx. <a href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">More...</a><br /></td></tr>
179
+ <tr class="separator:ac37760566b534d89a61d789b00efb993"><td class="memSeparator" colspan="2">&#160;</td></tr>
180
+ <tr class="memitem:a63d855cf3342454ce5154fa7605f9935"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a63d855cf3342454ce5154fa7605f9935">getVirtualMemAddress</a> (<a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> idx)</td></tr>
181
+ <tr class="memdesc:a63d855cf3342454ce5154fa7605f9935"><td class="mdescLeft">&#160;</td><td class="mdescRight">The physical address starts with 0x7f...... + idx. <a href="classSVF_1_1SVFIR2AbsState.html#a63d855cf3342454ce5154fa7605f9935">More...</a><br /></td></tr>
182
+ <tr class="separator:a63d855cf3342454ce5154fa7605f9935"><td class="memSeparator" colspan="2">&#160;</td></tr>
183
+ <tr class="memitem:a3bbf4cda2e3892c7359279337fab7d24"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a3bbf4cda2e3892c7359279337fab7d24">isVirtualMemAddress</a> (<a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> val)</td></tr>
184
+ <tr class="memdesc:a3bbf4cda2e3892c7359279337fab7d24"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check bit value of val start with 0x7F000000, filter by 0xFF000000. <a href="classSVF_1_1SVFIR2AbsState.html#a3bbf4cda2e3892c7359279337fab7d24">More...</a><br /></td></tr>
185
+ <tr class="separator:a3bbf4cda2e3892c7359279337fab7d24"><td class="memSeparator" colspan="2">&#160;</td></tr>
186
+ </table><table class="memberdecls">
187
+ <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
188
+ Static Public Attributes</h2></td></tr>
189
+ <tr class="memitem:a46a2f2eedd729f4764f630d72391ec97"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a46a2f2eedd729f4764f630d72391ec97">globalNulladdrs</a> = <a class="el" href="classSVF_1_1AddressValue.html">AddressValue</a>()</td></tr>
190
+ <tr class="separator:a46a2f2eedd729f4764f630d72391ec97"><td class="memSeparator" colspan="2">&#160;</td></tr>
191
+ </table><table class="memberdecls">
192
+ <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
193
+ Protected Member Functions</h2></td></tr>
194
+ <tr class="memitem:aba122108bcba27e86c3b9079125698a2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#aba122108bcba27e86c3b9079125698a2">translateBinaryRel</a> (const <a class="el" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> *binary)</td></tr>
195
+ <tr class="separator:aba122108bcba27e86c3b9079125698a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
196
+ <tr class="memitem:ad44dba4fb64a2a664d315f7c71d095d4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#ad44dba4fb64a2a664d315f7c71d095d4">translateCmpRel</a> (const <a class="el" href="classSVF_1_1CmpStmt.html">CmpStmt</a> *cmp)</td></tr>
197
+ <tr class="separator:ad44dba4fb64a2a664d315f7c71d095d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
198
+ <tr class="memitem:aff94d5675005beef8a3c761839d4a94b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#aff94d5675005beef8a3c761839d4a94b">translateLoadRel</a> (const <a class="el" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *load)</td></tr>
199
+ <tr class="separator:aff94d5675005beef8a3c761839d4a94b"><td class="memSeparator" colspan="2">&#160;</td></tr>
200
+ <tr class="memitem:a9ab9226636ccfc53d59017ad5e5a6ab7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a9ab9226636ccfc53d59017ad5e5a6ab7">translateStoreRel</a> (const <a class="el" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *store)</td></tr>
201
+ <tr class="separator:a9ab9226636ccfc53d59017ad5e5a6ab7"><td class="memSeparator" colspan="2">&#160;</td></tr>
202
+ <tr class="memitem:ac232760ba4cfe4d5f7d9502ac00780fd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#ac232760ba4cfe4d5f7d9502ac00780fd">translateCopyRel</a> (const <a class="el" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *<a class="el" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>)</td></tr>
203
+ <tr class="separator:ac232760ba4cfe4d5f7d9502ac00780fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
204
+ <tr class="memitem:a1ea10ebb9cf317029ef3d45fca71d24d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a1ea10ebb9cf317029ef3d45fca71d24d">translateCallRel</a> (const <a class="el" href="classSVF_1_1CallPE.html">CallPE</a> *callPE)</td></tr>
205
+ <tr class="separator:a1ea10ebb9cf317029ef3d45fca71d24d"><td class="memSeparator" colspan="2">&#160;</td></tr>
206
+ <tr class="memitem:aee3c4eed017d379ebc1724fa395c6d92"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#aee3c4eed017d379ebc1724fa395c6d92">translateRetRel</a> (const <a class="el" href="classSVF_1_1RetPE.html">RetPE</a> *retPE)</td></tr>
207
+ <tr class="separator:aee3c4eed017d379ebc1724fa395c6d92"><td class="memSeparator" colspan="2">&#160;</td></tr>
208
+ <tr class="memitem:a562b6b73c7d6c2157ba369c4e25b0ed1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a562b6b73c7d6c2157ba369c4e25b0ed1">translateSelectRel</a> (const <a class="el" href="classSVF_1_1SelectStmt.html">SelectStmt</a> *select)</td></tr>
209
+ <tr class="separator:a562b6b73c7d6c2157ba369c4e25b0ed1"><td class="memSeparator" colspan="2">&#160;</td></tr>
210
+ <tr class="memitem:a31f7fd30718aa9e0e4a1da5c6baed114"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a31f7fd30718aa9e0e4a1da5c6baed114">translatePhiRel</a> (const <a class="el" href="classSVF_1_1PhiStmt.html">PhiStmt</a> *phi, const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *srcNode, const std::vector&lt; const <a class="el" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> * &gt; &amp;path)</td></tr>
211
+ <tr class="separator:a31f7fd30718aa9e0e4a1da5c6baed114"><td class="memSeparator" colspan="2">&#160;</td></tr>
212
+ </table><table class="memberdecls">
213
+ <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
214
+ Private Member Functions</h2></td></tr>
215
+ <tr class="memitem:ad78244e7e7b203619e8065598e0d519d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#ad78244e7e7b203619e8065598e0d519d">getZExtValue</a> (const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> *var, const <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> *)</td></tr>
216
+ <tr class="separator:ad78244e7e7b203619e8065598e0d519d"><td class="memSeparator" colspan="2">&#160;</td></tr>
217
+ </table><table class="memberdecls">
218
+ <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
219
+ Private Attributes</h2></td></tr>
220
+ <tr class="memitem:a80a0f0a20e993c6fcffc89f9de409f44"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a80a0f0a20e993c6fcffc89f9de409f44">_svfir</a></td></tr>
221
+ <tr class="separator:a80a0f0a20e993c6fcffc89f9de409f44"><td class="memSeparator" colspan="2">&#160;</td></tr>
222
+ <tr class="memitem:aefdc1e49328ae897c1cf28aeb107f45b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a></td></tr>
223
+ <tr class="separator:aefdc1e49328ae897c1cf28aeb107f45b"><td class="memSeparator" colspan="2">&#160;</td></tr>
224
+ <tr class="memitem:a592f4fe473d0159a3fbdac3bc35b424e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1RelExeState.html">RelExeState</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a></td></tr>
225
+ <tr class="separator:a592f4fe473d0159a3fbdac3bc35b424e"><td class="memSeparator" colspan="2">&#160;</td></tr>
226
+ <tr class="memitem:a55246cb0b2493c9edc05029cc6a114dd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt; <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>, <a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1SVFIR2AbsState.html#a55246cb0b2493c9edc05029cc6a114dd">_br_cond</a></td></tr>
227
+ <tr class="separator:a55246cb0b2493c9edc05029cc6a114dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
228
+ </table>
229
+ <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
230
+ <div class="textblock">
231
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8h_source.html#l00042">42</a> of file <a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>.</p>
232
+ </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
233
+ <a id="a0141f9c8689e906a082f3566cb5d2cb6"></a>
234
+ <h2 class="memtitle"><span class="permalink"><a href="#a0141f9c8689e906a082f3566cb5d2cb6">&#9670;&nbsp;</a></span>SVFIR2AbsState()</h2>
235
+
236
+ <div class="memitem">
237
+ <div class="memproto">
238
+ <table class="mlabels">
239
+ <tr>
240
+ <td class="mlabels-left">
241
+ <table class="memname">
242
+ <tr>
243
+ <td class="memname">SVF::SVFIR2AbsState::SVFIR2AbsState </td>
244
+ <td>(</td>
245
+ <td class="paramtype"><a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> *&#160;</td>
246
+ <td class="paramname"><em>ir</em></td><td>)</td>
247
+ <td></td>
248
+ </tr>
249
+ </table>
250
+ </td>
251
+ <td class="mlabels-right">
252
+ <span class="mlabels"><span class="mlabel">inline</span></span> </td>
253
+ </tr>
254
+ </table>
255
+ </div><div class="memdoc">
256
+
257
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8h_source.html#l00047">47</a> of file <a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>.</p>
258
+ <div class="fragment"><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;: <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a80a0f0a20e993c6fcffc89f9de409f44">_svfir</a>(ir) {}</div>
259
+ </div><!-- fragment -->
260
+ </div>
261
+ </div>
262
+ <h2 class="groupheader">Member Function Documentation</h2>
263
+ <a id="ad247b7d3ff5fd99c0d92cac8f1c876eb"></a>
264
+ <h2 class="memtitle"><span class="permalink"><a href="#ad247b7d3ff5fd99c0d92cac8f1c876eb">&#9670;&nbsp;</a></span>applySummary()</h2>
265
+
266
+ <div class="memitem">
267
+ <div class="memproto">
268
+ <table class="memname">
269
+ <tr>
270
+ <td class="memname">void SVFIR2AbsState::applySummary </td>
271
+ <td>(</td>
272
+ <td class="paramtype"><a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a> &amp;&#160;</td>
273
+ <td class="paramname"><em>es</em></td><td>)</td>
274
+ <td></td>
275
+ </tr>
276
+ </table>
277
+ </div><div class="memdoc">
278
+
279
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00274">274</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
280
+ <div class="fragment"><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;{</div>
281
+ <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>: es.<a class="code" href="classSVF_1_1AbstractState.html#a6a49c75fb6b35159dcf1763b4484d335">_varToAbsVal</a>)</div>
282
+ <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; {</div>
283
+ <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>.<a class="code" href="classSVF_1_1AbstractState.html#a6a49c75fb6b35159dcf1763b4484d335">_varToAbsVal</a>[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first] = <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second;</div>
284
+ <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div>
285
+ <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>: es.<a class="code" href="classSVF_1_1AbstractState.html#aade30bb08f86b3f74e7aa9cdc60c92a3">_locToAbsVal</a>)</div>
286
+ <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div>
287
+ <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>.<a class="code" href="classSVF_1_1AbstractState.html#aade30bb08f86b3f74e7aa9cdc60c92a3">_locToAbsVal</a>[<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.first] = <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.second;</div>
288
+ <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div>
289
+ <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;}</div>
290
+ </div><!-- fragment -->
291
+ </div>
292
+ </div>
293
+ <a id="aa3e62b9ef912def502b95992199f5d8c"></a>
294
+ <h2 class="memtitle"><span class="permalink"><a href="#aa3e62b9ef912def502b95992199f5d8c">&#9670;&nbsp;</a></span>getAddrs()</h2>
295
+
296
+ <div class="memitem">
297
+ <div class="memproto">
298
+ <table class="mlabels">
299
+ <tr>
300
+ <td class="mlabels-left">
301
+ <table class="memname">
302
+ <tr>
303
+ <td class="memname"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a>&amp; SVF::SVFIR2AbsState::getAddrs </td>
304
+ <td>(</td>
305
+ <td class="paramtype"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td>
306
+ <td class="paramname"><em>id</em></td><td>)</td>
307
+ <td></td>
308
+ </tr>
309
+ </table>
310
+ </td>
311
+ <td class="mlabels-right">
312
+ <span class="mlabels"><span class="mlabel">inline</span></span> </td>
313
+ </tr>
314
+ </table>
315
+ </div><div class="memdoc">
316
+
317
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8h_source.html#l00113">113</a> of file <a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>.</p>
318
+ <div class="fragment"><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div>
319
+ <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(<span class="keywordtype">id</span>))</div>
320
+ <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>.<a class="code" href="classSVF_1_1SparseAbstractState.html#a6749b39cd32b138578f7ff12669d36c3">getAddrs</a>(<span class="keywordtype">id</span>);</div>
321
+ <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">else</span></div>
322
+ <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a46a2f2eedd729f4764f630d72391ec97">globalNulladdrs</a>;</div>
323
+ <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div>
324
+ </div><!-- fragment -->
325
+ </div>
326
+ </div>
327
+ <a id="a21e927af79c73460ff5629cbd4961163"></a>
328
+ <h2 class="memtitle"><span class="permalink"><a href="#a21e927af79c73460ff5629cbd4961163">&#9670;&nbsp;</a></span>getByteOffset()</h2>
329
+
330
+ <div class="memitem">
331
+ <div class="memproto">
332
+ <table class="memname">
333
+ <tr>
334
+ <td class="memname"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> SVFIR2AbsState::getByteOffset </td>
335
+ <td>(</td>
336
+ <td class="paramtype">const <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a> *&#160;</td>
337
+ <td class="paramname"><em>gep</em></td><td>)</td>
338
+ <td></td>
339
+ </tr>
340
+ </table>
341
+ </div><div class="memdoc">
342
+ <p>Return the byte offset expression of a <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a> elemBytesize is the element byte size of an static alloc or heap alloc array e.g. GepStmt* gep = [i32*10], x, and x is [0,3] std::pair&lt;s32_t, s32_t&gt; byteOffset = getByteOffset(gep); byteOffset should be [0, 12] since i32 is 4 bytes.</p>
343
+ <p>This function, getByteOffset, calculates the byte offset for a given <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a>.</p>
344
+ <dl class="params"><dt>Parameters</dt><dd>
345
+ <table class="params">
346
+ <tr><td class="paramname">gep</td><td>The <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a> representing the GetElementPtr instruction.</td></tr>
347
+ </table>
348
+ </dd>
349
+ </dl>
350
+ <dl class="section return"><dt>Returns</dt><dd>The calculated byte offset as an <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a>.</dd></dl>
351
+ <p>It is byte offset rather than flatten index. e.g. var2 = getelementptr inbounds struct.OuterStruct, struct.OuterStruct* var0, i64 0, i32 2, i32 0, i64 var1 struct.OuterStruct = type { i32, i32, struct.InnerStruct } struct.InnerStruct = type { [2 x i32] } there are 4 GepTypePairs (&lt;0, struct.OuterStruct*&gt;, &lt;2, struct.OuterStruct&gt;, &lt;0, struct.InnerStruct&gt;, &lt;var1, [2xi32]&gt;) this function process arr/ptr subtype by calculating elemByteSize * indexOperand and process struct subtype by calculating the byte offset from beginning to the field of struct e.g. for 0th pair &lt;0, struct.OuterStruct*&gt;, it is 0* ptrSize(struct.OuterStruct*) = 0 bytes for 1st pair &lt;2, struct.OuterStruct&gt;, it is 2nd field in struct.OuterStruct = 8 bytes for 2nd pair &lt;0, struct.InnerStruct&gt;, it is 0th field in struct.InnerStruct = 0 bytes </p>
352
+ <h2><a class="anchor" id="autotoc_md6"></a>
353
+ for 3rd pair &lt;%var1, [2xi32]&gt;, it is %var1'th element in array [2xi32] = 4bytes * %var1</h2>
354
+ <p>Therefore the final byteoffset is [8+4*var1.lb(), 8+4*var1.ub()] </p>
355
+
356
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00432">432</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
357
+ <div class="fragment"><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;{</div>
358
+ <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">if</span> (gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#ab6f37c073e4755c4b8bb3ed6365687f4">isConstantOffset</a>())</div>
359
+ <div class="line"><a name="l00435"></a><span class="lineno"> 435</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>
360
+ <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> res = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0); <span class="comment">// Initialize the result interval &#39;res&#39; to 0.</span></div>
361
+ <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="comment">// Loop through the offsetVarAndGepTypePairVec in reverse order.</span></div>
362
+ <div class="line"><a name="l00438"></a><span class="lineno"> 438</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>
363
+ <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; {</div>
364
+ <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* idxOperandVar =</div>
365
+ <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>()[i].first;</div>
366
+ <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* idxOperandType =</div>
367
+ <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>()[i].second;</div>
368
+ <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="comment">// calculating Array/Ptr by elemByteSize * indexOperand</span></div>
369
+ <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFArrayType&gt;(idxOperandType) || SVFUtil::isa&lt;SVFPointerType&gt;(idxOperandType))</div>
370
+ <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; {</div>
371
+ <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elemByteSize = 1;</div>
372
+ <div class="line"><a name="l00448"></a><span class="lineno"> 448</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>
373
+ <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; elemByteSize = arrOperandType-&gt;getTypeOfElement()-&gt;getByteSize();</div>
374
+ <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFPointerType&gt;(idxOperandType))</div>
375
+ <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; elemByteSize = gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>().<a class="code" href="classSVF_1_1AccessPath.html#a7b4921dea37246f0f08dffa7db384a61">gepSrcPointeeType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>();</div>
376
+ <div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">else</span></div>
377
+ <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;idxOperandType must be ArrType or PtrType&quot;</span>);</div>
378
+ <div class="line"><a name="l00454"></a><span class="lineno"> 454</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>
379
+ <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; {</div>
380
+ <div class="line"><a name="l00456"></a><span class="lineno"> 456</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>
381
+ <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; : <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
382
+ <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(lb, lb);</div>
383
+ <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; }</div>
384
+ <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">else</span></div>
385
+ <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; {</div>
386
+ <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> idx = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a80a0f0a20e993c6fcffc89f9de409f44">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(idxOperandVar-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>());</div>
387
+ <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> idxVal = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[idx].getInterval();</div>
388
+ <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">if</span> (idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#a674f9bb98053f8658e246863d6561072">isBottom</a>())</div>
389
+ <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
390
+ <div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">else</span></div>
391
+ <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; {</div>
392
+ <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="comment">// if lb or ub is negative number, set 0.</span></div>
393
+ <div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="comment">// if lb or ub is positive number, guarantee lb/ub * elemByteSize &lt;= MaxFieldLimit</span></div>
394
+ <div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> ub = (idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>() &lt; 0) ? 0 :</div>
395
+ <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; (<span class="keywordtype">double</span>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() /</div>
396
+ <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; elemByteSize &gt;= idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>() ? elemByteSize * idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>(): <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
397
+ <div class="line"><a name="l00473"></a><span class="lineno"> 473</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#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>() &lt; 0) ? 0 :</div>
398
+ <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; ((<span class="keywordtype">double</span>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>() /</div>
399
+ <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; elemByteSize &gt;= idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>()) ? elemByteSize * idxVal.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>() : <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
400
+ <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(lb, ub);</div>
401
+ <div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; }</div>
402
+ <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div>
403
+ <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; }</div>
404
+ <div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="comment">// Process struct subtype by calculating the byte offset from beginning to the field of struct</span></div>
405
+ <div class="line"><a name="l00481"></a><span class="lineno"> 481</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>
406
+ <div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; {</div>
407
+ <div class="line"><a name="l00483"></a><span class="lineno"> 483</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>
408
+ <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; idxOperandVar, structOperandType));</div>
409
+ <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; }</div>
410
+ <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">else</span></div>
411
+ <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; {</div>
412
+ <div class="line"><a name="l00488"></a><span class="lineno"> 488</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>
413
+ <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div>
414
+ <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div>
415
+ <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">return</span> res; <span class="comment">// Return the resulting byte offset as an IntervalValue.</span></div>
416
+ <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;}</div>
417
+ </div><!-- fragment -->
418
+ </div>
419
+ </div>
420
+ <a id="a36a428b990477a204cd73151680259a2"></a>
421
+ <h2 class="memtitle"><span class="permalink"><a href="#a36a428b990477a204cd73151680259a2">&#9670;&nbsp;</a></span>getContext()</h2>
422
+
423
+ <div class="memitem">
424
+ <div class="memproto">
425
+ <table class="mlabels">
426
+ <tr>
427
+ <td class="mlabels-left">
428
+ <table class="memname">
429
+ <tr>
430
+ <td class="memname">static z3::context&amp; SVF::SVFIR2AbsState::getContext </td>
431
+ <td>(</td>
432
+ <td class="paramname"></td><td>)</td>
433
+ <td></td>
434
+ </tr>
435
+ </table>
436
+ </td>
437
+ <td class="mlabels-right">
438
+ <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
439
+ </tr>
440
+ </table>
441
+ </div><div class="memdoc">
442
+
443
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8h_source.html#l00099">99</a> of file <a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>.</p>
444
+ <div class="fragment"><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div>
445
+ <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">Z3Expr::getContext</a>();</div>
446
+ <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div>
447
+ </div><!-- fragment -->
448
+ </div>
449
+ </div>
450
+ <a id="a260c4ccfd79a2b9dbd580fa2030ac238"></a>
451
+ <h2 class="memtitle"><span class="permalink"><a href="#a260c4ccfd79a2b9dbd580fa2030ac238">&#9670;&nbsp;</a></span>getEs()</h2>
452
+
453
+ <div class="memitem">
454
+ <div class="memproto">
455
+ <table class="mlabels">
456
+ <tr>
457
+ <td class="mlabels-left">
458
+ <table class="memname">
459
+ <tr>
460
+ <td class="memname"><a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a>&amp; SVF::SVFIR2AbsState::getEs </td>
461
+ <td>(</td>
462
+ <td class="paramname"></td><td>)</td>
463
+ <td></td>
464
+ </tr>
465
+ </table>
466
+ </td>
467
+ <td class="mlabels-right">
468
+ <span class="mlabels"><span class="mlabel">inline</span></span> </td>
469
+ </tr>
470
+ </table>
471
+ </div><div class="memdoc">
472
+
473
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8h_source.html#l00054">54</a> of file <a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>.</p>
474
+ <div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div>
475
+ <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>;</div>
476
+ <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div>
477
+ </div><!-- fragment -->
478
+ </div>
479
+ </div>
480
+ <a id="af48bab5352f5d1927aa467e1eb59c09f"></a>
481
+ <h2 class="memtitle"><span class="permalink"><a href="#af48bab5352f5d1927aa467e1eb59c09f">&#9670;&nbsp;</a></span>getFPToSIntValue()</h2>
482
+
483
+ <div class="memitem">
484
+ <div class="memproto">
485
+ <table class="memname">
486
+ <tr>
487
+ <td class="memname"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> SVFIR2AbsState::getFPToSIntValue </td>
488
+ <td>(</td>
489
+ <td class="paramtype">const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> *&#160;</td>
490
+ <td class="paramname"><em>var</em></td><td>)</td>
491
+ <td></td>
492
+ </tr>
493
+ </table>
494
+ </div><div class="memdoc">
495
+
496
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00161">161</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
497
+ <div class="fragment"><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;{</div>
498
+ <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[var-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()].getInterval().is_real())</div>
499
+ <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div>
500
+ <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="comment">// get the float value of ub and lb</span></div>
501
+ <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordtype">double</span> float_lb = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[var-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()].getInterval().lb().getRealNumeral();</div>
502
+ <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordtype">double</span> float_ub = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[var-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()].getInterval().ub().getRealNumeral();</div>
503
+ <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="comment">// get the int value of ub and lb</span></div>
504
+ <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> int_lb = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a><span class="keyword">&gt;</span>(float_lb);</div>
505
+ <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> int_ub = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a><span class="keyword">&gt;</span>(float_ub);</div>
506
+ <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(int_lb, int_ub);</div>
507
+ <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div>
508
+ <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">else</span></div>
509
+ <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; {</div>
510
+ <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa925878721ae7028c3edae0c7fe8e127">getSExtValue</a>(var);</div>
511
+ <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div>
512
+ <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;}</div>
513
+ </div><!-- fragment -->
514
+ </div>
515
+ </div>
516
+ <a id="ae6a36e79bdc4506f9f011ad100125444"></a>
517
+ <h2 class="memtitle"><span class="permalink"><a href="#ae6a36e79bdc4506f9f011ad100125444">&#9670;&nbsp;</a></span>getFPToUIntValue()</h2>
518
+
519
+ <div class="memitem">
520
+ <div class="memproto">
521
+ <table class="memname">
522
+ <tr>
523
+ <td class="memname"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> SVFIR2AbsState::getFPToUIntValue </td>
524
+ <td>(</td>
525
+ <td class="paramtype">const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> *&#160;</td>
526
+ <td class="paramname"><em>var</em></td><td>)</td>
527
+ <td></td>
528
+ </tr>
529
+ </table>
530
+ </div><div class="memdoc">
531
+
532
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00179">179</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
533
+ <div class="fragment"><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;{</div>
534
+ <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[var-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()].getInterval().is_real())</div>
535
+ <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div>
536
+ <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="comment">// get the float value of ub and lb</span></div>
537
+ <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordtype">double</span> float_lb = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[var-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()].getInterval().lb().getRealNumeral();</div>
538
+ <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordtype">double</span> float_ub = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[var-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()].getInterval().ub().getRealNumeral();</div>
539
+ <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="comment">// get the int value of ub and lb</span></div>
540
+ <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> int_lb = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a><span class="keyword">&gt;</span>(float_lb);</div>
541
+ <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> int_ub = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a><span class="keyword">&gt;</span>(float_ub);</div>
542
+ <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(int_lb, int_ub);</div>
543
+ <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div>
544
+ <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">else</span></div>
545
+ <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; {</div>
546
+ <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a1e270574a1d6f0894868cfb098ffbb8b">getZExtValue</a>(var);</div>
547
+ <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div>
548
+ <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;}</div>
549
+ </div><!-- fragment -->
550
+ </div>
551
+ </div>
552
+ <a id="a5ba833f2f98f5b1b1a8a7ff7ecdb72b9"></a>
553
+ <h2 class="memtitle"><span class="permalink"><a href="#a5ba833f2f98f5b1b1a8a7ff7ecdb72b9">&#9670;&nbsp;</a></span>getFPTruncValue()</h2>
554
+
555
+ <div class="memitem">
556
+ <div class="memproto">
557
+ <table class="memname">
558
+ <tr>
559
+ <td class="memname"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> SVFIR2AbsState::getFPTruncValue </td>
560
+ <td>(</td>
561
+ <td class="paramtype">const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> *&#160;</td>
562
+ <td class="paramname"><em>var</em>, </td>
563
+ </tr>
564
+ <tr>
565
+ <td class="paramkey"></td>
566
+ <td></td>
567
+ <td class="paramtype">const <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> *&#160;</td>
568
+ <td class="paramname"><em>dstType</em>&#160;</td>
569
+ </tr>
570
+ <tr>
571
+ <td></td>
572
+ <td>)</td>
573
+ <td></td><td></td>
574
+ </tr>
575
+ </table>
576
+ </div><div class="memdoc">
577
+
578
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00268">268</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
579
+ <div class="fragment"><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;{</div>
580
+ <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="comment">// TODO: now we do not really handle fptrunc</span></div>
581
+ <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[var-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()].getInterval();</div>
582
+ <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;}</div>
583
+ </div><!-- fragment -->
584
+ </div>
585
+ </div>
586
+ <a id="a10a83572bf5dee369b54cda74f402073"></a>
587
+ <h2 class="memtitle"><span class="permalink"><a href="#a10a83572bf5dee369b54cda74f402073">&#9670;&nbsp;</a></span>getGepObjAddress()</h2>
588
+
589
+ <div class="memitem">
590
+ <div class="memproto">
591
+ <table class="memname">
592
+ <tr>
593
+ <td class="memname"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> SVFIR2AbsState::getGepObjAddress </td>
594
+ <td>(</td>
595
+ <td class="paramtype"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td>
596
+ <td class="paramname"><em>pointer</em>, </td>
597
+ </tr>
598
+ <tr>
599
+ <td class="paramkey"></td>
600
+ <td></td>
601
+ <td class="paramtype"><a class="el" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a>&#160;</td>
602
+ <td class="paramname"><em>offset</em>&#160;</td>
603
+ </tr>
604
+ <tr>
605
+ <td></td>
606
+ <td>)</td>
607
+ <td></td><td></td>
608
+ </tr>
609
+ </table>
610
+ </div><div class="memdoc">
611
+
612
+ <p>Return the field address given a pointer points to a struct object and an offset. </p>
613
+
614
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00389">389</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
615
+ <div class="fragment"><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;{</div>
616
+ <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; assert(!<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(pointer).<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>().empty());</div>
617
+ <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> addrs = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(pointer);</div>
618
+ <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> ret = <a class="code" href="classSVF_1_1AddressValue.html">AddressValue</a>();</div>
619
+ <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: addrs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>())</div>
620
+ <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; {</div>
621
+ <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> baseObj = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">getInternalID</a>(addr);</div>
622
+ <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">if</span> (baseObj == 0)</div>
623
+ <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; {</div>
624
+ <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; ret.<a class="code" href="structSVF_1_1AbstractValue.html#a5cc67e56c658a6833b1bf9235f2a73ba">insertAddr</a>(<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a63d855cf3342454ce5154fa7605f9935">getVirtualMemAddress</a>(0));</div>
625
+ <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">continue</span>;</div>
626
+ <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; }</div>
627
+ <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; assert(SVFUtil::isa&lt;ObjVar&gt;(<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a80a0f0a20e993c6fcffc89f9de409f44">_svfir</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(baseObj)) &amp;&amp; <span class="stringliteral">&quot;Fail to get the base object address!&quot;</span>);</div>
628
+ <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepObj = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a80a0f0a20e993c6fcffc89f9de409f44">_svfir</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ae18425df0631aefca7dd4b799f6f524a">getGepObjVar</a>(baseObj, <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a>);</div>
629
+ <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aaecd2f39d5038009cb41b849fd8fe55f">initSVFVar</a>(gepObj);</div>
630
+ <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; ret.<a class="code" href="structSVF_1_1AbstractValue.html#a5cc67e56c658a6833b1bf9235f2a73ba">insertAddr</a>(<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a63d855cf3342454ce5154fa7605f9935">getVirtualMemAddress</a>(gepObj));</div>
631
+ <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; }</div>
632
+ <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">return</span> ret;</div>
633
+ <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;}</div>
634
+ </div><!-- fragment -->
635
+ </div>
636
+ </div>
637
+ <a id="ac37760566b534d89a61d789b00efb993"></a>
638
+ <h2 class="memtitle"><span class="permalink"><a href="#ac37760566b534d89a61d789b00efb993">&#9670;&nbsp;</a></span>getInternalID()</h2>
639
+
640
+ <div class="memitem">
641
+ <div class="memproto">
642
+ <table class="mlabels">
643
+ <tr>
644
+ <td class="mlabels-left">
645
+ <table class="memname">
646
+ <tr>
647
+ <td class="memname">static <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> SVF::SVFIR2AbsState::getInternalID </td>
648
+ <td>(</td>
649
+ <td class="paramtype"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td>
650
+ <td class="paramname"><em>idx</em></td><td>)</td>
651
+ <td></td>
652
+ </tr>
653
+ </table>
654
+ </td>
655
+ <td class="mlabels-right">
656
+ <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
657
+ </tr>
658
+ </table>
659
+ </div><div class="memdoc">
660
+
661
+ <p>Return the internal index if idx is an address otherwise return the value of idx. </p>
662
+
663
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8h_source.html#l00172">172</a> of file <a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>.</p>
664
+ <div class="fragment"><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {</div>
665
+ <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AbstractState.html#aaabe5850dbf1620c6058f5ac6cb169b6">AbstractState::getInternalID</a>(idx);</div>
666
+ <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div>
667
+ </div><!-- fragment -->
668
+ </div>
669
+ </div>
670
+ <a id="a928b35a6ea960a94470b0983008bfa9d"></a>
671
+ <h2 class="memtitle"><span class="permalink"><a href="#a928b35a6ea960a94470b0983008bfa9d">&#9670;&nbsp;</a></span>getItvOfFlattenedElemIndex()</h2>
672
+
673
+ <div class="memitem">
674
+ <div class="memproto">
675
+ <table class="memname">
676
+ <tr>
677
+ <td class="memname"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> SVFIR2AbsState::getItvOfFlattenedElemIndex </td>
678
+ <td>(</td>
679
+ <td class="paramtype">const <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a> *&#160;</td>
680
+ <td class="paramname"><em>gep</em></td><td>)</td>
681
+ <td></td>
682
+ </tr>
683
+ </table>
684
+ </div><div class="memdoc">
685
+
686
+ <p>Return the offset expression of a <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a>. </p>
687
+ <p>This function, getItvOfFlattenedElemIndex, calculates the offset range as a pair of APOffset values for a given <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a>.</p>
688
+ <dl class="params"><dt>Parameters</dt><dd>
689
+ <table class="params">
690
+ <tr><td class="paramname">gep</td><td>The <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a> representing the GetElementPtr instruction.</td></tr>
691
+ </table>
692
+ </dd>
693
+ </dl>
694
+ <dl class="section return"><dt>Returns</dt><dd>A pair of APOffset values representing the offset range. </dd></dl>
695
+
696
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00502">502</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
697
+ <div class="fragment"><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;{</div>
698
+ <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">if</span> (gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#ab6f37c073e4755c4b8bb3ed6365687f4">isConstantOffset</a>())</div>
699
+ <div class="line"><a name="l00505"></a><span class="lineno"> 505</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>
700
+ <div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> res = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0);</div>
701
+ <div class="line"><a name="l00507"></a><span class="lineno"> 507</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>
702
+ <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; {</div>
703
+ <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="classSVF_1_1AccessPath.html#a4f482ca73cc6e7b8d946651e2b2ea2ae">AccessPath::IdxOperandPair</a> IdxVarAndType =</div>
704
+ <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>()[i];</div>
705
+ <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a> *value =</div>
706
+ <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a348de09a7ccd04d1fa76fa6b250249ba">getOffsetVarAndGepTypePairVec</a>()[i].first-&gt;getValue();</div>
707
+ <div class="line"><a name="l00513"></a><span class="lineno"> 513</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>
708
+ <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="comment">// idxLb/Ub is the flattened offset generated by the current OffsetVarAndGepTypePair</span></div>
709
+ <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> idxLb;</div>
710
+ <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> idxUb;</div>
711
+ <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="comment">// get lb and ub of the index value</span></div>
712
+ <div class="line"><a name="l00518"></a><span class="lineno"> 518</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>
713
+ <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; idxLb = idxUb = constInt-&gt;getSExtValue();</div>
714
+ <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">else</span></div>
715
+ <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; {</div>
716
+ <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> idxItv = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a80a0f0a20e993c6fcffc89f9de409f44">_svfir</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(value)].getInterval();</div>
717
+ <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">if</span> (idxItv.<a class="code" href="classSVF_1_1IntervalValue.html#a674f9bb98053f8658e246863d6561072">isBottom</a>())</div>
718
+ <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; idxLb = idxUb = 0;</div>
719
+ <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">else</span></div>
720
+ <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; {</div>
721
+ <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; idxLb = idxItv.<a class="code" href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>();</div>
722
+ <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; idxUb = idxItv.<a class="code" href="classSVF_1_1IntervalValue.html#adac2dc2c9f744a071ad3f0175ed40cd9">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>();</div>
723
+ <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div>
724
+ <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div>
725
+ <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="comment">// for pointer type, flattened index = elemNum * idx</span></div>
726
+ <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFPointerType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
727
+ <div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; {</div>
728
+ <div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> elemNum = gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>().<a class="code" href="classSVF_1_1AccessPath.html#a3c98f0c5f07109f9da0a8a897aa51d18">getElementNum</a>(gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>().<a class="code" href="classSVF_1_1AccessPath.html#a7b4921dea37246f0f08dffa7db384a61">gepSrcPointeeType</a>());</div>
729
+ <div class="line"><a name="l00535"></a><span class="lineno"> 535</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>
730
+ <div class="line"><a name="l00536"></a><span class="lineno"> 536</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>
731
+ <div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; }</div>
732
+ <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="comment">// for array or struct, get flattened index from SymbolTable Info</span></div>
733
+ <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">else</span></div>
734
+ <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; {</div>
735
+ <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a429c3000ee2ac45119b8c241aa06762c">Options::ModelArrays</a>())</div>
736
+ <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; {</div>
737
+ <div class="line"><a name="l00543"></a><span class="lineno"> 543</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>
738
+ <div class="line"><a name="l00544"></a><span class="lineno"> 544</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>
739
+ <div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; -&gt;<a class="code" href="classSVF_1_1StInfo.html#a55e5fd85f232c1867c5c6a73646d53eb">getFlattenedElemIdxVec</a>();</div>
740
+ <div class="line"><a name="l00546"></a><span class="lineno"> 546</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>
741
+ <div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; {</div>
742
+ <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; idxLb = idxUb = 0;</div>
743
+ <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; }</div>
744
+ <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">else</span></div>
745
+ <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; {</div>
746
+ <div class="line"><a name="l00552"></a><span class="lineno"> 552</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>
747
+ <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>, idxLb);</div>
748
+ <div class="line"><a name="l00554"></a><span class="lineno"> 554</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>
749
+ <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>, idxUb);</div>
750
+ <div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; }</div>
751
+ <div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; }</div>
752
+ <div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">else</span></div>
753
+ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; idxLb = idxUb = 0;</div>
754
+ <div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; }</div>
755
+ <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; res = res + <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(idxLb, idxUb);</div>
756
+ <div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; }</div>
757
+ <div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; res.<a class="code" href="structSVF_1_1AbstractValue.html#a078ac137e60c5a2585a649f7ec40a8a8">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>
758
+ <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordflow">if</span> (res.<a class="code" href="structSVF_1_1AbstractValue.html#a8b1af972fa8a4e40347990d179ec1c52">isBottom</a>())</div>
759
+ <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; {</div>
760
+ <div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; res = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0);</div>
761
+ <div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; }</div>
762
+ <div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">return</span> res;</div>
763
+ <div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;}</div>
764
+ </div><!-- fragment -->
765
+ </div>
766
+ </div>
767
+ <a id="a4e032a5e0898f0e349927d5a86c8477c"></a>
768
+ <h2 class="memtitle"><span class="permalink"><a href="#a4e032a5e0898f0e349927d5a86c8477c">&#9670;&nbsp;</a></span>getRangeLimitFromType()</h2>
769
+
770
+ <div class="memitem">
771
+ <div class="memproto">
772
+ <table class="memname">
773
+ <tr>
774
+ <td class="memname"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> SVFIR2AbsState::getRangeLimitFromType </td>
775
+ <td>(</td>
776
+ <td class="paramtype">const <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> *&#160;</td>
777
+ <td class="paramname"><em>type</em></td><td>)</td>
778
+ <td></td>
779
+ </tr>
780
+ </table>
781
+ </div><div class="memdoc">
782
+
783
+ <p>Return the value range of Integer <a class="el" href="namespaceSVF.html" title="for isBitcode">SVF</a> Type, e.g. unsigned i8 Type-&gt;[0, 255], signed i8 Type-&gt;[-128, 127]. </p>
784
+ <p>This function, getRangeLimitFromType, calculates the lower and upper bounds of a numeric range for a given <a class="el" href="classSVF_1_1SVFType.html">SVFType</a>. It is used to determine the possible value range of integer types. If the type is an <a class="el" href="classSVF_1_1SVFIntegerType.html">SVFIntegerType</a>, it calculates the bounds based on the size and signedness of the type. The calculated bounds are returned as an <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> representing the lower (lb) and upper (ub) limits of the range.</p>
785
+ <dl class="params"><dt>Parameters</dt><dd>
786
+ <table class="params">
787
+ <tr><td class="paramname">type</td><td>The <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> for which to calculate the value range.</td></tr>
788
+ </table>
789
+ </dd>
790
+ </dl>
791
+ <dl class="section return"><dt>Returns</dt><dd>An <a class="el" href="classSVF_1_1IntervalValue.html">IntervalValue</a> representing the lower and upper bounds of the range. </dd></dl>
792
+
793
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00049">49</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
794
+ <div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;{</div>
795
+ <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFIntegerType.html">SVFIntegerType</a>* intType = SVFUtil::dyn_cast&lt;SVFIntegerType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
796
+ <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div>
797
+ <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> bits = <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;getByteSize() * 8;</div>
798
+ <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> ub = 0;</div>
799
+ <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> lb = 0;</div>
800
+ <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span> (bits &gt;= 32)</div>
801
+ <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div>
802
+ <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">if</span> (intType-&gt;isSigned())</div>
803
+ <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div>
804
+ <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; ub = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a><span class="keyword">&gt;</span>(std::numeric_limits&lt;s32_t&gt;::max());</div>
805
+ <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; lb = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a><span class="keyword">&gt;</span>(std::numeric_limits&lt;s32_t&gt;::min());</div>
806
+ <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div>
807
+ <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">else</span></div>
808
+ <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div>
809
+ <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; ub = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a><span class="keyword">&gt;</span>(std::numeric_limits&lt;u32_t&gt;::max());</div>
810
+ <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; lb = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a><span class="keyword">&gt;</span>(std::numeric_limits&lt;u32_t&gt;::min());</div>
811
+ <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div>
812
+ <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div>
813
+ <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bits == 16)</div>
814
+ <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div>
815
+ <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">if</span> (intType-&gt;isSigned())</div>
816
+ <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div>
817
+ <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; ub = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a><span class="keyword">&gt;</span>(std::numeric_limits&lt;s16_t&gt;::max());</div>
818
+ <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; lb = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a><span class="keyword">&gt;</span>(std::numeric_limits&lt;s16_t&gt;::min());</div>
819
+ <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div>
820
+ <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">else</span></div>
821
+ <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div>
822
+ <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; ub = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a><span class="keyword">&gt;</span>(std::numeric_limits&lt;u16_t&gt;::max());</div>
823
+ <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; lb = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a><span class="keyword">&gt;</span>(std::numeric_limits&lt;u16_t&gt;::min());</div>
824
+ <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div>
825
+ <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div>
826
+ <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bits == 8)</div>
827
+ <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div>
828
+ <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">if</span> (intType-&gt;isSigned())</div>
829
+ <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div>
830
+ <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; ub = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a><span class="keyword">&gt;</span>(std::numeric_limits&lt;int8_t&gt;::max());</div>
831
+ <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; lb = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a><span class="keyword">&gt;</span>(std::numeric_limits&lt;int8_t&gt;::min());</div>
832
+ <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div>
833
+ <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">else</span></div>
834
+ <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div>
835
+ <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; ub = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a><span class="keyword">&gt;</span>(std::numeric_limits&lt;u_int8_t&gt;::max());</div>
836
+ <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; lb = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a><span class="keyword">&gt;</span>(std::numeric_limits&lt;u_int8_t&gt;::min());</div>
837
+ <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div>
838
+ <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div>
839
+ <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(lb, ub);</div>
840
+ <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div>
841
+ <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFOtherType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
842
+ <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div>
843
+ <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">// handle other type like float double, set s32_t as the range</span></div>
844
+ <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> ub = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a><span class="keyword">&gt;</span>(std::numeric_limits&lt;s32_t&gt;::max());</div>
845
+ <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> lb = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a><span class="keyword">&gt;</span>(std::numeric_limits&lt;s32_t&gt;::min());</div>
846
+ <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(lb, ub);</div>
847
+ <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div>
848
+ <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">else</span></div>
849
+ <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div>
850
+ <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
851
+ <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="comment">// other types, return top interval</span></div>
852
+ <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div>
853
+ <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;}</div>
854
+ </div><!-- fragment -->
855
+ </div>
856
+ </div>
857
+ <a id="ae2ee40a59aec3fb7c7abc4ddb7784bcf"></a>
858
+ <h2 class="memtitle"><span class="permalink"><a href="#ae2ee40a59aec3fb7c7abc4ddb7784bcf">&#9670;&nbsp;</a></span>getRelEs()</h2>
859
+
860
+ <div class="memitem">
861
+ <div class="memproto">
862
+ <table class="mlabels">
863
+ <tr>
864
+ <td class="mlabels-left">
865
+ <table class="memname">
866
+ <tr>
867
+ <td class="memname"><a class="el" href="classSVF_1_1RelExeState.html">RelExeState</a>&amp; SVF::SVFIR2AbsState::getRelEs </td>
868
+ <td>(</td>
869
+ <td class="paramname"></td><td>)</td>
870
+ <td></td>
871
+ </tr>
872
+ </table>
873
+ </td>
874
+ <td class="mlabels-right">
875
+ <span class="mlabels"><span class="mlabel">inline</span></span> </td>
876
+ </tr>
877
+ </table>
878
+ </div><div class="memdoc">
879
+
880
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8h_source.html#l00064">64</a> of file <a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>.</p>
881
+ <div class="fragment"><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; {</div>
882
+ <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>;</div>
883
+ <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div>
884
+ </div><!-- fragment -->
885
+ </div>
886
+ </div>
887
+ <a id="aa925878721ae7028c3edae0c7fe8e127"></a>
888
+ <h2 class="memtitle"><span class="permalink"><a href="#aa925878721ae7028c3edae0c7fe8e127">&#9670;&nbsp;</a></span>getSExtValue()</h2>
889
+
890
+ <div class="memitem">
891
+ <div class="memproto">
892
+ <table class="memname">
893
+ <tr>
894
+ <td class="memname"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> SVFIR2AbsState::getSExtValue </td>
895
+ <td>(</td>
896
+ <td class="paramtype">const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> *&#160;</td>
897
+ <td class="paramname"><em>var</em></td><td>)</td>
898
+ <td></td>
899
+ </tr>
900
+ </table>
901
+ </div><div class="memdoc">
902
+
903
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00156">156</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
904
+ <div class="fragment"><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;{</div>
905
+ <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[var-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()].getInterval();</div>
906
+ <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;}</div>
907
+ </div><!-- fragment -->
908
+ </div>
909
+ </div>
910
+ <a id="af38b6e392cfd91b3516f2bc9feacce34"></a>
911
+ <h2 class="memtitle"><span class="permalink"><a href="#af38b6e392cfd91b3516f2bc9feacce34">&#9670;&nbsp;</a></span>getSIntToFPValue()</h2>
912
+
913
+ <div class="memitem">
914
+ <div class="memproto">
915
+ <table class="memname">
916
+ <tr>
917
+ <td class="memname"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> SVFIR2AbsState::getSIntToFPValue </td>
918
+ <td>(</td>
919
+ <td class="paramtype">const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> *&#160;</td>
920
+ <td class="paramname"><em>var</em></td><td>)</td>
921
+ <td></td>
922
+ </tr>
923
+ </table>
924
+ </div><div class="memdoc">
925
+
926
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00197">197</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
927
+ <div class="fragment"><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;{</div>
928
+ <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="comment">// get the sint value of ub and lb</span></div>
929
+ <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> sint_lb = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[var-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()].getInterval().lb().getIntNumeral();</div>
930
+ <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> sint_ub = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[var-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()].getInterval().ub().getIntNumeral();</div>
931
+ <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="comment">// get the float value of ub and lb</span></div>
932
+ <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordtype">double</span> float_lb = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(sint_lb);</div>
933
+ <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordtype">double</span> float_ub = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(sint_ub);</div>
934
+ <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(float_lb, float_ub);</div>
935
+ <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;}</div>
936
+ </div><!-- fragment -->
937
+ </div>
938
+ </div>
939
+ <a id="a38a62cdec2fac4ad2e64b86b4eb3b0bf"></a>
940
+ <h2 class="memtitle"><span class="permalink"><a href="#a38a62cdec2fac4ad2e64b86b4eb3b0bf">&#9670;&nbsp;</a></span>getTruncValue()</h2>
941
+
942
+ <div class="memitem">
943
+ <div class="memproto">
944
+ <table class="memname">
945
+ <tr>
946
+ <td class="memname"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> SVFIR2AbsState::getTruncValue </td>
947
+ <td>(</td>
948
+ <td class="paramtype">const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> *&#160;</td>
949
+ <td class="paramname"><em>var</em>, </td>
950
+ </tr>
951
+ <tr>
952
+ <td class="paramkey"></td>
953
+ <td></td>
954
+ <td class="paramtype">const <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> *&#160;</td>
955
+ <td class="paramname"><em>dstType</em>&#160;</td>
956
+ </tr>
957
+ <tr>
958
+ <td></td>
959
+ <td>)</td>
960
+ <td></td><td></td>
961
+ </tr>
962
+ </table>
963
+ </div><div class="memdoc">
964
+
965
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00219">219</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
966
+ <div class="fragment"><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;{</div>
967
+ <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="comment">// get the value of ub and lb</span></div>
968
+ <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> int_lb = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[var-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()].getInterval().lb().getIntNumeral();</div>
969
+ <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> int_ub = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[var-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()].getInterval().ub().getIntNumeral();</div>
970
+ <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="comment">// get dst type</span></div>
971
+ <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> dst_bits = dstType-&gt;<a class="code" href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">getByteSize</a>() * 8;</div>
972
+ <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span> (dst_bits == 8)</div>
973
+ <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div>
974
+ <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="comment">// get the signed value of ub and lb</span></div>
975
+ <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; int8_t s8_lb = <span class="keyword">static_cast&lt;</span>int8_t<span class="keyword">&gt;</span>(int_lb);</div>
976
+ <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; int8_t s8_ub = <span class="keyword">static_cast&lt;</span>int8_t<span class="keyword">&gt;</span>(int_ub);</div>
977
+ <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">if</span> (s8_lb &gt; s8_ub)</div>
978
+ <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; {</div>
979
+ <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="comment">// return range of s8</span></div>
980
+ <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
981
+ <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; }</div>
982
+ <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(s8_lb, s8_ub);</div>
983
+ <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div>
984
+ <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dst_bits == 16)</div>
985
+ <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; {</div>
986
+ <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="comment">// get the signed value of ub and lb</span></div>
987
+ <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <a class="code" href="namespaceSVF.html#a6ce4cf67f8622443c888737d7366a3e9">s16_t</a> s16_lb = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#a6ce4cf67f8622443c888737d7366a3e9">s16_t</a><span class="keyword">&gt;</span>(int_lb);</div>
988
+ <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="namespaceSVF.html#a6ce4cf67f8622443c888737d7366a3e9">s16_t</a> s16_ub = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#a6ce4cf67f8622443c888737d7366a3e9">s16_t</a><span class="keyword">&gt;</span>(int_ub);</div>
989
+ <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">if</span> (s16_lb &gt; s16_ub)</div>
990
+ <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; {</div>
991
+ <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="comment">// return range of s16</span></div>
992
+ <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
993
+ <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div>
994
+ <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(s16_lb, s16_ub);</div>
995
+ <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div>
996
+ <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dst_bits == 32)</div>
997
+ <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div>
998
+ <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="comment">// get the signed value of ub and lb</span></div>
999
+ <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> s32_lb = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a><span class="keyword">&gt;</span>(int_lb);</div>
1000
+ <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> s32_ub = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a><span class="keyword">&gt;</span>(int_ub);</div>
1001
+ <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">if</span> (s32_lb &gt; s32_ub)</div>
1002
+ <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; {</div>
1003
+ <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="comment">// return range of s32</span></div>
1004
+ <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
1005
+ <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; }</div>
1006
+ <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(s32_lb, s32_ub);</div>
1007
+ <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</div>
1008
+ <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">else</span></div>
1009
+ <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; {</div>
1010
+ <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;cannot support dst int type other than u8/16/32&quot;</span>);</div>
1011
+ <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; }</div>
1012
+ <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;}</div>
1013
+ </div><!-- fragment -->
1014
+ </div>
1015
+ </div>
1016
+ <a id="ae247497ab346e612f645d39041b2ce32"></a>
1017
+ <h2 class="memtitle"><span class="permalink"><a href="#ae247497ab346e612f645d39041b2ce32">&#9670;&nbsp;</a></span>getUIntToFPValue()</h2>
1018
+
1019
+ <div class="memitem">
1020
+ <div class="memproto">
1021
+ <table class="memname">
1022
+ <tr>
1023
+ <td class="memname"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> SVFIR2AbsState::getUIntToFPValue </td>
1024
+ <td>(</td>
1025
+ <td class="paramtype">const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> *&#160;</td>
1026
+ <td class="paramname"><em>var</em></td><td>)</td>
1027
+ <td></td>
1028
+ </tr>
1029
+ </table>
1030
+ </div><div class="memdoc">
1031
+
1032
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00208">208</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
1033
+ <div class="fragment"><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;{</div>
1034
+ <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="comment">// get the uint value of ub and lb</span></div>
1035
+ <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> uint_lb = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[var-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()].getInterval().lb().getIntNumeral();</div>
1036
+ <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> uint_ub = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[var-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()].getInterval().ub().getIntNumeral();</div>
1037
+ <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">// get the float value of ub and lb</span></div>
1038
+ <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordtype">double</span> float_lb = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(uint_lb);</div>
1039
+ <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordtype">double</span> float_ub = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(uint_ub);</div>
1040
+ <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(float_lb, float_ub);</div>
1041
+ <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;}</div>
1042
+ </div><!-- fragment -->
1043
+ </div>
1044
+ </div>
1045
+ <a id="a63d855cf3342454ce5154fa7605f9935"></a>
1046
+ <h2 class="memtitle"><span class="permalink"><a href="#a63d855cf3342454ce5154fa7605f9935">&#9670;&nbsp;</a></span>getVirtualMemAddress()</h2>
1047
+
1048
+ <div class="memitem">
1049
+ <div class="memproto">
1050
+ <table class="mlabels">
1051
+ <tr>
1052
+ <td class="mlabels-left">
1053
+ <table class="memname">
1054
+ <tr>
1055
+ <td class="memname">static <a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> SVF::SVFIR2AbsState::getVirtualMemAddress </td>
1056
+ <td>(</td>
1057
+ <td class="paramtype"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td>
1058
+ <td class="paramname"><em>idx</em></td><td>)</td>
1059
+ <td></td>
1060
+ </tr>
1061
+ </table>
1062
+ </td>
1063
+ <td class="mlabels-right">
1064
+ <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1065
+ </tr>
1066
+ </table>
1067
+ </div><div class="memdoc">
1068
+
1069
+ <p>The physical address starts with 0x7f...... + idx. </p>
1070
+
1071
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8h_source.html#l00178">178</a> of file <a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>.</p>
1072
+ <div class="fragment"><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; {</div>
1073
+ <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AbstractState.html#aa594b7f3d1590073a88bcc73918dde39">AbstractState::getVirtualMemAddress</a>(idx);</div>
1074
+ <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div>
1075
+ </div><!-- fragment -->
1076
+ </div>
1077
+ </div>
1078
+ <a id="a1e270574a1d6f0894868cfb098ffbb8b"></a>
1079
+ <h2 class="memtitle"><span class="permalink"><a href="#a1e270574a1d6f0894868cfb098ffbb8b">&#9670;&nbsp;</a></span>getZExtValue() <span class="overload">[1/2]</span></h2>
1080
+
1081
+ <div class="memitem">
1082
+ <div class="memproto">
1083
+ <table class="memname">
1084
+ <tr>
1085
+ <td class="memname"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> SVFIR2AbsState::getZExtValue </td>
1086
+ <td>(</td>
1087
+ <td class="paramtype">const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> *&#160;</td>
1088
+ <td class="paramname"><em>var</em></td><td>)</td>
1089
+ <td></td>
1090
+ </tr>
1091
+ </table>
1092
+ </div><div class="memdoc">
1093
+
1094
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00111">111</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
1095
+ <div class="fragment"><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;{</div>
1096
+ <div class="line"><a name="l00113"></a><span class="lineno"> 113</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> = var-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ab6f95d3e7e099d75cfc9645ebc037047">getType</a>();</div>
1097
+ <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;SVFIntegerType&gt;(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>))</div>
1098
+ <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div>
1099
+ <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> bits = <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>-&gt;getByteSize() * 8;</div>
1100
+ <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[var-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()].getInterval().is_numeral())</div>
1101
+ <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div>
1102
+ <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span> (bits == 8)</div>
1103
+ <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div>
1104
+ <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; int8_t signed_i8_value = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[var-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()].getInterval().getIntNumeral();</div>
1105
+ <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> unsigned_value = <span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(signed_i8_value);</div>
1106
+ <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(unsigned_value, unsigned_value);</div>
1107
+ <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div>
1108
+ <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bits == 16)</div>
1109
+ <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div>
1110
+ <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="namespaceSVF.html#a6ce4cf67f8622443c888737d7366a3e9">s16_t</a> signed_i16_value = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[var-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()].getInterval().getIntNumeral();</div>
1111
+ <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> unsigned_value = <span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#a7c3a917e8b1d3253982e0a1a37b74d93">u16_t</a><span class="keyword">&gt;</span>(signed_i16_value);</div>
1112
+ <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(unsigned_value, unsigned_value);</div>
1113
+ <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div>
1114
+ <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bits == 32)</div>
1115
+ <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div>
1116
+ <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> signed_i32_value = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[var-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()].getInterval().getIntNumeral();</div>
1117
+ <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> unsigned_value = <span class="keyword">static_cast&lt;</span><a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a><span class="keyword">&gt;</span>(signed_i32_value);</div>
1118
+ <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(unsigned_value, unsigned_value);</div>
1119
+ <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div>
1120
+ <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bits == 64)</div>
1121
+ <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {</div>
1122
+ <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> signed_i64_value = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[var-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()].getInterval().getIntNumeral();</div>
1123
+ <div class="line"><a name="l00140"></a><span class="lineno"> 140</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>)signed_i64_value, (<a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a>)signed_i64_value);</div>
1124
+ <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">// we only support i64 at most</span></div>
1125
+ <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div>
1126
+ <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">else</span></div>
1127
+ <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; {</div>
1128
+ <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;cannot support int type other than u8/16/32/64&quot;</span>);</div>
1129
+ <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div>
1130
+ <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div>
1131
+ <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">else</span></div>
1132
+ <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div>
1133
+ <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>(); <span class="comment">// TODO: may have better solution</span></div>
1134
+ <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div>
1135
+ <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div>
1136
+ <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;cannot support non-integer type&quot;</span>);</div>
1137
+ <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;}</div>
1138
+ </div><!-- fragment -->
1139
+ </div>
1140
+ </div>
1141
+ <a id="ad78244e7e7b203619e8065598e0d519d"></a>
1142
+ <h2 class="memtitle"><span class="permalink"><a href="#ad78244e7e7b203619e8065598e0d519d">&#9670;&nbsp;</a></span>getZExtValue() <span class="overload">[2/2]</span></h2>
1143
+
1144
+ <div class="memitem">
1145
+ <div class="memproto">
1146
+ <table class="mlabels">
1147
+ <tr>
1148
+ <td class="mlabels-left">
1149
+ <table class="memname">
1150
+ <tr>
1151
+ <td class="memname"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> SVF::SVFIR2AbsState::getZExtValue </td>
1152
+ <td>(</td>
1153
+ <td class="paramtype">const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> *&#160;</td>
1154
+ <td class="paramname"><em>var</em>, </td>
1155
+ </tr>
1156
+ <tr>
1157
+ <td class="paramkey"></td>
1158
+ <td></td>
1159
+ <td class="paramtype">const <a class="el" href="classSVF_1_1SVFType.html">SVFType</a> *&#160;</td>
1160
+ <td class="paramname">&#160;</td>
1161
+ </tr>
1162
+ <tr>
1163
+ <td></td>
1164
+ <td>)</td>
1165
+ <td></td><td></td>
1166
+ </tr>
1167
+ </table>
1168
+ </td>
1169
+ <td class="mlabels-right">
1170
+ <span class="mlabels"><span class="mlabel">private</span></span> </td>
1171
+ </tr>
1172
+ </table>
1173
+ </div><div class="memdoc">
1174
+
1175
+ </div>
1176
+ </div>
1177
+ <a id="ae1490bd3f93a4fcbb2390a3f30539b8a"></a>
1178
+ <h2 class="memtitle"><span class="permalink"><a href="#ae1490bd3f93a4fcbb2390a3f30539b8a">&#9670;&nbsp;</a></span>initObjVar()</h2>
1179
+
1180
+ <div class="memitem">
1181
+ <div class="memproto">
1182
+ <table class="memname">
1183
+ <tr>
1184
+ <td class="memname">void SVFIR2AbsState::initObjVar </td>
1185
+ <td>(</td>
1186
+ <td class="paramtype">const <a class="el" href="classSVF_1_1ObjVar.html">ObjVar</a> *&#160;</td>
1187
+ <td class="paramname"><em>objVar</em>, </td>
1188
+ </tr>
1189
+ <tr>
1190
+ <td class="paramkey"></td>
1191
+ <td></td>
1192
+ <td class="paramtype"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td>
1193
+ <td class="paramname"><em>varId</em>&#160;</td>
1194
+ </tr>
1195
+ <tr>
1196
+ <td></td>
1197
+ <td>)</td>
1198
+ <td></td><td></td>
1199
+ </tr>
1200
+ </table>
1201
+ </div><div class="memdoc">
1202
+
1203
+ <p>Init <a class="el" href="classSVF_1_1ObjVar.html">ObjVar</a>. </p>
1204
+ <p>Init <a class="el" href="classSVF_1_1Z3Expr.html">Z3Expr</a> for <a class="el" href="classSVF_1_1ObjVar.html">ObjVar</a> </p><dl class="params"><dt>Parameters</dt><dd>
1205
+ <table class="params">
1206
+ <tr><td class="paramname">objVar</td><td></td></tr>
1207
+ <tr><td class="paramname">valExprIdToCondValPairMap</td><td></td></tr>
1208
+ </table>
1209
+ </dd>
1210
+ </dl>
1211
+ <p>constant data</p>
1212
+
1213
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00577">577</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
1214
+ <div class="fragment"><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;{</div>
1215
+ <div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; </div>
1216
+ <div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">if</span> (objVar-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>())</div>
1217
+ <div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; {</div>
1218
+ <div class="line"><a name="l00582"></a><span class="lineno"> 582</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>
1219
+ <div class="line"><a name="l00584"></a><span class="lineno"> 584</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>
1220
+ <div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; {</div>
1221
+ <div class="line"><a name="l00586"></a><span class="lineno"> 586</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>
1222
+ <div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; {</div>
1223
+ <div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> numeral = consInt-&gt;getSExtValue();</div>
1224
+ <div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="classSVF_1_1SparseAbstractState.html#a1683fd7da77812137b839b8c417200fe">SparseAbstractState::globalES</a>[varId] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(numeral, numeral);</div>
1225
+ <div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; }</div>
1226
+ <div class="line"><a name="l00591"></a><span class="lineno"> 591</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>
1227
+ <div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <a class="code" href="classSVF_1_1SparseAbstractState.html#a1683fd7da77812137b839b8c417200fe">SparseAbstractState::globalES</a>[varId] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(consFP-&gt;getFPValue(), consFP-&gt;getFPValue());</div>
1228
+ <div class="line"><a name="l00593"></a><span class="lineno"> 593</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>
1229
+ <div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <a class="code" href="classSVF_1_1SparseAbstractState.html#a1683fd7da77812137b839b8c417200fe">SparseAbstractState::globalES</a>[varId] = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
1230
+ <div class="line"><a name="l00595"></a><span class="lineno"> 595</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>
1231
+ <div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; {</div>
1232
+ <div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <a class="code" href="classSVF_1_1SparseAbstractState.html#a1683fd7da77812137b839b8c417200fe">SparseAbstractState::globalES</a>[varId] = <a class="code" href="classSVF_1_1AddressValue.html">AddressValue</a>(<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a63d855cf3342454ce5154fa7605f9935">getVirtualMemAddress</a>(varId));</div>
1233
+ <div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; }</div>
1234
+ <div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; </div>
1235
+ <div class="line"><a name="l00600"></a><span class="lineno"> 600</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>
1236
+ <div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="classSVF_1_1SparseAbstractState.html#a1683fd7da77812137b839b8c417200fe">SparseAbstractState::globalES</a>[varId] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
1237
+ <div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">else</span></div>
1238
+ <div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="code" href="classSVF_1_1SparseAbstractState.html#a1683fd7da77812137b839b8c417200fe">SparseAbstractState::globalES</a>[varId] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
1239
+ <div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; }</div>
1240
+ <div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keywordflow">else</span></div>
1241
+ <div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <a class="code" href="classSVF_1_1SparseAbstractState.html#a1683fd7da77812137b839b8c417200fe">SparseAbstractState::globalES</a>[varId] = <a class="code" href="classSVF_1_1AddressValue.html">AddressValue</a>(<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a63d855cf3342454ce5154fa7605f9935">getVirtualMemAddress</a>(varId));</div>
1242
+ <div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; }</div>
1243
+ <div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">else</span></div>
1244
+ <div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <a class="code" href="classSVF_1_1SparseAbstractState.html#a1683fd7da77812137b839b8c417200fe">SparseAbstractState::globalES</a>[varId] = <a class="code" href="classSVF_1_1AddressValue.html">AddressValue</a>(<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a63d855cf3342454ce5154fa7605f9935">getVirtualMemAddress</a>(varId));</div>
1245
+ <div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;}</div>
1246
+ </div><!-- fragment -->
1247
+ </div>
1248
+ </div>
1249
+ <a id="aaecd2f39d5038009cb41b849fd8fe55f"></a>
1250
+ <h2 class="memtitle"><span class="permalink"><a href="#aaecd2f39d5038009cb41b849fd8fe55f">&#9670;&nbsp;</a></span>initSVFVar()</h2>
1251
+
1252
+ <div class="memitem">
1253
+ <div class="memproto">
1254
+ <table class="memname">
1255
+ <tr>
1256
+ <td class="memname">void SVFIR2AbsState::initSVFVar </td>
1257
+ <td>(</td>
1258
+ <td class="paramtype"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td>
1259
+ <td class="paramname"><em>varId</em></td><td>)</td>
1260
+ <td></td>
1261
+ </tr>
1262
+ </table>
1263
+ </div><div class="memdoc">
1264
+
1265
+ <p>Init <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a>. </p>
1266
+
1267
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00612">612</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
1268
+ <div class="fragment"><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;{</div>
1269
+ <div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">inVarToValTable</a>(varId) || <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>.<a class="code" href="classSVF_1_1SparseAbstractState.html#a41a0ffbedd20ce499bc04bbd9c1894e1">inVarToAddrsTable</a>(varId)) <span class="keywordflow">return</span>;</div>
1270
+ <div class="line"><a name="l00615"></a><span class="lineno"> 615</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>
1271
+ <div class="line"><a name="l00616"></a><span class="lineno"> 616</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>
1272
+ <div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="comment">// write objvar into cache instead of exestate</span></div>
1273
+ <div class="line"><a name="l00618"></a><span class="lineno"> 618</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>
1274
+ <div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; {</div>
1275
+ <div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#ae1490bd3f93a4fcbb2390a3f30539b8a">initObjVar</a>(objVar, varId);</div>
1276
+ <div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">return</span>;</div>
1277
+ <div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; }</div>
1278
+ <div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">else</span></div>
1279
+ <div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; {</div>
1280
+ <div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;not an obj var?&quot;</span>);</div>
1281
+ <div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; }</div>
1282
+ <div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;}</div>
1283
+ </div><!-- fragment -->
1284
+ </div>
1285
+ </div>
1286
+ <a id="a8eb06c3e65594dbcb602ec472258f09c"></a>
1287
+ <h2 class="memtitle"><span class="permalink"><a href="#a8eb06c3e65594dbcb602ec472258f09c">&#9670;&nbsp;</a></span>inLocToAddrsTable()</h2>
1288
+
1289
+ <div class="memitem">
1290
+ <div class="memproto">
1291
+ <table class="mlabels">
1292
+ <tr>
1293
+ <td class="mlabels-left">
1294
+ <table class="memname">
1295
+ <tr>
1296
+ <td class="memname">bool SVF::SVFIR2AbsState::inLocToAddrsTable </td>
1297
+ <td>(</td>
1298
+ <td class="paramtype"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td>
1299
+ <td class="paramname"><em>id</em></td><td>)</td>
1300
+ <td> const</td>
1301
+ </tr>
1302
+ </table>
1303
+ </td>
1304
+ <td class="mlabels-right">
1305
+ <span class="mlabels"><span class="mlabel">inline</span></span> </td>
1306
+ </tr>
1307
+ </table>
1308
+ </div><div class="memdoc">
1309
+
1310
+ <p>whether the memory address stores memory addresses </p>
1311
+
1312
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8h_source.html#l00142">142</a> of file <a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>.</p>
1313
+ <div class="fragment"><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; {</div>
1314
+ <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>.<a class="code" href="classSVF_1_1SparseAbstractState.html#ad28955676ab059f0c175cbff8bf097b5">inLocToAddrsTable</a>(<span class="keywordtype">id</span>);</div>
1315
+ <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div>
1316
+ </div><!-- fragment -->
1317
+ </div>
1318
+ </div>
1319
+ <a id="a847a9d505d3ed722b5b3d32cbcbd72ee"></a>
1320
+ <h2 class="memtitle"><span class="permalink"><a href="#a847a9d505d3ed722b5b3d32cbcbd72ee">&#9670;&nbsp;</a></span>inLocToValTable()</h2>
1321
+
1322
+ <div class="memitem">
1323
+ <div class="memproto">
1324
+ <table class="mlabels">
1325
+ <tr>
1326
+ <td class="mlabels-left">
1327
+ <table class="memname">
1328
+ <tr>
1329
+ <td class="memname">bool SVF::SVFIR2AbsState::inLocToValTable </td>
1330
+ <td>(</td>
1331
+ <td class="paramtype"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td>
1332
+ <td class="paramname"><em>id</em></td><td>)</td>
1333
+ <td> const</td>
1334
+ </tr>
1335
+ </table>
1336
+ </td>
1337
+ <td class="mlabels-right">
1338
+ <span class="mlabels"><span class="mlabel">inline</span></span> </td>
1339
+ </tr>
1340
+ </table>
1341
+ </div><div class="memdoc">
1342
+
1343
+ <p>whether the memory address stores a interval value </p>
1344
+
1345
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8h_source.html#l00136">136</a> of file <a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>.</p>
1346
+ <div class="fragment"><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div>
1347
+ <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>.<a class="code" href="classSVF_1_1SparseAbstractState.html#a931b900daaedf35965631b6492248940">inLocToValTable</a>(<span class="keywordtype">id</span>);</div>
1348
+ <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div>
1349
+ </div><!-- fragment -->
1350
+ </div>
1351
+ </div>
1352
+ <a id="a62baa9403069a9b1e010eaeb2f6b9b34"></a>
1353
+ <h2 class="memtitle"><span class="permalink"><a href="#a62baa9403069a9b1e010eaeb2f6b9b34">&#9670;&nbsp;</a></span>inVarToAddrsTable()</h2>
1354
+
1355
+ <div class="memitem">
1356
+ <div class="memproto">
1357
+ <table class="mlabels">
1358
+ <tr>
1359
+ <td class="mlabels-left">
1360
+ <table class="memname">
1361
+ <tr>
1362
+ <td class="memname">bool SVF::SVFIR2AbsState::inVarToAddrsTable </td>
1363
+ <td>(</td>
1364
+ <td class="paramtype"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td>
1365
+ <td class="paramname"><em>id</em></td><td>)</td>
1366
+ <td> const</td>
1367
+ </tr>
1368
+ </table>
1369
+ </td>
1370
+ <td class="mlabels-right">
1371
+ <span class="mlabels"><span class="mlabel">inline</span></span> </td>
1372
+ </tr>
1373
+ </table>
1374
+ </div><div class="memdoc">
1375
+
1376
+ <p>whether the variable is in varToAddrs table </p>
1377
+
1378
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8h_source.html#l00129">129</a> of file <a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>.</p>
1379
+ <div class="fragment"><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div>
1380
+ <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>.<a class="code" href="classSVF_1_1SparseAbstractState.html#a41a0ffbedd20ce499bc04bbd9c1894e1">inVarToAddrsTable</a>(<span class="keywordtype">id</span>);</div>
1381
+ <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div>
1382
+ </div><!-- fragment -->
1383
+ </div>
1384
+ </div>
1385
+ <a id="a26afaf14db3b2a56e2d325630e5ba841"></a>
1386
+ <h2 class="memtitle"><span class="permalink"><a href="#a26afaf14db3b2a56e2d325630e5ba841">&#9670;&nbsp;</a></span>inVarToValTable()</h2>
1387
+
1388
+ <div class="memitem">
1389
+ <div class="memproto">
1390
+ <table class="mlabels">
1391
+ <tr>
1392
+ <td class="mlabels-left">
1393
+ <table class="memname">
1394
+ <tr>
1395
+ <td class="memname">bool SVF::SVFIR2AbsState::inVarToValTable </td>
1396
+ <td>(</td>
1397
+ <td class="paramtype"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td>
1398
+ <td class="paramname"><em>id</em></td><td>)</td>
1399
+ <td> const</td>
1400
+ </tr>
1401
+ </table>
1402
+ </td>
1403
+ <td class="mlabels-right">
1404
+ <span class="mlabels"><span class="mlabel">inline</span></span> </td>
1405
+ </tr>
1406
+ </table>
1407
+ </div><div class="memdoc">
1408
+
1409
+ <p>whether the variable is in varToVal table </p>
1410
+
1411
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8h_source.html#l00123">123</a> of file <a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>.</p>
1412
+ <div class="fragment"><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; {</div>
1413
+ <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>.<a class="code" href="classSVF_1_1SparseAbstractState.html#a4f24d346d2ea4ed98f5516ba671d338b">inVarToValTable</a>(<span class="keywordtype">id</span>);</div>
1414
+ <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div>
1415
+ </div><!-- fragment -->
1416
+ </div>
1417
+ </div>
1418
+ <a id="a3bbf4cda2e3892c7359279337fab7d24"></a>
1419
+ <h2 class="memtitle"><span class="permalink"><a href="#a3bbf4cda2e3892c7359279337fab7d24">&#9670;&nbsp;</a></span>isVirtualMemAddress()</h2>
1420
+
1421
+ <div class="memitem">
1422
+ <div class="memproto">
1423
+ <table class="mlabels">
1424
+ <tr>
1425
+ <td class="mlabels-left">
1426
+ <table class="memname">
1427
+ <tr>
1428
+ <td class="memname">static bool SVF::SVFIR2AbsState::isVirtualMemAddress </td>
1429
+ <td>(</td>
1430
+ <td class="paramtype"><a class="el" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>&#160;</td>
1431
+ <td class="paramname"><em>val</em></td><td>)</td>
1432
+ <td></td>
1433
+ </tr>
1434
+ </table>
1435
+ </td>
1436
+ <td class="mlabels-right">
1437
+ <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1438
+ </tr>
1439
+ </table>
1440
+ </div><div class="memdoc">
1441
+
1442
+ <p>Check bit value of val start with 0x7F000000, filter by 0xFF000000. </p>
1443
+
1444
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8h_source.html#l00184">184</a> of file <a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>.</p>
1445
+ <div class="fragment"><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; {</div>
1446
+ <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AbstractState.html#ad3eefae77eb1fc4bbcfe70b0f2f51dd4">AbstractState::isVirtualMemAddress</a>(val);</div>
1447
+ <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div>
1448
+ </div><!-- fragment -->
1449
+ </div>
1450
+ </div>
1451
+ <a id="a4dc5a3a3778f84d810ad37a885804134"></a>
1452
+ <h2 class="memtitle"><span class="permalink"><a href="#a4dc5a3a3778f84d810ad37a885804134">&#9670;&nbsp;</a></span>moveToGlobal()</h2>
1453
+
1454
+ <div class="memitem">
1455
+ <div class="memproto">
1456
+ <table class="memname">
1457
+ <tr>
1458
+ <td class="memname">void SVFIR2AbsState::moveToGlobal </td>
1459
+ <td>(</td>
1460
+ <td class="paramname"></td><td>)</td>
1461
+ <td></td>
1462
+ </tr>
1463
+ </table>
1464
+ </div><div class="memdoc">
1465
+
1466
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00286">286</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
1467
+ <div class="fragment"><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;{</div>
1468
+ <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it: <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>.<a class="code" href="classSVF_1_1AbstractState.html#a6a49c75fb6b35159dcf1763b4484d335">_varToAbsVal</a>)</div>
1469
+ <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; {</div>
1470
+ <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="classSVF_1_1SparseAbstractState.html#a1683fd7da77812137b839b8c417200fe">SparseAbstractState::globalES</a>.<a class="code" href="classSVF_1_1AbstractState.html#a6a49c75fb6b35159dcf1763b4484d335">_varToAbsVal</a>.insert(it);</div>
1471
+ <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }</div>
1472
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it: <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>.<a class="code" href="classSVF_1_1AbstractState.html#aade30bb08f86b3f74e7aa9cdc60c92a3">_locToAbsVal</a>)</div>
1473
+ <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; {</div>
1474
+ <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="classSVF_1_1SparseAbstractState.html#a1683fd7da77812137b839b8c417200fe">SparseAbstractState::globalES</a>.<a class="code" href="classSVF_1_1AbstractState.html#aade30bb08f86b3f74e7aa9cdc60c92a3">_locToAbsVal</a>.insert(it);</div>
1475
+ <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div>
1476
+ <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; </div>
1477
+ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>.<a class="code" href="classSVF_1_1AbstractState.html#a6a49c75fb6b35159dcf1763b4484d335">_varToAbsVal</a>.clear();</div>
1478
+ <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="classSVF_1_1SparseAbstractState.html#a1683fd7da77812137b839b8c417200fe">SparseAbstractState::globalES</a>.<a class="code" href="classSVF_1_1AbstractState.html#a6a49c75fb6b35159dcf1763b4484d335">_varToAbsVal</a>.erase(<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()-&gt;getBlkPtr());</div>
1479
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>.<a class="code" href="classSVF_1_1AbstractState.html#a6a49c75fb6b35159dcf1763b4484d335">_varToAbsVal</a>[<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a3b417ee79560fd00f4cf80906044c198">getBlkPtr</a>()] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
1480
+ <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>.<a class="code" href="classSVF_1_1AbstractState.html#aade30bb08f86b3f74e7aa9cdc60c92a3">_locToAbsVal</a>.clear();</div>
1481
+ <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;}</div>
1482
+ </div><!-- fragment -->
1483
+ </div>
1484
+ </div>
1485
+ <a id="ab18f664b8bf3df6a772aa403c9a3d13d"></a>
1486
+ <h2 class="memtitle"><span class="permalink"><a href="#ab18f664b8bf3df6a772aa403c9a3d13d">&#9670;&nbsp;</a></span>narrowAddrs()</h2>
1487
+
1488
+ <div class="memitem">
1489
+ <div class="memproto">
1490
+ <table class="memname">
1491
+ <tr>
1492
+ <td class="memname">void SVFIR2AbsState::narrowAddrs </td>
1493
+ <td>(</td>
1494
+ <td class="paramtype"><a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a> &amp;&#160;</td>
1495
+ <td class="paramname"><em>lhs</em>, </td>
1496
+ </tr>
1497
+ <tr>
1498
+ <td class="paramkey"></td>
1499
+ <td></td>
1500
+ <td class="paramtype">const <a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a> &amp;&#160;</td>
1501
+ <td class="paramname"><em>rhs</em>&#160;</td>
1502
+ </tr>
1503
+ <tr>
1504
+ <td></td>
1505
+ <td>)</td>
1506
+ <td></td><td></td>
1507
+ </tr>
1508
+ </table>
1509
+ </div><div class="memdoc">
1510
+
1511
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00349">349</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
1512
+ <div class="fragment"><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;{</div>
1513
+ <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;rhsItem: rhs.<a class="code" href="classSVF_1_1AbstractState.html#a6a49c75fb6b35159dcf1763b4484d335">_varToAbsVal</a>)</div>
1514
+ <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; {</div>
1515
+ <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keyword">auto</span> lhsIter = lhs.<a class="code" href="classSVF_1_1AbstractState.html#a6a49c75fb6b35159dcf1763b4484d335">_varToAbsVal</a>.find(rhsItem.first);</div>
1516
+ <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">if</span> (lhsIter != lhs.<a class="code" href="classSVF_1_1AbstractState.html#a6a49c75fb6b35159dcf1763b4484d335">_varToAbsVal</a>.end())</div>
1517
+ <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div>
1518
+ <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">if</span> (lhsIter-&gt;second.isAddr())</div>
1519
+ <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; {</div>
1520
+ <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: lhsIter-&gt;second.getAddrs())</div>
1521
+ <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; {</div>
1522
+ <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">if</span> (!rhsItem.second.getAddrs().contains(addr))</div>
1523
+ <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; {</div>
1524
+ <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; lhsIter-&gt;second = rhsItem.second;</div>
1525
+ <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">break</span>;</div>
1526
+ <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div>
1527
+ <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div>
1528
+ <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div>
1529
+ <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; }</div>
1530
+ <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div>
1531
+ <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;rhsItem: rhs.<a class="code" href="classSVF_1_1AbstractState.html#aade30bb08f86b3f74e7aa9cdc60c92a3">_locToAbsVal</a>)</div>
1532
+ <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; {</div>
1533
+ <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keyword">auto</span> lhsIter = lhs.<a class="code" href="classSVF_1_1AbstractState.html#aade30bb08f86b3f74e7aa9cdc60c92a3">_locToAbsVal</a>.find(rhsItem.first);</div>
1534
+ <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">if</span> (lhsIter != lhs.<a class="code" href="classSVF_1_1AbstractState.html#aade30bb08f86b3f74e7aa9cdc60c92a3">_locToAbsVal</a>.end())</div>
1535
+ <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; {</div>
1536
+ <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">if</span> (lhsIter-&gt;second.isAddr())</div>
1537
+ <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; {</div>
1538
+ <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; addr : lhsIter-&gt;second.getAddrs())</div>
1539
+ <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div>
1540
+ <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">if</span> (!rhsItem.second.getAddrs().contains(addr))</div>
1541
+ <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; {</div>
1542
+ <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; lhsIter-&gt;second = rhsItem.second;</div>
1543
+ <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">break</span>;</div>
1544
+ <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; }</div>
1545
+ <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; }</div>
1546
+ <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; }</div>
1547
+ <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; }</div>
1548
+ <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; }</div>
1549
+ <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;}</div>
1550
+ </div><!-- fragment -->
1551
+ </div>
1552
+ </div>
1553
+ <a id="a05c1e3d5240466dda229080df6cb48f5"></a>
1554
+ <h2 class="memtitle"><span class="permalink"><a href="#a05c1e3d5240466dda229080df6cb48f5">&#9670;&nbsp;</a></span>setEs()</h2>
1555
+
1556
+ <div class="memitem">
1557
+ <div class="memproto">
1558
+ <table class="mlabels">
1559
+ <tr>
1560
+ <td class="mlabels-left">
1561
+ <table class="memname">
1562
+ <tr>
1563
+ <td class="memname">void SVF::SVFIR2AbsState::setEs </td>
1564
+ <td>(</td>
1565
+ <td class="paramtype">const <a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a> &amp;&#160;</td>
1566
+ <td class="paramname"><em>es</em></td><td>)</td>
1567
+ <td></td>
1568
+ </tr>
1569
+ </table>
1570
+ </td>
1571
+ <td class="mlabels-right">
1572
+ <span class="mlabels"><span class="mlabel">inline</span></span> </td>
1573
+ </tr>
1574
+ </table>
1575
+ </div><div class="memdoc">
1576
+
1577
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8h_source.html#l00049">49</a> of file <a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>.</p>
1578
+ <div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div>
1579
+ <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a> = es;</div>
1580
+ <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div>
1581
+ </div><!-- fragment -->
1582
+ </div>
1583
+ </div>
1584
+ <a id="ab58a5cc7a2bc6c38e87c8e5beb725b7a"></a>
1585
+ <h2 class="memtitle"><span class="permalink"><a href="#ab58a5cc7a2bc6c38e87c8e5beb725b7a">&#9670;&nbsp;</a></span>setRelEs()</h2>
1586
+
1587
+ <div class="memitem">
1588
+ <div class="memproto">
1589
+ <table class="mlabels">
1590
+ <tr>
1591
+ <td class="mlabels-left">
1592
+ <table class="memname">
1593
+ <tr>
1594
+ <td class="memname">void SVF::SVFIR2AbsState::setRelEs </td>
1595
+ <td>(</td>
1596
+ <td class="paramtype">const <a class="el" href="classSVF_1_1RelExeState.html">RelExeState</a> &amp;&#160;</td>
1597
+ <td class="paramname"><em>relEs</em></td><td>)</td>
1598
+ <td></td>
1599
+ </tr>
1600
+ </table>
1601
+ </td>
1602
+ <td class="mlabels-right">
1603
+ <span class="mlabels"><span class="mlabel">inline</span></span> </td>
1604
+ </tr>
1605
+ </table>
1606
+ </div><div class="memdoc">
1607
+
1608
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8h_source.html#l00059">59</a> of file <a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>.</p>
1609
+ <div class="fragment"><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div>
1610
+ <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a> = relEs;</div>
1611
+ <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div>
1612
+ </div><!-- fragment -->
1613
+ </div>
1614
+ </div>
1615
+ <a id="a21593731d5c76fe84a553037cfb4f558"></a>
1616
+ <h2 class="memtitle"><span class="permalink"><a href="#a21593731d5c76fe84a553037cfb4f558">&#9670;&nbsp;</a></span>translateAddr()</h2>
1617
+
1618
+ <div class="memitem">
1619
+ <div class="memproto">
1620
+ <table class="memname">
1621
+ <tr>
1622
+ <td class="memname">void SVFIR2AbsState::translateAddr </td>
1623
+ <td>(</td>
1624
+ <td class="paramtype">const <a class="el" href="classSVF_1_1AddrStmt.html">AddrStmt</a> *&#160;</td>
1625
+ <td class="paramname"><em>addr</em></td><td>)</td>
1626
+ <td></td>
1627
+ </tr>
1628
+ </table>
1629
+ </div><div class="memdoc">
1630
+
1631
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00630">630</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
1632
+ <div class="fragment"><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;{</div>
1633
+ <div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aaecd2f39d5038009cb41b849fd8fe55f">initSVFVar</a>(addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>());</div>
1634
+ <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">inVarToValTable</a>(addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>()))</div>
1635
+ <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; {</div>
1636
+ <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="comment">// if addr RHS is integerType(i8 i32 etc), value should be limited.</span></div>
1637
+ <div class="line"><a name="l00636"></a><span class="lineno"> 636</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>
1638
+ <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; {</div>
1639
+ <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <a class="code" href="classSVF_1_1SparseAbstractState.html#a1683fd7da77812137b839b8c417200fe">SparseAbstractState::globalES</a>[addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>()].meet_with(<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a4e032a5e0898f0e349927d5a86c8477c">getRangeLimitFromType</a>(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>
1640
+ <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; }</div>
1641
+ <div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <a class="code" href="classSVF_1_1SparseAbstractState.html#a1683fd7da77812137b839b8c417200fe">SparseAbstractState::globalES</a>[addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>()] =</div>
1642
+ <div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <a class="code" href="classSVF_1_1SparseAbstractState.html#a1683fd7da77812137b839b8c417200fe">SparseAbstractState::globalES</a>[addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>()];</div>
1643
+ <div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; </div>
1644
+ <div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; }</div>
1645
+ <div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>()))</div>
1646
+ <div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; {</div>
1647
+ <div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <a class="code" href="classSVF_1_1SparseAbstractState.html#a1683fd7da77812137b839b8c417200fe">SparseAbstractState::globalES</a>[addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>()] =</div>
1648
+ <div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <a class="code" href="classSVF_1_1SparseAbstractState.html#a1683fd7da77812137b839b8c417200fe">SparseAbstractState::globalES</a>[addr-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>()];</div>
1649
+ <div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div>
1650
+ <div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">else</span></div>
1651
+ <div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; {</div>
1652
+ <div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;not number or virtual addrs?&quot;</span>);</div>
1653
+ <div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; }</div>
1654
+ <div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;}</div>
1655
+ </div><!-- fragment -->
1656
+ </div>
1657
+ </div>
1658
+ <a id="a43a5d141547d1ceb37be60ce9647af91"></a>
1659
+ <h2 class="memtitle"><span class="permalink"><a href="#a43a5d141547d1ceb37be60ce9647af91">&#9670;&nbsp;</a></span>translateBinary()</h2>
1660
+
1661
+ <div class="memitem">
1662
+ <div class="memproto">
1663
+ <table class="memname">
1664
+ <tr>
1665
+ <td class="memname">void SVFIR2AbsState::translateBinary </td>
1666
+ <td>(</td>
1667
+ <td class="paramtype">const <a class="el" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> *&#160;</td>
1668
+ <td class="paramname"><em>binary</em></td><td>)</td>
1669
+ <td></td>
1670
+ </tr>
1671
+ </table>
1672
+ </div><div class="memdoc">
1673
+
1674
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00656">656</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
1675
+ <div class="fragment"><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;{</div>
1676
+ <div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> op0 = binary-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(0);</div>
1677
+ <div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> op1 = binary-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(1);</div>
1678
+ <div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> res = binary-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div>
1679
+ <div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">inVarToValTable</a>(op0)) <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[op0] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
1680
+ <div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">inVarToValTable</a>(op1)) <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[op1] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
1681
+ <div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">inVarToValTable</a>(op0) &amp;&amp; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">inVarToValTable</a>(op1))</div>
1682
+ <div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; {</div>
1683
+ <div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> &amp;lhs = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[op0], &amp;rhs = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[op1];</div>
1684
+ <div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> resVal;</div>
1685
+ <div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">switch</span> (binary-&gt;<a class="code" href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f">getOpcode</a>())</div>
1686
+ <div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; {</div>
1687
+ <div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a06926877b6c25931a409224497753862">BinaryOPStmt::Add</a>:</div>
1688
+ <div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a97c70ced12e0f1c5e3c3708b13727e8e">BinaryOPStmt::FAdd</a>:</div>
1689
+ <div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; resVal = (lhs + rhs);</div>
1690
+ <div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">break</span>;</div>
1691
+ <div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a758382a3b40e116175ca321fa4449d7f">BinaryOPStmt::Sub</a>:</div>
1692
+ <div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a05348a0e3f232ac552bb3ca56525c448">BinaryOPStmt::FSub</a>:</div>
1693
+ <div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; resVal = (lhs - rhs);</div>
1694
+ <div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">break</span>;</div>
1695
+ <div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a787e5771d6e70f3cbec3e2a33f5a4e8a">BinaryOPStmt::Mul</a>:</div>
1696
+ <div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a22a047e74227056ef3340628fae80198">BinaryOPStmt::FMul</a>:</div>
1697
+ <div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; resVal = (lhs * rhs);</div>
1698
+ <div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">break</span>;</div>
1699
+ <div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a7a4ce4e97992d92ac044456e66821552">BinaryOPStmt::SDiv</a>:</div>
1700
+ <div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a553540425a63724c8b7f2fd0ca25b567">BinaryOPStmt::FDiv</a>:</div>
1701
+ <div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ad2f8b02de2c62175d3341be92a925250">BinaryOPStmt::UDiv</a>:</div>
1702
+ <div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; resVal = (lhs / rhs);</div>
1703
+ <div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">break</span>;</div>
1704
+ <div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ad2db0456c9943dd75aa091cb19040448">BinaryOPStmt::SRem</a>:</div>
1705
+ <div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6aafa66e75600b0098c4fa3304720cb7a6">BinaryOPStmt::FRem</a>:</div>
1706
+ <div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6af7dba9dda5edcee046ca81fb184858bc">BinaryOPStmt::URem</a>:</div>
1707
+ <div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; resVal = (lhs % rhs);</div>
1708
+ <div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">break</span>;</div>
1709
+ <div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ac89b793572db14a3c018122cf9fc79d6">BinaryOPStmt::Xor</a>:</div>
1710
+ <div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; resVal = (lhs ^ rhs);</div>
1711
+ <div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">break</span>;</div>
1712
+ <div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a0df258a85e260bcb9534ae1b650e1856">BinaryOPStmt::And</a>:</div>
1713
+ <div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; resVal = (lhs &amp; rhs);</div>
1714
+ <div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">break</span>;</div>
1715
+ <div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a90745e5effc8b7ef43c693d1e4fa7dbe">BinaryOPStmt::Or</a>:</div>
1716
+ <div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; resVal = (lhs | rhs);</div>
1717
+ <div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">break</span>;</div>
1718
+ <div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ac988853383e1588cf568687848e73576">BinaryOPStmt::AShr</a>:</div>
1719
+ <div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; resVal = (lhs &gt;&gt; rhs);</div>
1720
+ <div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keywordflow">break</span>;</div>
1721
+ <div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a193780e40cee5123c543b6f739b3b46b">BinaryOPStmt::Shl</a>:</div>
1722
+ <div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; resVal = (lhs &lt;&lt; rhs);</div>
1723
+ <div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">break</span>;</div>
1724
+ <div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a0bf768bb67e7f6f5ee6302bb6dd71da1">BinaryOPStmt::LShr</a>:</div>
1725
+ <div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; resVal = (lhs &gt;&gt; rhs);</div>
1726
+ <div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">break</span>;</div>
1727
+ <div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordflow">default</span>:</div>
1728
+ <div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; {</div>
1729
+ <div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;undefined binary: &quot;</span>);</div>
1730
+ <div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; }</div>
1731
+ <div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; }</div>
1732
+ <div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[res] = resVal;</div>
1733
+ <div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; }</div>
1734
+ <div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;}</div>
1735
+ </div><!-- fragment -->
1736
+ </div>
1737
+ </div>
1738
+ <a id="aba122108bcba27e86c3b9079125698a2"></a>
1739
+ <h2 class="memtitle"><span class="permalink"><a href="#aba122108bcba27e86c3b9079125698a2">&#9670;&nbsp;</a></span>translateBinaryRel()</h2>
1740
+
1741
+ <div class="memitem">
1742
+ <div class="memproto">
1743
+ <table class="mlabels">
1744
+ <tr>
1745
+ <td class="mlabels-left">
1746
+ <table class="memname">
1747
+ <tr>
1748
+ <td class="memname">void SVFIR2AbsState::translateBinaryRel </td>
1749
+ <td>(</td>
1750
+ <td class="paramtype">const <a class="el" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> *&#160;</td>
1751
+ <td class="paramname"><em>binary</em></td><td>)</td>
1752
+ <td></td>
1753
+ </tr>
1754
+ </table>
1755
+ </td>
1756
+ <td class="mlabels-right">
1757
+ <span class="mlabels"><span class="mlabel">protected</span></span> </td>
1758
+ </tr>
1759
+ </table>
1760
+ </div><div class="memdoc">
1761
+
1762
+ <p class="definition">Definition at line <a class="el" href="SVFIR2Relation_8cpp_source.html#l00010">10</a> of file <a class="el" href="SVFIR2Relation_8cpp_source.html">SVFIR2Relation.cpp</a>.</p>
1763
+ <div class="fragment"><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;{</div>
1764
+ <div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op0 = binary-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(0);</div>
1765
+ <div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op1 = binary-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(1);</div>
1766
+ <div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> res = binary-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div>
1767
+ <div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &amp;rel_res = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>[res];</div>
1768
+ <div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &amp;rel_value0 = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>.<a class="code" href="classSVF_1_1RelExeState.html#a8045abc5e96d0c7b373587c796180d3e">toZ3Expr</a>(op0);</div>
1769
+ <div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &amp;rel_value1 = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>.<a class="code" href="classSVF_1_1RelExeState.html#a8045abc5e96d0c7b373587c796180d3e">toZ3Expr</a>(op1);</div>
1770
+ <div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordflow">switch</span> (binary-&gt;<a class="code" href="classSVF_1_1BinaryOPStmt.html#ad0a7c5e87355d7a83176343322db448f">getOpcode</a>())</div>
1771
+ <div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; {</div>
1772
+ <div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a06926877b6c25931a409224497753862">BinaryOPStmt::Add</a>:</div>
1773
+ <div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; {</div>
1774
+ <div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; rel_res = rel_value0 + rel_value1;</div>
1775
+ <div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">break</span>;</div>
1776
+ <div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; }</div>
1777
+ <div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a758382a3b40e116175ca321fa4449d7f">BinaryOPStmt::Sub</a>:</div>
1778
+ <div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; {</div>
1779
+ <div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; rel_res = rel_value0 - rel_value1;</div>
1780
+ <div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">break</span>;</div>
1781
+ <div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; }</div>
1782
+ <div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a787e5771d6e70f3cbec3e2a33f5a4e8a">BinaryOPStmt::Mul</a>:</div>
1783
+ <div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; {</div>
1784
+ <div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; rel_res = rel_value0 * rel_value1;</div>
1785
+ <div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">break</span>;</div>
1786
+ <div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; }</div>
1787
+ <div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a7a4ce4e97992d92ac044456e66821552">BinaryOPStmt::SDiv</a>:</div>
1788
+ <div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div>
1789
+ <div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; rel_res = rel_value0 / rel_value1;</div>
1790
+ <div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">break</span>;</div>
1791
+ <div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; }</div>
1792
+ <div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ad2db0456c9943dd75aa091cb19040448">BinaryOPStmt::SRem</a>:</div>
1793
+ <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">break</span>;</div>
1794
+ <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ac89b793572db14a3c018122cf9fc79d6">BinaryOPStmt::Xor</a>:</div>
1795
+ <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">break</span>;</div>
1796
+ <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a0df258a85e260bcb9534ae1b650e1856">BinaryOPStmt::And</a>:</div>
1797
+ <div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">break</span>;</div>
1798
+ <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a90745e5effc8b7ef43c693d1e4fa7dbe">BinaryOPStmt::Or</a>:</div>
1799
+ <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">break</span>;</div>
1800
+ <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ac988853383e1588cf568687848e73576">BinaryOPStmt::AShr</a>:</div>
1801
+ <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">break</span>;</div>
1802
+ <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a193780e40cee5123c543b6f739b3b46b">BinaryOPStmt::Shl</a>:</div>
1803
+ <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">break</span>;</div>
1804
+ <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">default</span>:</div>
1805
+ <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div>
1806
+ <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;implement this part&quot;</span>);</div>
1807
+ <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; abort();</div>
1808
+ <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div>
1809
+ <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div>
1810
+ <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div>
1811
+ </div><!-- fragment -->
1812
+ </div>
1813
+ </div>
1814
+ <a id="a216039856e097a03cc158ce5729f1790"></a>
1815
+ <h2 class="memtitle"><span class="permalink"><a href="#a216039856e097a03cc158ce5729f1790">&#9670;&nbsp;</a></span>translateCall()</h2>
1816
+
1817
+ <div class="memitem">
1818
+ <div class="memproto">
1819
+ <table class="memname">
1820
+ <tr>
1821
+ <td class="memname">void SVFIR2AbsState::translateCall </td>
1822
+ <td>(</td>
1823
+ <td class="paramtype">const <a class="el" href="classSVF_1_1CallPE.html">CallPE</a> *&#160;</td>
1824
+ <td class="paramname"><em>callPE</em></td><td>)</td>
1825
+ <td></td>
1826
+ </tr>
1827
+ </table>
1828
+ </div><div class="memdoc">
1829
+
1830
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l01107">1107</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
1831
+ <div class="fragment"><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;{</div>
1832
+ <div class="line"><a name="l01109"></a><span class="lineno"> 1109</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>
1833
+ <div class="line"><a name="l01110"></a><span class="lineno"> 1110</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>
1834
+ <div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">inVarToValTable</a>(rhs) || <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(rhs))</div>
1835
+ <div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; {</div>
1836
+ <div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs] = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[rhs];</div>
1837
+ <div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; }</div>
1838
+ <div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;}</div>
1839
+ </div><!-- fragment -->
1840
+ </div>
1841
+ </div>
1842
+ <a id="a1ea10ebb9cf317029ef3d45fca71d24d"></a>
1843
+ <h2 class="memtitle"><span class="permalink"><a href="#a1ea10ebb9cf317029ef3d45fca71d24d">&#9670;&nbsp;</a></span>translateCallRel()</h2>
1844
+
1845
+ <div class="memitem">
1846
+ <div class="memproto">
1847
+ <table class="mlabels">
1848
+ <tr>
1849
+ <td class="mlabels-left">
1850
+ <table class="memname">
1851
+ <tr>
1852
+ <td class="memname">void SVFIR2AbsState::translateCallRel </td>
1853
+ <td>(</td>
1854
+ <td class="paramtype">const <a class="el" href="classSVF_1_1CallPE.html">CallPE</a> *&#160;</td>
1855
+ <td class="paramname"><em>callPE</em></td><td>)</td>
1856
+ <td></td>
1857
+ </tr>
1858
+ </table>
1859
+ </td>
1860
+ <td class="mlabels-right">
1861
+ <span class="mlabels"><span class="mlabel">protected</span></span> </td>
1862
+ </tr>
1863
+ </table>
1864
+ </div><div class="memdoc">
1865
+
1866
+ <p class="definition">Definition at line <a class="el" href="SVFIR2Relation_8cpp_source.html#l00179">179</a> of file <a class="el" href="SVFIR2Relation_8cpp_source.html">SVFIR2Relation.cpp</a>.</p>
1867
+ <div class="fragment"><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;{</div>
1868
+ <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> rhs = callPE-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div>
1869
+ <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lhs = callPE-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div>
1870
+ <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>[lhs] = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>.<a class="code" href="classSVF_1_1RelExeState.html#a8045abc5e96d0c7b373587c796180d3e">toZ3Expr</a>(rhs);</div>
1871
+ <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;}</div>
1872
+ </div><!-- fragment -->
1873
+ </div>
1874
+ </div>
1875
+ <a id="ad574a6e7e28daebcd074021d831a1d1a"></a>
1876
+ <h2 class="memtitle"><span class="permalink"><a href="#ad574a6e7e28daebcd074021d831a1d1a">&#9670;&nbsp;</a></span>translateCmp()</h2>
1877
+
1878
+ <div class="memitem">
1879
+ <div class="memproto">
1880
+ <table class="memname">
1881
+ <tr>
1882
+ <td class="memname">void SVFIR2AbsState::translateCmp </td>
1883
+ <td>(</td>
1884
+ <td class="paramtype">const <a class="el" href="classSVF_1_1CmpStmt.html">CmpStmt</a> *&#160;</td>
1885
+ <td class="paramname"><em>cmp</em></td><td>)</td>
1886
+ <td></td>
1887
+ </tr>
1888
+ </table>
1889
+ </div><div class="memdoc">
1890
+
1891
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00718">718</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
1892
+ <div class="fragment"><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160;{</div>
1893
+ <div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> op0 = cmp-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(0);</div>
1894
+ <div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> op1 = cmp-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(1);</div>
1895
+ <div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> res = cmp-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div>
1896
+ <div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">inVarToValTable</a>(op0) &amp;&amp; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">inVarToValTable</a>(op1))</div>
1897
+ <div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; {</div>
1898
+ <div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> resVal;</div>
1899
+ <div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> &amp;lhs = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[op0], &amp;rhs = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[op1];</div>
1900
+ <div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="comment">//AbstractValue</span></div>
1901
+ <div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keyword">auto</span> predicate = cmp-&gt;<a class="code" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632">getPredicate</a>();</div>
1902
+ <div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">switch</span> (predicate)</div>
1903
+ <div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; {</div>
1904
+ <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#ad8e01744bfd98d584661025ce59338acafa5a0ab60aff74a8d653c3f9fac04936">CmpStmt::ICMP_EQ</a>:</div>
1905
+ <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#ad8e01744bfd98d584661025ce59338aca900bbc9c7824294c3a69c2cb006c27ee">CmpStmt::FCMP_OEQ</a>:</div>
1906
+ <div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca2793f23e72e3ff432bf193adf0f1b021">CmpStmt::FCMP_UEQ</a>:</div>
1907
+ <div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; resVal = (lhs == rhs);</div>
1908
+ <div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="comment">// resVal = (lhs.getInterval() == rhs.getInterval());</span></div>
1909
+ <div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">break</span>;</div>
1910
+ <div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca6eef834451ec753add639be49c51f03f">CmpStmt::ICMP_NE</a>:</div>
1911
+ <div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca2a3ce0c02931984d92d70356efc49193">CmpStmt::FCMP_ONE</a>:</div>
1912
+ <div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acad23a87cb6f2b3b2486a9a1277b491c09">CmpStmt::FCMP_UNE</a>:</div>
1913
+ <div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; resVal = (lhs != rhs);</div>
1914
+ <div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordflow">break</span>;</div>
1915
+ <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#ad8e01744bfd98d584661025ce59338aca8d59d9d7f39bb9c8b1e3dcebe0c5dc48">CmpStmt::ICMP_UGT</a>:</div>
1916
+ <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#ad8e01744bfd98d584661025ce59338aca229d105d0841dc895811b29af62a91ee">CmpStmt::ICMP_SGT</a>:</div>
1917
+ <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#ad8e01744bfd98d584661025ce59338aca6121702881c763c3c8cd3e30dedc7486">CmpStmt::FCMP_OGT</a>:</div>
1918
+ <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#ad8e01744bfd98d584661025ce59338aca3873c41e060b95cb37eac587402b597c">CmpStmt::FCMP_UGT</a>:</div>
1919
+ <div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; resVal = (lhs &gt; rhs);</div>
1920
+ <div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">break</span>;</div>
1921
+ <div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca3428808abe683bfc6bb0267077cdb128">CmpStmt::ICMP_UGE</a>:</div>
1922
+ <div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acac5a87d53b1ad255cec18b3784cd81f80">CmpStmt::ICMP_SGE</a>:</div>
1923
+ <div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca5c4576ce636e323cbc3aa322480c5d2c">CmpStmt::FCMP_OGE</a>:</div>
1924
+ <div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acac0e2d9db5453eb8be7543fb4315003da">CmpStmt::FCMP_UGE</a>:</div>
1925
+ <div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; resVal = (lhs &gt;= rhs);</div>
1926
+ <div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordflow">break</span>;</div>
1927
+ <div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca7833b647068883840c9bb438103e736d">CmpStmt::ICMP_ULT</a>:</div>
1928
+ <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#ad8e01744bfd98d584661025ce59338aca88d74bf66465f4fdd221db0c11d62927">CmpStmt::ICMP_SLT</a>:</div>
1929
+ <div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca5e3cf3105b8f13da66719856579956fa">CmpStmt::FCMP_OLT</a>:</div>
1930
+ <div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaa6b852204a4d0758ebd632d8a88b966d">CmpStmt::FCMP_ULT</a>:</div>
1931
+ <div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; resVal = (lhs &lt; rhs);</div>
1932
+ <div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keywordflow">break</span>;</div>
1933
+ <div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca56a20e408f9639234e4a11036764a38f">CmpStmt::ICMP_ULE</a>:</div>
1934
+ <div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaeeae52f8d195815edfb8c85037d246d6">CmpStmt::ICMP_SLE</a>:</div>
1935
+ <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#ad8e01744bfd98d584661025ce59338aca9dd165c6da06811ffc8c2e53b30ab32d">CmpStmt::FCMP_OLE</a>:</div>
1936
+ <div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca8149cba2e9e265892f02bbd4a35fe6fb">CmpStmt::FCMP_ULE</a>:</div>
1937
+ <div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; resVal = (lhs &lt;= rhs);</div>
1938
+ <div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">break</span>;</div>
1939
+ <div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaa100cf99398f6118d332191380574c06">CmpStmt::FCMP_FALSE</a>:</div>
1940
+ <div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
1941
+ <div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">break</span>;</div>
1942
+ <div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca7234c9a242034a71d0bdcb54aeec6da7">CmpStmt::FCMP_TRUE</a>:</div>
1943
+ <div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 1);</div>
1944
+ <div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keywordflow">break</span>;</div>
1945
+ <div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">default</span>:</div>
1946
+ <div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; {</div>
1947
+ <div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;undefined compare: &quot;</span>);</div>
1948
+ <div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; }</div>
1949
+ <div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; }</div>
1950
+ <div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[res] = resVal;</div>
1951
+ <div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; }</div>
1952
+ <div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(op0) &amp;&amp; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(op1))</div>
1953
+ <div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; {</div>
1954
+ <div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> resVal;</div>
1955
+ <div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> &amp;lhs = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(op0), &amp;rhs = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(op1);</div>
1956
+ <div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; assert(!lhs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>().<a class="code" href="classSVF_1_1AddressValue.html#aa7291f4b74bb824fb38b8c383fa0b6a0">empty</a>() &amp;&amp; !rhs.getAddrs().empty() &amp;&amp; <span class="stringliteral">&quot;empty address?&quot;</span>);</div>
1957
+ <div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keyword">auto</span> predicate = cmp-&gt;<a class="code" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632">getPredicate</a>();</div>
1958
+ <div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordflow">switch</span> (predicate)</div>
1959
+ <div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; {</div>
1960
+ <div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acafa5a0ab60aff74a8d653c3f9fac04936">CmpStmt::ICMP_EQ</a>:</div>
1961
+ <div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca900bbc9c7824294c3a69c2cb006c27ee">CmpStmt::FCMP_OEQ</a>:</div>
1962
+ <div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca2793f23e72e3ff432bf193adf0f1b021">CmpStmt::FCMP_UEQ</a>:</div>
1963
+ <div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; {</div>
1964
+ <div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>().<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.getAddrs().size() == 1)</div>
1965
+ <div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; {</div>
1966
+ <div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(lhs.<a class="code" href="structSVF_1_1AbstractValue.html#ae8a8fb4dc6ff1d7faddea6a9b1e65f1e">equals</a>(rhs));</div>
1967
+ <div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; }</div>
1968
+ <div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordflow">else</span></div>
1969
+ <div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; {</div>
1970
+ <div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>().<a class="code" href="classSVF_1_1AddressValue.html#a269a73753a7b495eb08bb0c9c0a58dc0">hasIntersect</a>(rhs.getAddrs()))</div>
1971
+ <div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; {</div>
1972
+ <div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
1973
+ <div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; }</div>
1974
+ <div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">else</span></div>
1975
+ <div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; {</div>
1976
+ <div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0);</div>
1977
+ <div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; }</div>
1978
+ <div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; }</div>
1979
+ <div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordflow">break</span>;</div>
1980
+ <div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; }</div>
1981
+ <div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca6eef834451ec753add639be49c51f03f">CmpStmt::ICMP_NE</a>:</div>
1982
+ <div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca2a3ce0c02931984d92d70356efc49193">CmpStmt::FCMP_ONE</a>:</div>
1983
+ <div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acad23a87cb6f2b3b2486a9a1277b491c09">CmpStmt::FCMP_UNE</a>:</div>
1984
+ <div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; {</div>
1985
+ <div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>().<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.getAddrs().size() == 1)</div>
1986
+ <div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; {</div>
1987
+ <div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(!lhs.<a class="code" href="structSVF_1_1AbstractValue.html#ae8a8fb4dc6ff1d7faddea6a9b1e65f1e">equals</a>(rhs));</div>
1988
+ <div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; }</div>
1989
+ <div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">else</span></div>
1990
+ <div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; {</div>
1991
+ <div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>().<a class="code" href="classSVF_1_1AddressValue.html#a269a73753a7b495eb08bb0c9c0a58dc0">hasIntersect</a>(rhs.getAddrs()))</div>
1992
+ <div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; {</div>
1993
+ <div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
1994
+ <div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; }</div>
1995
+ <div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keywordflow">else</span></div>
1996
+ <div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; {</div>
1997
+ <div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1);</div>
1998
+ <div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; }</div>
1999
+ <div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; }</div>
2000
+ <div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">break</span>;</div>
2001
+ <div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; }</div>
2002
+ <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca8d59d9d7f39bb9c8b1e3dcebe0c5dc48">CmpStmt::ICMP_UGT</a>:</div>
2003
+ <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca229d105d0841dc895811b29af62a91ee">CmpStmt::ICMP_SGT</a>:</div>
2004
+ <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca6121702881c763c3c8cd3e30dedc7486">CmpStmt::FCMP_OGT</a>:</div>
2005
+ <div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca3873c41e060b95cb37eac587402b597c">CmpStmt::FCMP_UGT</a>:</div>
2006
+ <div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; {</div>
2007
+ <div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>().<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.getAddrs().size() == 1)</div>
2008
+ <div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; {</div>
2009
+ <div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(*lhs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>().<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>() &gt; *rhs.getAddrs().begin());</div>
2010
+ <div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; }</div>
2011
+ <div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keywordflow">else</span></div>
2012
+ <div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; {</div>
2013
+ <div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
2014
+ <div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; }</div>
2015
+ <div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keywordflow">break</span>;</div>
2016
+ <div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; }</div>
2017
+ <div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca3428808abe683bfc6bb0267077cdb128">CmpStmt::ICMP_UGE</a>:</div>
2018
+ <div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acac5a87d53b1ad255cec18b3784cd81f80">CmpStmt::ICMP_SGE</a>:</div>
2019
+ <div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca5c4576ce636e323cbc3aa322480c5d2c">CmpStmt::FCMP_OGE</a>:</div>
2020
+ <div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acac0e2d9db5453eb8be7543fb4315003da">CmpStmt::FCMP_UGE</a>:</div>
2021
+ <div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; {</div>
2022
+ <div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>().<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.getAddrs().size() == 1)</div>
2023
+ <div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; {</div>
2024
+ <div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(*lhs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>().<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>() &gt;= *rhs.getAddrs().begin());</div>
2025
+ <div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; }</div>
2026
+ <div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <span class="keywordflow">else</span></div>
2027
+ <div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; {</div>
2028
+ <div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
2029
+ <div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; }</div>
2030
+ <div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <span class="keywordflow">break</span>;</div>
2031
+ <div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; }</div>
2032
+ <div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca7833b647068883840c9bb438103e736d">CmpStmt::ICMP_ULT</a>:</div>
2033
+ <div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca88d74bf66465f4fdd221db0c11d62927">CmpStmt::ICMP_SLT</a>:</div>
2034
+ <div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca5e3cf3105b8f13da66719856579956fa">CmpStmt::FCMP_OLT</a>:</div>
2035
+ <div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaa6b852204a4d0758ebd632d8a88b966d">CmpStmt::FCMP_ULT</a>:</div>
2036
+ <div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; {</div>
2037
+ <div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>().<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.getAddrs().size() == 1)</div>
2038
+ <div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; {</div>
2039
+ <div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(*lhs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>().<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>() &lt; *rhs.getAddrs().begin());</div>
2040
+ <div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; }</div>
2041
+ <div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="keywordflow">else</span></div>
2042
+ <div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; {</div>
2043
+ <div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
2044
+ <div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; }</div>
2045
+ <div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">break</span>;</div>
2046
+ <div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; }</div>
2047
+ <div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca56a20e408f9639234e4a11036764a38f">CmpStmt::ICMP_ULE</a>:</div>
2048
+ <div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaeeae52f8d195815edfb8c85037d246d6">CmpStmt::ICMP_SLE</a>:</div>
2049
+ <div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca9dd165c6da06811ffc8c2e53b30ab32d">CmpStmt::FCMP_OLE</a>:</div>
2050
+ <div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca8149cba2e9e265892f02bbd4a35fe6fb">CmpStmt::FCMP_ULE</a>:</div>
2051
+ <div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; {</div>
2052
+ <div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordflow">if</span> (lhs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>().<a class="code" href="classSVF_1_1AddressValue.html#ae93859318bf4f618b4cf681988a870ce">size</a>() == 1 &amp;&amp; rhs.getAddrs().size() == 1)</div>
2053
+ <div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; {</div>
2054
+ <div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(*lhs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>().<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>() &lt;= *rhs.getAddrs().begin());</div>
2055
+ <div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; }</div>
2056
+ <div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keywordflow">else</span></div>
2057
+ <div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; {</div>
2058
+ <div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
2059
+ <div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; }</div>
2060
+ <div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordflow">break</span>;</div>
2061
+ <div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; }</div>
2062
+ <div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaa100cf99398f6118d332191380574c06">CmpStmt::FCMP_FALSE</a>:</div>
2063
+ <div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(0, 0);</div>
2064
+ <div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keywordflow">break</span>;</div>
2065
+ <div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca7234c9a242034a71d0bdcb54aeec6da7">CmpStmt::FCMP_TRUE</a>:</div>
2066
+ <div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; resVal = <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(1, 1);</div>
2067
+ <div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">break</span>;</div>
2068
+ <div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <span class="keywordflow">default</span>:</div>
2069
+ <div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; {</div>
2070
+ <div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;undefined compare: &quot;</span>);</div>
2071
+ <div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; }</div>
2072
+ <div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; }</div>
2073
+ <div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[res] = resVal;</div>
2074
+ <div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; }</div>
2075
+ <div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;}</div>
2076
+ </div><!-- fragment -->
2077
+ </div>
2078
+ </div>
2079
+ <a id="ad44dba4fb64a2a664d315f7c71d095d4"></a>
2080
+ <h2 class="memtitle"><span class="permalink"><a href="#ad44dba4fb64a2a664d315f7c71d095d4">&#9670;&nbsp;</a></span>translateCmpRel()</h2>
2081
+
2082
+ <div class="memitem">
2083
+ <div class="memproto">
2084
+ <table class="mlabels">
2085
+ <tr>
2086
+ <td class="mlabels-left">
2087
+ <table class="memname">
2088
+ <tr>
2089
+ <td class="memname">void SVFIR2AbsState::translateCmpRel </td>
2090
+ <td>(</td>
2091
+ <td class="paramtype">const <a class="el" href="classSVF_1_1CmpStmt.html">CmpStmt</a> *&#160;</td>
2092
+ <td class="paramname"><em>cmp</em></td><td>)</td>
2093
+ <td></td>
2094
+ </tr>
2095
+ </table>
2096
+ </td>
2097
+ <td class="mlabels-right">
2098
+ <span class="mlabels"><span class="mlabel">protected</span></span> </td>
2099
+ </tr>
2100
+ </table>
2101
+ </div><div class="memdoc">
2102
+
2103
+ <p class="definition">Definition at line <a class="el" href="SVFIR2Relation_8cpp_source.html#l00060">60</a> of file <a class="el" href="SVFIR2Relation_8cpp_source.html">SVFIR2Relation.cpp</a>.</p>
2104
+ <div class="fragment"><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;{</div>
2105
+ <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op0 = cmp-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(0);</div>
2106
+ <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op1 = cmp-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(1);</div>
2107
+ <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> res_id = cmp-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div>
2108
+ <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> predicate = cmp-&gt;<a class="code" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632">getPredicate</a>();</div>
2109
+ <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &amp;rel_res = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>[res_id];</div>
2110
+ <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &amp;rel_value0 = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>.<a class="code" href="classSVF_1_1RelExeState.html#a8045abc5e96d0c7b373587c796180d3e">toZ3Expr</a>(op0);</div>
2111
+ <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &amp;rel_value1 = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>.<a class="code" href="classSVF_1_1RelExeState.html#a8045abc5e96d0c7b373587c796180d3e">toZ3Expr</a>(op1);</div>
2112
+ <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">switch</span> (predicate)</div>
2113
+ <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div>
2114
+ <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acafa5a0ab60aff74a8d653c3f9fac04936">CmpStmt::ICMP_EQ</a>:</div>
2115
+ <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div>
2116
+ <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; rel_res = ite(rel_value0 == rel_value1, 1, 0);</div>
2117
+ <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">break</span>;</div>
2118
+ <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div>
2119
+ <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca6eef834451ec753add639be49c51f03f">CmpStmt::ICMP_NE</a>:</div>
2120
+ <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div>
2121
+ <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; rel_res = ite(rel_value0 != rel_value1, 1, 0);</div>
2122
+ <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">break</span>;</div>
2123
+ <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div>
2124
+ <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca8d59d9d7f39bb9c8b1e3dcebe0c5dc48">CmpStmt::ICMP_UGT</a>:</div>
2125
+ <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca229d105d0841dc895811b29af62a91ee">CmpStmt::ICMP_SGT</a>:</div>
2126
+ <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div>
2127
+ <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; rel_res = ite(rel_value0 &gt; rel_value1, 1, 0);</div>
2128
+ <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">break</span>;</div>
2129
+ <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div>
2130
+ <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca3428808abe683bfc6bb0267077cdb128">CmpStmt::ICMP_UGE</a>:</div>
2131
+ <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acac5a87d53b1ad255cec18b3784cd81f80">CmpStmt::ICMP_SGE</a>:</div>
2132
+ <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div>
2133
+ <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; rel_res = ite(rel_value0 &gt;= rel_value1, 1, 0);</div>
2134
+ <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">break</span>;</div>
2135
+ <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div>
2136
+ <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca7833b647068883840c9bb438103e736d">CmpStmt::ICMP_ULT</a>:</div>
2137
+ <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca88d74bf66465f4fdd221db0c11d62927">CmpStmt::ICMP_SLT</a>:</div>
2138
+ <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div>
2139
+ <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; rel_res = ite(rel_value0 &lt; rel_value1, 1, 0);</div>
2140
+ <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">break</span>;</div>
2141
+ <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div>
2142
+ <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca56a20e408f9639234e4a11036764a38f">CmpStmt::ICMP_ULE</a>:</div>
2143
+ <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaeeae52f8d195815edfb8c85037d246d6">CmpStmt::ICMP_SLE</a>:</div>
2144
+ <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div>
2145
+ <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; rel_res = ite(rel_value0 &lt;= rel_value1, 1, 0);</div>
2146
+ <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">break</span>;</div>
2147
+ <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div>
2148
+ <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">default</span>:</div>
2149
+ <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;implement this part&quot;</span>);</div>
2150
+ <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; abort();</div>
2151
+ <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div>
2152
+ <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;}</div>
2153
+ </div><!-- fragment -->
2154
+ </div>
2155
+ </div>
2156
+ <a id="a860fd3feafa0e76b53d4972f8c187dcd"></a>
2157
+ <h2 class="memtitle"><span class="permalink"><a href="#a860fd3feafa0e76b53d4972f8c187dcd">&#9670;&nbsp;</a></span>translateCopy()</h2>
2158
+
2159
+ <div class="memitem">
2160
+ <div class="memproto">
2161
+ <table class="memname">
2162
+ <tr>
2163
+ <td class="memname">void SVFIR2AbsState::translateCopy </td>
2164
+ <td>(</td>
2165
+ <td class="paramtype">const <a class="el" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *&#160;</td>
2166
+ <td class="paramname"><em>copy</em></td><td>)</td>
2167
+ <td></td>
2168
+ </tr>
2169
+ </table>
2170
+ </div><div class="memdoc">
2171
+
2172
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00955">955</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
2173
+ <div class="fragment"><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160;{</div>
2174
+ <div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lhs = <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getLHSVarID();</div>
2175
+ <div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> rhs = <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVarID();</div>
2176
+ <div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()-&gt;isBlkPtr(lhs))</div>
2177
+ <div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; {</div>
2178
+ <div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
2179
+ <div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; }</div>
2180
+ <div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="keywordflow">else</span></div>
2181
+ <div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; {</div>
2182
+ <div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">inVarToValTable</a>(rhs))</div>
2183
+ <div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; {</div>
2184
+ <div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getCopyKind() == <a class="code" href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a3fbb25d7761cca1dd44e06e41e5570c9">CopyStmt::COPYVAL</a>)</div>
2185
+ <div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; {</div>
2186
+ <div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs] = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[rhs];</div>
2187
+ <div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; }</div>
2188
+ <div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getCopyKind() == <a class="code" href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a16c9ba88473e39f9a105b74b016af046">CopyStmt::ZEXT</a>)</div>
2189
+ <div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; {</div>
2190
+ <div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs] = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a1e270574a1d6f0894868cfb098ffbb8b">getZExtValue</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVar());</div>
2191
+ <div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; }</div>
2192
+ <div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getCopyKind() == <a class="code" href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1ab55ad5d331f6e4a69f8e2f0d95e5d3a1">CopyStmt::SEXT</a>)</div>
2193
+ <div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; {</div>
2194
+ <div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs] = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa925878721ae7028c3edae0c7fe8e127">getSExtValue</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVar());</div>
2195
+ <div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; }</div>
2196
+ <div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getCopyKind() == <a class="code" href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a975798ea3aeb2a77cc8858c712611afe">CopyStmt::FPTOSI</a>)</div>
2197
+ <div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; {</div>
2198
+ <div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs] = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#af48bab5352f5d1927aa467e1eb59c09f">getFPToSIntValue</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVar());</div>
2199
+ <div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; }</div>
2200
+ <div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getCopyKind() == <a class="code" href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a80a8638b1b7a7057fb4cd577e1949f6c">CopyStmt::FPTOUI</a>)</div>
2201
+ <div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; {</div>
2202
+ <div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs] = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#ae6a36e79bdc4506f9f011ad100125444">getFPToUIntValue</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVar());</div>
2203
+ <div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; }</div>
2204
+ <div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getCopyKind() == <a class="code" href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a78bc561098a07651f94e72bffa895e16">CopyStmt::SITOFP</a>)</div>
2205
+ <div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; {</div>
2206
+ <div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs] = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#af38b6e392cfd91b3516f2bc9feacce34">getSIntToFPValue</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVar());</div>
2207
+ <div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; }</div>
2208
+ <div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getCopyKind() == <a class="code" href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a821cd6daeaee15b117b41a272f743ff1">CopyStmt::UITOFP</a>)</div>
2209
+ <div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; {</div>
2210
+ <div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs] = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#ae247497ab346e612f645d39041b2ce32">getUIntToFPValue</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVar());</div>
2211
+ <div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; }</div>
2212
+ <div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getCopyKind() == <a class="code" href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1ab2b2f7dffed3d446a147fc7a27e66dd8">CopyStmt::TRUNC</a>)</div>
2213
+ <div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; {</div>
2214
+ <div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs] = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a38a62cdec2fac4ad2e64b86b4eb3b0bf">getTruncValue</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVar(), <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getLHSVar()-&gt;getType());</div>
2215
+ <div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; }</div>
2216
+ <div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getCopyKind() == <a class="code" href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1ab364378cef751d1bca631f3bfacd0658">CopyStmt::FPTRUNC</a>)</div>
2217
+ <div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; {</div>
2218
+ <div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs] = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a5ba833f2f98f5b1b1a8a7ff7ecdb72b9">getFPTruncValue</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVar(), <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getLHSVar()-&gt;getType());</div>
2219
+ <div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; }</div>
2220
+ <div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getCopyKind() == <a class="code" href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a32b1e88bbb7433ed8071e9dd9daa2c83">CopyStmt::INTTOPTR</a>)</div>
2221
+ <div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; {</div>
2222
+ <div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>.<a class="code" href="classSVF_1_1SparseAbstractState.html#a6749b39cd32b138578f7ff12669d36c3">getAddrs</a>(lhs).<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>().<a class="code" href="classSVF_1_1AddressValue.html#a40c67147606ab95dd3318d0fe821d8c0">insert</a>(<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a63d855cf3342454ce5154fa7605f9935">getVirtualMemAddress</a>(0)); <span class="comment">//insert nullptr</span></div>
2223
+ <div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; }</div>
2224
+ <div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getCopyKind() == <a class="code" href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1ae746463dbec33f7d026b1a43e9ea4b87">CopyStmt::PTRTOINT</a>)</div>
2225
+ <div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; {</div>
2226
+ <div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
2227
+ <div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; }</div>
2228
+ <div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getCopyKind() == <a class="code" href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a77433e71effbacec14da8f658523fb3e">CopyStmt::BITCAST</a>)</div>
2229
+ <div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; {</div>
2230
+ <div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[rhs].isAddr())</div>
2231
+ <div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; {</div>
2232
+ <div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs] = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[rhs];</div>
2233
+ <div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; }</div>
2234
+ <div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <span class="keywordflow">else</span></div>
2235
+ <div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; {</div>
2236
+ <div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="comment">// do nothing</span></div>
2237
+ <div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; }</div>
2238
+ <div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; }</div>
2239
+ <div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="keywordflow">else</span></div>
2240
+ <div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; {</div>
2241
+ <div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;undefined copy kind&quot;</span>);</div>
2242
+ <div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; abort();</div>
2243
+ <div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; }</div>
2244
+ <div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; }</div>
2245
+ <div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(rhs))</div>
2246
+ <div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; {</div>
2247
+ <div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; assert(!<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(rhs).<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>().empty());</div>
2248
+ <div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs] = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[rhs];</div>
2249
+ <div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; }</div>
2250
+ <div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; }</div>
2251
+ <div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;}</div>
2252
+ </div><!-- fragment -->
2253
+ </div>
2254
+ </div>
2255
+ <a id="ac232760ba4cfe4d5f7d9502ac00780fd"></a>
2256
+ <h2 class="memtitle"><span class="permalink"><a href="#ac232760ba4cfe4d5f7d9502ac00780fd">&#9670;&nbsp;</a></span>translateCopyRel()</h2>
2257
+
2258
+ <div class="memitem">
2259
+ <div class="memproto">
2260
+ <table class="mlabels">
2261
+ <tr>
2262
+ <td class="mlabels-left">
2263
+ <table class="memname">
2264
+ <tr>
2265
+ <td class="memname">void SVFIR2AbsState::translateCopyRel </td>
2266
+ <td>(</td>
2267
+ <td class="paramtype">const <a class="el" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *&#160;</td>
2268
+ <td class="paramname"><em>copy</em></td><td>)</td>
2269
+ <td></td>
2270
+ </tr>
2271
+ </table>
2272
+ </td>
2273
+ <td class="mlabels-right">
2274
+ <span class="mlabels"><span class="mlabel">protected</span></span> </td>
2275
+ </tr>
2276
+ </table>
2277
+ </div><div class="memdoc">
2278
+
2279
+ <p class="definition">Definition at line <a class="el" href="SVFIR2Relation_8cpp_source.html#l00127">127</a> of file <a class="el" href="SVFIR2Relation_8cpp_source.html">SVFIR2Relation.cpp</a>.</p>
2280
+ <div class="fragment"><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;{</div>
2281
+ <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> rhs = <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getRHSVarID();</div>
2282
+ <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lhs = <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getLHSVarID();</div>
2283
+ <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>[lhs] = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>.<a class="code" href="classSVF_1_1RelExeState.html#a8045abc5e96d0c7b373587c796180d3e">toZ3Expr</a>(rhs);</div>
2284
+ <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;}</div>
2285
+ </div><!-- fragment -->
2286
+ </div>
2287
+ </div>
2288
+ <a id="a934d7f60b5610bc39c5319dab927aa1b"></a>
2289
+ <h2 class="memtitle"><span class="permalink"><a href="#a934d7f60b5610bc39c5319dab927aa1b">&#9670;&nbsp;</a></span>translateGep()</h2>
2290
+
2291
+ <div class="memitem">
2292
+ <div class="memproto">
2293
+ <table class="memname">
2294
+ <tr>
2295
+ <td class="memname">void SVFIR2AbsState::translateGep </td>
2296
+ <td>(</td>
2297
+ <td class="paramtype">const <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a> *&#160;</td>
2298
+ <td class="paramname"><em>gep</em></td><td>)</td>
2299
+ <td></td>
2300
+ </tr>
2301
+ </table>
2302
+ </div><div class="memdoc">
2303
+
2304
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l01036">1036</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
2305
+ <div class="fragment"><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;{</div>
2306
+ <div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> rhs = gep-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div>
2307
+ <div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lhs = gep-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div>
2308
+ <div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(rhs)) <span class="keywordflow">return</span>;</div>
2309
+ <div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> &amp;rhsVal = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[rhs];</div>
2310
+ <div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; assert(!rhsVal.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>().<a class="code" href="classSVF_1_1AddressValue.html#aa7291f4b74bb824fb38b8c383fa0b6a0">empty</a>());</div>
2311
+ <div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> offsetPair = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a928b35a6ea960a94470b0983008bfa9d">getItvOfFlattenedElemIndex</a>(gep);</div>
2312
+ <div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a3bbf4cda2e3892c7359279337fab7d24">isVirtualMemAddress</a>(*rhsVal.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>().<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>()))</div>
2313
+ <div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <span class="keywordflow">return</span>;</div>
2314
+ <div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keywordflow">else</span></div>
2315
+ <div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; {</div>
2316
+ <div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> gepAddrs(<a class="code" href="structSVF_1_1AbstractValue.html#af93f4b54b34e74579ad177ead629b53aa3a7df767184a0bf01de99351747f545a">AbstractValue::UnknownType</a>);</div>
2317
+ <div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> lb = offsetPair.<a class="code" href="structSVF_1_1AbstractValue.html#a6c979397d4efb5b37e3b2bf9feba5648">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>() &lt; <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>()?</div>
2318
+ <div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; offsetPair.<a class="code" href="structSVF_1_1AbstractValue.html#a6c979397d4efb5b37e3b2bf9feba5648">lb</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>(): <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
2319
+ <div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> ub = offsetPair.<a class="code" href="structSVF_1_1AbstractValue.html#aecd8d41379dd6496772537ad51d1cb02">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>() &lt; <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>()?</div>
2320
+ <div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; offsetPair.<a class="code" href="structSVF_1_1AbstractValue.html#aecd8d41379dd6496772537ad51d1cb02">ub</a>().<a class="code" href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">getIntNumeral</a>(): <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
2321
+ <div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> i = lb; i &lt;= ub; i++)</div>
2322
+ <div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; gepAddrs.join_with(<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a10a83572bf5dee369b54cda74f402073">getGepObjAddress</a>(rhs, i));</div>
2323
+ <div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keywordflow">if</span> (!rhsVal.<a class="code" href="structSVF_1_1AbstractValue.html#a61516b8cd3550afd29f80fbe8c9146ff">isUnknown</a>())</div>
2324
+ <div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs] = gepAddrs;</div>
2325
+ <div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <span class="keywordflow">return</span>;</div>
2326
+ <div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; }</div>
2327
+ <div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;}</div>
2328
+ </div><!-- fragment -->
2329
+ </div>
2330
+ </div>
2331
+ <a id="a79839998d6db869a690ab63fdf635873"></a>
2332
+ <h2 class="memtitle"><span class="permalink"><a href="#a79839998d6db869a690ab63fdf635873">&#9670;&nbsp;</a></span>translateLoad()</h2>
2333
+
2334
+ <div class="memitem">
2335
+ <div class="memproto">
2336
+ <table class="memname">
2337
+ <tr>
2338
+ <td class="memname">void SVFIR2AbsState::translateLoad </td>
2339
+ <td>(</td>
2340
+ <td class="paramtype">const <a class="el" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *&#160;</td>
2341
+ <td class="paramname"><em>load</em></td><td>)</td>
2342
+ <td></td>
2343
+ </tr>
2344
+ </table>
2345
+ </div><div class="memdoc">
2346
+
2347
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00904">904</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
2348
+ <div class="fragment"><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160;{</div>
2349
+ <div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> rhs = load-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div>
2350
+ <div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lhs = load-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div>
2351
+ <div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(rhs))</div>
2352
+ <div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; {</div>
2353
+ <div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> &amp;addrs = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(rhs);</div>
2354
+ <div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; assert(!addrs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>().<a class="code" href="classSVF_1_1AddressValue.html#aa7291f4b74bb824fb38b8c383fa0b6a0">empty</a>());</div>
2355
+ <div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> rhsVal(<a class="code" href="structSVF_1_1AbstractValue.html#af93f4b54b34e74579ad177ead629b53aa3a7df767184a0bf01de99351747f545a">AbstractValue::UnknownType</a>); <span class="comment">// interval::bottom Address::bottom</span></div>
2356
+ <div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="comment">// AbstractValue absRhs</span></div>
2357
+ <div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: addrs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>())</div>
2358
+ <div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; {</div>
2359
+ <div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="comment">// inLocToAbsVal()</span></div>
2360
+ <div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="comment">// absRhs.join_with</span></div>
2361
+ <div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="comment">// es.load()</span></div>
2362
+ <div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> objId = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">getInternalID</a>(addr);</div>
2363
+ <div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a847a9d505d3ed722b5b3d32cbcbd72ee">inLocToValTable</a>(objId) || <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a8eb06c3e65594dbcb602ec472258f09c">inLocToAddrsTable</a>(objId))</div>
2364
+ <div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; {</div>
2365
+ <div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; rhsVal.join_with(<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>.<a class="code" href="classSVF_1_1SparseAbstractState.html#a9e428ac8cc2b3b59b7dc4b164eb8b1c0">load</a>(addr));</div>
2366
+ <div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; }</div>
2367
+ <div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; }</div>
2368
+ <div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keywordflow">if</span> (!rhsVal.isUnknown())</div>
2369
+ <div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs] = rhsVal;</div>
2370
+ <div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; }</div>
2371
+ <div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160;}</div>
2372
+ </div><!-- fragment -->
2373
+ </div>
2374
+ </div>
2375
+ <a id="aff94d5675005beef8a3c761839d4a94b"></a>
2376
+ <h2 class="memtitle"><span class="permalink"><a href="#aff94d5675005beef8a3c761839d4a94b">&#9670;&nbsp;</a></span>translateLoadRel()</h2>
2377
+
2378
+ <div class="memitem">
2379
+ <div class="memproto">
2380
+ <table class="mlabels">
2381
+ <tr>
2382
+ <td class="mlabels-left">
2383
+ <table class="memname">
2384
+ <tr>
2385
+ <td class="memname">void SVFIR2AbsState::translateLoadRel </td>
2386
+ <td>(</td>
2387
+ <td class="paramtype">const <a class="el" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *&#160;</td>
2388
+ <td class="paramname"><em>load</em></td><td>)</td>
2389
+ <td></td>
2390
+ </tr>
2391
+ </table>
2392
+ </td>
2393
+ <td class="mlabels-right">
2394
+ <span class="mlabels"><span class="mlabel">protected</span></span> </td>
2395
+ </tr>
2396
+ </table>
2397
+ </div><div class="memdoc">
2398
+
2399
+ <p class="definition">Definition at line <a class="el" href="SVFIR2Relation_8cpp_source.html#l00111">111</a> of file <a class="el" href="SVFIR2Relation_8cpp_source.html">SVFIR2Relation.cpp</a>.</p>
2400
+ <div class="fragment"><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;{</div>
2401
+ <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> rhs = load-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div>
2402
+ <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lhs = load-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div>
2403
+ <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>[lhs] = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>.<a class="code" href="classSVF_1_1RelExeState.html#aa550a580be3278d19f759b3a644baea5">load</a>(<a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>((<span class="keywordtype">int</span>) <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[rhs].getInterval().lb().getNumeral()));</div>
2404
+ <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;}</div>
2405
+ </div><!-- fragment -->
2406
+ </div>
2407
+ </div>
2408
+ <a id="a21a24cc4e0c9e4750332e6faa036f6f2"></a>
2409
+ <h2 class="memtitle"><span class="permalink"><a href="#a21a24cc4e0c9e4750332e6faa036f6f2">&#9670;&nbsp;</a></span>translatePhi()</h2>
2410
+
2411
+ <div class="memitem">
2412
+ <div class="memproto">
2413
+ <table class="memname">
2414
+ <tr>
2415
+ <td class="memname">void SVFIR2AbsState::translatePhi </td>
2416
+ <td>(</td>
2417
+ <td class="paramtype">const <a class="el" href="classSVF_1_1PhiStmt.html">PhiStmt</a> *&#160;</td>
2418
+ <td class="paramname"><em>phi</em></td><td>)</td>
2419
+ <td></td>
2420
+ </tr>
2421
+ </table>
2422
+ </div><div class="memdoc">
2423
+
2424
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l01089">1089</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
2425
+ <div class="fragment"><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;{</div>
2426
+ <div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> res = phi-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div>
2427
+ <div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> rhs(<a class="code" href="structSVF_1_1AbstractValue.html#af93f4b54b34e74579ad177ead629b53aa3a7df767184a0bf01de99351747f545a">AbstractValue::UnknownType</a>);</div>
2428
+ <div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i &lt; phi-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#af300571886b7aa2d84b0a70851c99bc3">getOpVarNum</a>(); i++)</div>
2429
+ <div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; {</div>
2430
+ <div class="line"><a name="l01095"></a><span class="lineno"> 1095</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>
2431
+ <div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; </div>
2432
+ <div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">inVarToValTable</a>(curId) || <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(curId))</div>
2433
+ <div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; {</div>
2434
+ <div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; rhs.join_with(<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[curId]);</div>
2435
+ <div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; }</div>
2436
+ <div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; }</div>
2437
+ <div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keywordflow">if</span> (!rhs.isUnknown())</div>
2438
+ <div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[res] = rhs;</div>
2439
+ <div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;}</div>
2440
+ </div><!-- fragment -->
2441
+ </div>
2442
+ </div>
2443
+ <a id="a31f7fd30718aa9e0e4a1da5c6baed114"></a>
2444
+ <h2 class="memtitle"><span class="permalink"><a href="#a31f7fd30718aa9e0e4a1da5c6baed114">&#9670;&nbsp;</a></span>translatePhiRel()</h2>
2445
+
2446
+ <div class="memitem">
2447
+ <div class="memproto">
2448
+ <table class="mlabels">
2449
+ <tr>
2450
+ <td class="mlabels-left">
2451
+ <table class="memname">
2452
+ <tr>
2453
+ <td class="memname">void SVFIR2AbsState::translatePhiRel </td>
2454
+ <td>(</td>
2455
+ <td class="paramtype">const <a class="el" href="classSVF_1_1PhiStmt.html">PhiStmt</a> *&#160;</td>
2456
+ <td class="paramname"><em>phi</em>, </td>
2457
+ </tr>
2458
+ <tr>
2459
+ <td class="paramkey"></td>
2460
+ <td></td>
2461
+ <td class="paramtype">const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *&#160;</td>
2462
+ <td class="paramname"><em>srcNode</em>, </td>
2463
+ </tr>
2464
+ <tr>
2465
+ <td class="paramkey"></td>
2466
+ <td></td>
2467
+ <td class="paramtype">const std::vector&lt; const <a class="el" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> * &gt; &amp;&#160;</td>
2468
+ <td class="paramname"><em>path</em>&#160;</td>
2469
+ </tr>
2470
+ <tr>
2471
+ <td></td>
2472
+ <td>)</td>
2473
+ <td></td><td></td>
2474
+ </tr>
2475
+ </table>
2476
+ </td>
2477
+ <td class="mlabels-right">
2478
+ <span class="mlabels"><span class="mlabel">protected</span></span> </td>
2479
+ </tr>
2480
+ </table>
2481
+ </div><div class="memdoc">
2482
+
2483
+ <p class="definition">Definition at line <a class="el" href="SVFIR2Relation_8cpp_source.html#l00151">151</a> of file <a class="el" href="SVFIR2Relation_8cpp_source.html">SVFIR2Relation.cpp</a>.</p>
2484
+ <div class="fragment"><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;{</div>
2485
+ <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> res = phi-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div>
2486
+ <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; std::unordered_map&lt;const ICFGNode *, NodeID&gt; candidate_ids;</div>
2487
+ <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> i = 0; i &lt; phi-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#af300571886b7aa2d84b0a70851c99bc3">getOpVarNum</a>(); i++)</div>
2488
+ <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {</div>
2489
+ <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; candidate_ids[phi-&gt;<a class="code" href="classSVF_1_1PhiStmt.html#a0b97394bc1946c0185d2c11fbc2181f4">getOpICFGNode</a>(i)] = phi-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(i);</div>
2490
+ <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div>
2491
+ <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = path.end() - 1; it != path.begin(); --it)</div>
2492
+ <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div>
2493
+ <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keyword">auto</span> cur_node = (*it)-&gt;getDstNode();</div>
2494
+ <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">if</span> (candidate_ids.find(cur_node) != candidate_ids.end())</div>
2495
+ <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div>
2496
+ <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>().find(res) == <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>.<a class="code" href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">getVarToVal</a>().end())</div>
2497
+ <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; {</div>
2498
+ <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>[res] = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>.<a class="code" href="classSVF_1_1RelExeState.html#a8045abc5e96d0c7b373587c796180d3e">toZ3Expr</a>(candidate_ids[cur_node]);</div>
2499
+ <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div>
2500
+ <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">else</span></div>
2501
+ <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; {</div>
2502
+ <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; </div>
2503
+ <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div>
2504
+ <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span>;</div>
2505
+ <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div>
2506
+ <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div>
2507
+ <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;predecessor ICFGNode of this PhiStmt not found?&quot;</span>);</div>
2508
+ <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;}</div>
2509
+ </div><!-- fragment -->
2510
+ </div>
2511
+ </div>
2512
+ <a id="a9cdb7cc614bd71884304c627f141fd3d"></a>
2513
+ <h2 class="memtitle"><span class="permalink"><a href="#a9cdb7cc614bd71884304c627f141fd3d">&#9670;&nbsp;</a></span>translateRet()</h2>
2514
+
2515
+ <div class="memitem">
2516
+ <div class="memproto">
2517
+ <table class="memname">
2518
+ <tr>
2519
+ <td class="memname">void SVFIR2AbsState::translateRet </td>
2520
+ <td>(</td>
2521
+ <td class="paramtype">const <a class="el" href="classSVF_1_1RetPE.html">RetPE</a> *&#160;</td>
2522
+ <td class="paramname"><em>retPE</em></td><td>)</td>
2523
+ <td></td>
2524
+ </tr>
2525
+ </table>
2526
+ </div><div class="memdoc">
2527
+
2528
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l01117">1117</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
2529
+ <div class="fragment"><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;{</div>
2530
+ <div class="line"><a name="l01119"></a><span class="lineno"> 1119</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>
2531
+ <div class="line"><a name="l01120"></a><span class="lineno"> 1120</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>
2532
+ <div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">inVarToValTable</a>(rhs) || <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(rhs))</div>
2533
+ <div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; {</div>
2534
+ <div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs] = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[rhs];</div>
2535
+ <div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; }</div>
2536
+ <div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;}</div>
2537
+ </div><!-- fragment -->
2538
+ </div>
2539
+ </div>
2540
+ <a id="aee3c4eed017d379ebc1724fa395c6d92"></a>
2541
+ <h2 class="memtitle"><span class="permalink"><a href="#aee3c4eed017d379ebc1724fa395c6d92">&#9670;&nbsp;</a></span>translateRetRel()</h2>
2542
+
2543
+ <div class="memitem">
2544
+ <div class="memproto">
2545
+ <table class="mlabels">
2546
+ <tr>
2547
+ <td class="mlabels-left">
2548
+ <table class="memname">
2549
+ <tr>
2550
+ <td class="memname">void SVFIR2AbsState::translateRetRel </td>
2551
+ <td>(</td>
2552
+ <td class="paramtype">const <a class="el" href="classSVF_1_1RetPE.html">RetPE</a> *&#160;</td>
2553
+ <td class="paramname"><em>retPE</em></td><td>)</td>
2554
+ <td></td>
2555
+ </tr>
2556
+ </table>
2557
+ </td>
2558
+ <td class="mlabels-right">
2559
+ <span class="mlabels"><span class="mlabel">protected</span></span> </td>
2560
+ </tr>
2561
+ </table>
2562
+ </div><div class="memdoc">
2563
+
2564
+ <p class="definition">Definition at line <a class="el" href="SVFIR2Relation_8cpp_source.html#l00186">186</a> of file <a class="el" href="SVFIR2Relation_8cpp_source.html">SVFIR2Relation.cpp</a>.</p>
2565
+ <div class="fragment"><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;{</div>
2566
+ <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lhs = retPE-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div>
2567
+ <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> rhs = retPE-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div>
2568
+ <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>[lhs] = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>.<a class="code" href="classSVF_1_1RelExeState.html#a8045abc5e96d0c7b373587c796180d3e">toZ3Expr</a>(rhs);</div>
2569
+ <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;}</div>
2570
+ </div><!-- fragment -->
2571
+ </div>
2572
+ </div>
2573
+ <a id="a05ee8c5925b490f24f0d7662d0e00d42"></a>
2574
+ <h2 class="memtitle"><span class="permalink"><a href="#a05ee8c5925b490f24f0d7662d0e00d42">&#9670;&nbsp;</a></span>translateSelect()</h2>
2575
+
2576
+ <div class="memitem">
2577
+ <div class="memproto">
2578
+ <table class="memname">
2579
+ <tr>
2580
+ <td class="memname">void SVFIR2AbsState::translateSelect </td>
2581
+ <td>(</td>
2582
+ <td class="paramtype">const <a class="el" href="classSVF_1_1SelectStmt.html">SelectStmt</a> *&#160;</td>
2583
+ <td class="paramname"><em>select</em></td><td>)</td>
2584
+ <td></td>
2585
+ </tr>
2586
+ </table>
2587
+ </div><div class="memdoc">
2588
+
2589
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l01061">1061</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
2590
+ <div class="fragment"><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;{</div>
2591
+ <div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> res = select-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div>
2592
+ <div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">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>
2593
+ <div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">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>
2594
+ <div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">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>
2595
+ <div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">inVarToValTable</a>(tval) &amp;&amp; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">inVarToValTable</a>(fval) &amp;&amp; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">inVarToValTable</a>(cond))</div>
2596
+ <div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; {</div>
2597
+ <div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[cond].getInterval().is_numeral())</div>
2598
+ <div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; {</div>
2599
+ <div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[res] = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[cond].getInterval().is_zero() ? <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[fval] : <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[tval];</div>
2600
+ <div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; }</div>
2601
+ <div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; <span class="keywordflow">else</span></div>
2602
+ <div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; {</div>
2603
+ <div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[res] = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[cond];</div>
2604
+ <div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; }</div>
2605
+ <div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; }</div>
2606
+ <div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(tval) &amp;&amp; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(fval) &amp;&amp; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">inVarToValTable</a>(cond))</div>
2607
+ <div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; {</div>
2608
+ <div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[cond].getInterval().is_numeral())</div>
2609
+ <div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; {</div>
2610
+ <div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; assert(!<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(fval).<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>().empty());</div>
2611
+ <div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; assert(!<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(tval).<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>().empty());</div>
2612
+ <div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>.<a class="code" href="classSVF_1_1SparseAbstractState.html#a6749b39cd32b138578f7ff12669d36c3">getAddrs</a>(res) = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[cond].getInterval().is_zero() ? <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(fval) : <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(tval);</div>
2613
+ <div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; }</div>
2614
+ <div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; }</div>
2615
+ <div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;}</div>
2616
+ </div><!-- fragment -->
2617
+ </div>
2618
+ </div>
2619
+ <a id="a562b6b73c7d6c2157ba369c4e25b0ed1"></a>
2620
+ <h2 class="memtitle"><span class="permalink"><a href="#a562b6b73c7d6c2157ba369c4e25b0ed1">&#9670;&nbsp;</a></span>translateSelectRel()</h2>
2621
+
2622
+ <div class="memitem">
2623
+ <div class="memproto">
2624
+ <table class="mlabels">
2625
+ <tr>
2626
+ <td class="mlabels-left">
2627
+ <table class="memname">
2628
+ <tr>
2629
+ <td class="memname">void SVFIR2AbsState::translateSelectRel </td>
2630
+ <td>(</td>
2631
+ <td class="paramtype">const <a class="el" href="classSVF_1_1SelectStmt.html">SelectStmt</a> *&#160;</td>
2632
+ <td class="paramname"><em>select</em></td><td>)</td>
2633
+ <td></td>
2634
+ </tr>
2635
+ </table>
2636
+ </td>
2637
+ <td class="mlabels-right">
2638
+ <span class="mlabels"><span class="mlabel">protected</span></span> </td>
2639
+ </tr>
2640
+ </table>
2641
+ </div><div class="memdoc">
2642
+
2643
+ <p class="definition">Definition at line <a class="el" href="SVFIR2Relation_8cpp_source.html#l00134">134</a> of file <a class="el" href="SVFIR2Relation_8cpp_source.html">SVFIR2Relation.cpp</a>.</p>
2644
+ <div class="fragment"><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;{</div>
2645
+ <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> res = select-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div>
2646
+ <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">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>
2647
+ <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">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>
2648
+ <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">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>
2649
+ <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>&amp; condVal = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[cond].getInterval();</div>
2650
+ <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span> (condVal.<a class="code" href="classSVF_1_1IntervalValue.html#a523826aede7ad22736beed0c8223b6b0">is_numeral</a>())</div>
2651
+ <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div>
2652
+ <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>[res] = condVal.<a class="code" href="classSVF_1_1IntervalValue.html#a970b85f66d80cfc8ca56a8846c921afa">is_zero</a>() ? <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>.<a class="code" href="classSVF_1_1RelExeState.html#a8045abc5e96d0c7b373587c796180d3e">toZ3Expr</a>(fval) : <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>.<a class="code" href="classSVF_1_1RelExeState.html#a8045abc5e96d0c7b373587c796180d3e">toZ3Expr</a>(tval);</div>
2653
+ <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div>
2654
+ <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">else</span></div>
2655
+ <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div>
2656
+ <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; </div>
2657
+ <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div>
2658
+ <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;}</div>
2659
+ </div><!-- fragment -->
2660
+ </div>
2661
+ </div>
2662
+ <a id="a4d5f3771dbe847f883594a0b1c2e246f"></a>
2663
+ <h2 class="memtitle"><span class="permalink"><a href="#a4d5f3771dbe847f883594a0b1c2e246f">&#9670;&nbsp;</a></span>translateStore()</h2>
2664
+
2665
+ <div class="memitem">
2666
+ <div class="memproto">
2667
+ <table class="memname">
2668
+ <tr>
2669
+ <td class="memname">void SVFIR2AbsState::translateStore </td>
2670
+ <td>(</td>
2671
+ <td class="paramtype">const <a class="el" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *&#160;</td>
2672
+ <td class="paramname"><em>store</em></td><td>)</td>
2673
+ <td></td>
2674
+ </tr>
2675
+ </table>
2676
+ </div><div class="memdoc">
2677
+
2678
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00930">930</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
2679
+ <div class="fragment"><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160;{</div>
2680
+ <div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> rhs = store-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div>
2681
+ <div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lhs = store-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div>
2682
+ <div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(lhs))</div>
2683
+ <div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; {</div>
2684
+ <div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="comment">//es.store()</span></div>
2685
+ <div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; assert(!<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(lhs).<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>().empty());</div>
2686
+ <div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <a class="code" href="structSVF_1_1AbstractValue.html">AbstractValue</a> &amp;addrs = <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs];</div>
2687
+ <div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: addrs.<a class="code" href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">getAddrs</a>())</div>
2688
+ <div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; {</div>
2689
+ <div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>.<a class="code" href="classSVF_1_1AbstractState.html#a1f935ea8ab16b04699284bf92bbbb23c">store</a>(addr, <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[rhs]);</div>
2690
+ <div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; }</div>
2691
+ <div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; </div>
2692
+ <div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">inVarToValTable</a>(rhs) || <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">inVarToAddrsTable</a>(rhs))</div>
2693
+ <div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; {</div>
2694
+ <div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; assert(!<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>(lhs).<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>().empty());</div>
2695
+ <div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs].<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">getAddrs</a>())</div>
2696
+ <div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; {</div>
2697
+ <div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>.<a class="code" href="classSVF_1_1AbstractState.html#a1f935ea8ab16b04699284bf92bbbb23c">store</a>(addr, <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[rhs]);</div>
2698
+ <div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; }</div>
2699
+ <div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; }</div>
2700
+ <div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; }</div>
2701
+ <div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160;}</div>
2702
+ </div><!-- fragment -->
2703
+ </div>
2704
+ </div>
2705
+ <a id="a9ab9226636ccfc53d59017ad5e5a6ab7"></a>
2706
+ <h2 class="memtitle"><span class="permalink"><a href="#a9ab9226636ccfc53d59017ad5e5a6ab7">&#9670;&nbsp;</a></span>translateStoreRel()</h2>
2707
+
2708
+ <div class="memitem">
2709
+ <div class="memproto">
2710
+ <table class="mlabels">
2711
+ <tr>
2712
+ <td class="mlabels-left">
2713
+ <table class="memname">
2714
+ <tr>
2715
+ <td class="memname">void SVFIR2AbsState::translateStoreRel </td>
2716
+ <td>(</td>
2717
+ <td class="paramtype">const <a class="el" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *&#160;</td>
2718
+ <td class="paramname"><em>store</em></td><td>)</td>
2719
+ <td></td>
2720
+ </tr>
2721
+ </table>
2722
+ </td>
2723
+ <td class="mlabels-right">
2724
+ <span class="mlabels"><span class="mlabel">protected</span></span> </td>
2725
+ </tr>
2726
+ </table>
2727
+ </div><div class="memdoc">
2728
+
2729
+ <p class="definition">Definition at line <a class="el" href="SVFIR2Relation_8cpp_source.html#l00118">118</a> of file <a class="el" href="SVFIR2Relation_8cpp_source.html">SVFIR2Relation.cpp</a>.</p>
2730
+ <div class="fragment"><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;{</div>
2731
+ <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> rhs = store-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>();</div>
2732
+ <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lhs = store-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>();</div>
2733
+ <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; assert(<a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs].getInterval().is_numeral() &amp;&amp; <span class="stringliteral">&quot;loc not numeral?&quot;</span>);</div>
2734
+ <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>.<a class="code" href="classSVF_1_1RelExeState.html#a3a2d5de4c61fab8b277308a186795a13">store</a>(<a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a>((<span class="keywordtype">int</span>) <a class="code" href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">_es</a>[lhs].getInterval().lb().getNumeral()), <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">_relEs</a>.<a class="code" href="classSVF_1_1RelExeState.html#a8045abc5e96d0c7b373587c796180d3e">toZ3Expr</a>(rhs));</div>
2735
+ <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; </div>
2736
+ <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;}</div>
2737
+ </div><!-- fragment -->
2738
+ </div>
2739
+ </div>
2740
+ <a id="a72c49e5c07eacfeeb494f26c761ec257"></a>
2741
+ <h2 class="memtitle"><span class="permalink"><a href="#a72c49e5c07eacfeeb494f26c761ec257">&#9670;&nbsp;</a></span>widenAddrs()</h2>
2742
+
2743
+ <div class="memitem">
2744
+ <div class="memproto">
2745
+ <table class="memname">
2746
+ <tr>
2747
+ <td class="memname">void SVFIR2AbsState::widenAddrs </td>
2748
+ <td>(</td>
2749
+ <td class="paramtype"><a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a> &amp;&#160;</td>
2750
+ <td class="paramname"><em>lhs</em>, </td>
2751
+ </tr>
2752
+ <tr>
2753
+ <td class="paramkey"></td>
2754
+ <td></td>
2755
+ <td class="paramtype">const <a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a> &amp;&#160;</td>
2756
+ <td class="paramname"><em>rhs</em>&#160;</td>
2757
+ </tr>
2758
+ <tr>
2759
+ <td></td>
2760
+ <td>)</td>
2761
+ <td></td><td></td>
2762
+ </tr>
2763
+ </table>
2764
+ </div><div class="memdoc">
2765
+
2766
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8cpp_source.html#l00303">303</a> of file <a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a>.</p>
2767
+ <div class="fragment"><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;{</div>
2768
+ <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;rhsItem: rhs.<a class="code" href="classSVF_1_1AbstractState.html#a6a49c75fb6b35159dcf1763b4484d335">_varToAbsVal</a>)</div>
2769
+ <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; {</div>
2770
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keyword">auto</span> lhsIter = lhs.<a class="code" href="classSVF_1_1AbstractState.html#a6a49c75fb6b35159dcf1763b4484d335">_varToAbsVal</a>.find(rhsItem.first);</div>
2771
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">if</span> (lhsIter != lhs.<a class="code" href="classSVF_1_1AbstractState.html#a6a49c75fb6b35159dcf1763b4484d335">_varToAbsVal</a>.end())</div>
2772
+ <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div>
2773
+ <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">if</span> (rhsItem.second.isAddr())</div>
2774
+ <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; {</div>
2775
+ <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;addr: rhsItem.second.getAddrs())</div>
2776
+ <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; {</div>
2777
+ <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">if</span> (!lhsIter-&gt;second.getAddrs().contains(addr))</div>
2778
+ <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; {</div>
2779
+ <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> i = 0; i &lt; (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>) <a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>(); i++)</div>
2780
+ <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; {</div>
2781
+ <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; lhsIter-&gt;second.join_with(<a class="code" href="classSVF_1_1SVFIR2AbsState.html#a10a83572bf5dee369b54cda74f402073">getGepObjAddress</a>(<a class="code" href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">getInternalID</a>(addr), i));</div>
2782
+ <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div>
2783
+ <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div>
2784
+ <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div>
2785
+ <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; }</div>
2786
+ <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div>
2787
+ <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; }</div>
2788
+ <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;rhsItem: rhs.<a class="code" href="classSVF_1_1AbstractState.html#aade30bb08f86b3f74e7aa9cdc60c92a3">_locToAbsVal</a>)</div>
2789
+ <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; {</div>
2790
+ <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keyword">auto</span> lhsIter = lhs.<a class="code" href="classSVF_1_1AbstractState.html#aade30bb08f86b3f74e7aa9cdc60c92a3">_locToAbsVal</a>.find(rhsItem.first);</div>
2791
+ <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">if</span> (lhsIter != lhs.<a class="code" href="classSVF_1_1AbstractState.html#aade30bb08f86b3f74e7aa9cdc60c92a3">_locToAbsVal</a>.end())</div>
2792
+ <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div>
2793
+ <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span> (rhsItem.second.isAddr())</div>
2794
+ <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div>
2795
+ <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; addr : rhsItem.second.getAddrs())</div>
2796
+ <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div>
2797
+ <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">if</span> (!lhsIter-&gt;second.getAddrs().contains(addr))</div>
2798
+ <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; {</div>
2799
+ <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> i = 0; i &lt; (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)<a class="code" href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">Options::MaxFieldLimit</a>();</div>
2800
+ <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; i++)</div>
2801
+ <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; {</div>
2802
+ <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; lhsIter-&gt;second.join_with(</div>
2803
+ <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <a class="code" href="classSVF_1_1SVFIR2AbsState.html#a10a83572bf5dee369b54cda74f402073">getGepObjAddress</a>(<a class="code" href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">getInternalID</a>(addr), i));</div>
2804
+ <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div>
2805
+ <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; }</div>
2806
+ <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; }</div>
2807
+ <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div>
2808
+ <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }</div>
2809
+ <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; }</div>
2810
+ <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;}</div>
2811
+ </div><!-- fragment -->
2812
+ </div>
2813
+ </div>
2814
+ <h2 class="groupheader">Member Data Documentation</h2>
2815
+ <a id="a55246cb0b2493c9edc05029cc6a114dd"></a>
2816
+ <h2 class="memtitle"><span class="permalink"><a href="#a55246cb0b2493c9edc05029cc6a114dd">&#9670;&nbsp;</a></span>_br_cond</h2>
2817
+
2818
+ <div class="memitem">
2819
+ <div class="memproto">
2820
+ <table class="mlabels">
2821
+ <tr>
2822
+ <td class="mlabels-left">
2823
+ <table class="memname">
2824
+ <tr>
2825
+ <td class="memname"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt;<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>, <a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a>*&gt; SVF::SVFIR2AbsState::_br_cond</td>
2826
+ </tr>
2827
+ </table>
2828
+ </td>
2829
+ <td class="mlabels-right">
2830
+ <span class="mlabels"><span class="mlabel">private</span></span> </td>
2831
+ </tr>
2832
+ </table>
2833
+ </div><div class="memdoc">
2834
+
2835
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8h_source.html#l00214">214</a> of file <a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>.</p>
2836
+
2837
+ </div>
2838
+ </div>
2839
+ <a id="aefdc1e49328ae897c1cf28aeb107f45b"></a>
2840
+ <h2 class="memtitle"><span class="permalink"><a href="#aefdc1e49328ae897c1cf28aeb107f45b">&#9670;&nbsp;</a></span>_es</h2>
2841
+
2842
+ <div class="memitem">
2843
+ <div class="memproto">
2844
+ <table class="mlabels">
2845
+ <tr>
2846
+ <td class="mlabels-left">
2847
+ <table class="memname">
2848
+ <tr>
2849
+ <td class="memname"><a class="el" href="classSVF_1_1SparseAbstractState.html">SparseAbstractState</a> SVF::SVFIR2AbsState::_es</td>
2850
+ </tr>
2851
+ </table>
2852
+ </td>
2853
+ <td class="mlabels-right">
2854
+ <span class="mlabels"><span class="mlabel">private</span></span> </td>
2855
+ </tr>
2856
+ </table>
2857
+ </div><div class="memdoc">
2858
+
2859
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8h_source.html#l00211">211</a> of file <a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>.</p>
2860
+
2861
+ </div>
2862
+ </div>
2863
+ <a id="a592f4fe473d0159a3fbdac3bc35b424e"></a>
2864
+ <h2 class="memtitle"><span class="permalink"><a href="#a592f4fe473d0159a3fbdac3bc35b424e">&#9670;&nbsp;</a></span>_relEs</h2>
2865
+
2866
+ <div class="memitem">
2867
+ <div class="memproto">
2868
+ <table class="mlabels">
2869
+ <tr>
2870
+ <td class="mlabels-left">
2871
+ <table class="memname">
2872
+ <tr>
2873
+ <td class="memname"><a class="el" href="classSVF_1_1RelExeState.html">RelExeState</a> SVF::SVFIR2AbsState::_relEs</td>
2874
+ </tr>
2875
+ </table>
2876
+ </td>
2877
+ <td class="mlabels-right">
2878
+ <span class="mlabels"><span class="mlabel">private</span></span> </td>
2879
+ </tr>
2880
+ </table>
2881
+ </div><div class="memdoc">
2882
+
2883
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8h_source.html#l00212">212</a> of file <a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>.</p>
2884
+
2885
+ </div>
2886
+ </div>
2887
+ <a id="a80a0f0a20e993c6fcffc89f9de409f44"></a>
2888
+ <h2 class="memtitle"><span class="permalink"><a href="#a80a0f0a20e993c6fcffc89f9de409f44">&#9670;&nbsp;</a></span>_svfir</h2>
2889
+
2890
+ <div class="memitem">
2891
+ <div class="memproto">
2892
+ <table class="mlabels">
2893
+ <tr>
2894
+ <td class="mlabels-left">
2895
+ <table class="memname">
2896
+ <tr>
2897
+ <td class="memname"><a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a>* SVF::SVFIR2AbsState::_svfir</td>
2898
+ </tr>
2899
+ </table>
2900
+ </td>
2901
+ <td class="mlabels-right">
2902
+ <span class="mlabels"><span class="mlabel">private</span></span> </td>
2903
+ </tr>
2904
+ </table>
2905
+ </div><div class="memdoc">
2906
+
2907
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8h_source.html#l00210">210</a> of file <a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>.</p>
2908
+
2909
+ </div>
2910
+ </div>
2911
+ <a id="a46a2f2eedd729f4764f630d72391ec97"></a>
2912
+ <h2 class="memtitle"><span class="permalink"><a href="#a46a2f2eedd729f4764f630d72391ec97">&#9670;&nbsp;</a></span>globalNulladdrs</h2>
2913
+
2914
+ <div class="memitem">
2915
+ <div class="memproto">
2916
+ <table class="mlabels">
2917
+ <tr>
2918
+ <td class="mlabels-left">
2919
+ <table class="memname">
2920
+ <tr>
2921
+ <td class="memname"><a class="el" href="structSVF_1_1AbstractValue.html">AbstractValue</a> SVF::SVFIR2AbsState::globalNulladdrs = <a class="el" href="classSVF_1_1AddressValue.html">AddressValue</a>()</td>
2922
+ </tr>
2923
+ </table>
2924
+ </td>
2925
+ <td class="mlabels-right">
2926
+ <span class="mlabels"><span class="mlabel">static</span></span> </td>
2927
+ </tr>
2928
+ </table>
2929
+ </div><div class="memdoc">
2930
+
2931
+ <p class="definition">Definition at line <a class="el" href="SVFIR2AbsState_8h_source.html#l00045">45</a> of file <a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a>.</p>
2932
+
2933
+ </div>
2934
+ </div>
2935
+ <hr/>The documentation for this class was generated from the following files:<ul>
2936
+ <li>/home/runner/work/SVF/SVF/svf/include/AE/Svfexe/<a class="el" href="SVFIR2AbsState_8h_source.html">SVFIR2AbsState.h</a></li>
2937
+ <li>/home/runner/work/SVF/SVF/svf/lib/AE/Core/<a class="el" href="SVFIR2Relation_8cpp_source.html">SVFIR2Relation.cpp</a></li>
2938
+ <li>/home/runner/work/SVF/SVF/svf/lib/AE/Svfexe/<a class="el" href="SVFIR2AbsState_8cpp_source.html">SVFIR2AbsState.cpp</a></li>
2939
+ </ul>
2940
+ </div><!-- contents -->
2941
+ <div class="ttc" id="aclassSVF_1_1AccessPath_html_a1f279344b4061838d7b3498631bc907c"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a1f279344b4061838d7b3498631bc907c">SVF::AccessPath::getStructFieldOffset</a></div><div class="ttdeci">u32_t getStructFieldOffset(const SVFVar *idxOperandVar, const SVFStructType *idxOperandType) const</div><div class="ttdoc">Return byte offset from the beginning of the structure to the field where it is located for struct ty...</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00164">AccessPath.cpp:164</a></div></div>
2942
+ <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="GeneralType_8h_source.html#l00060">GeneralType.h:60</a></div></div>
2943
+ <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#l00968">SVFStatements.h:968</a></div></div>
2944
+ <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#l00213">SVFType.h:213</a></div></div>
2945
+ <div class="ttc" id="aclassSVF_1_1SVFType_html_a95b8031f1e15d49c7d68628be1d05aae"><div class="ttname"><a href="classSVF_1_1SVFType.html#a95b8031f1e15d49c7d68628be1d05aae">SVF::SVFType::getByteSize</a></div><div class="ttdeci">u32_t getByteSize() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00244">SVFType.h:244</a></div></div>
2946
+ <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#l01049">SVFStatements.h:1049</a></div></div>
2947
+ <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#l00574">SVFStatements.h:574</a></div></div>
2948
+ <div class="ttc" id="astructSVF_1_1AbstractValue_html_a078ac137e60c5a2585a649f7ec40a8a8"><div class="ttname"><a href="structSVF_1_1AbstractValue.html#a078ac137e60c5a2585a649f7ec40a8a8">SVF::AbstractValue::meet_with</a></div><div class="ttdeci">void meet_with(const AbstractValue &amp;other)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractValue_8h_source.html#l00504">AbstractValue.h:504</a></div></div>
2949
+ <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#l01043">SVFStatements.h:1043</a></div></div>
2950
+ <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#l01047">SVFStatements.h:1047</a></div></div>
2951
+ <div class="ttc" id="aclassSVF_1_1RelExeState_html_a3a2d5de4c61fab8b277308a186795a13"><div class="ttname"><a href="classSVF_1_1RelExeState.html#a3a2d5de4c61fab8b277308a186795a13">SVF::RelExeState::store</a></div><div class="ttdeci">void store(const Z3Expr &amp;loc, const Z3Expr &amp;value)</div><div class="ttdoc">Store value to location.</div><div class="ttdef"><b>Definition:</b> <a href="RelExeState_8cpp_source.html#l00170">RelExeState.cpp:170</a></div></div>
2952
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a62baa9403069a9b1e010eaeb2f6b9b34"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a62baa9403069a9b1e010eaeb2f6b9b34">SVF::SVFIR2AbsState::inVarToAddrsTable</a></div><div class="ttdeci">bool inVarToAddrsTable(u32_t id) const</div><div class="ttdoc">whether the variable is in varToAddrs table</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8h_source.html#l00129">SVFIR2AbsState.h:129</a></div></div>
2953
+ <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338aca5e3cf3105b8f13da66719856579956fa"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca5e3cf3105b8f13da66719856579956fa">SVF::CmpStmt::FCMP_OLT</a></div><div class="ttdeci">@ FCMP_OLT</div><div class="ttdoc">0 1 0 0 True if ordered and less than</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00958">SVFStatements.h:958</a></div></div>
2954
+ <div class="ttc" id="aCommandLine_8h_html_a2429346d37bd4c40889bd7c6d319d9da"><div class="ttname"><a href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="CommandLine_8h_source.html#l00018">CommandLine.h:18</a></div></div>
2955
+ <div class="ttc" id="astructSVF_1_1AbstractValue_html_ab1fe6a57f784971b3bc603dbfda746e8"><div class="ttname"><a href="structSVF_1_1AbstractValue.html#ab1fe6a57f784971b3bc603dbfda746e8">SVF::AbstractValue::getAddrs</a></div><div class="ttdeci">AddressValue &amp; getAddrs()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractValue_8h_source.html#l00171">AbstractValue.h:171</a></div></div>
2956
+ <div class="ttc" id="aclassSVF_1_1SparseAbstractState_html_a1683fd7da77812137b839b8c417200fe"><div class="ttname"><a href="classSVF_1_1SparseAbstractState.html#a1683fd7da77812137b839b8c417200fe">SVF::SparseAbstractState::globalES</a></div><div class="ttdeci">static SparseAbstractState globalES</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00445">AbstractState.h:445</a></div></div>
2957
+ <div class="ttc" id="aclassSVF_1_1AccessPath_html_a7b4921dea37246f0f08dffa7db384a61"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a7b4921dea37246f0f08dffa7db384a61">SVF::AccessPath::gepSrcPointeeType</a></div><div class="ttdeci">const SVFType * gepSrcPointeeType() const</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00112">AccessPath.h:112</a></div></div>
2958
+ <div class="ttc" id="astructSVF_1_1AbstractValue_html_a6c979397d4efb5b37e3b2bf9feba5648"><div class="ttname"><a href="structSVF_1_1AbstractValue.html#a6c979397d4efb5b37e3b2bf9feba5648">SVF::AbstractValue::lb</a></div><div class="ttdeci">const NumericLiteral &amp; lb() const</div><div class="ttdef"><b>Definition:</b> <a href="AbstractValue_8h_source.html#l00198">AbstractValue.h:198</a></div></div>
2959
+ <div class="ttc" id="anamespaceSVF_html_a7c3a917e8b1d3253982e0a1a37b74d93"><div class="ttname"><a href="namespaceSVF.html#a7c3a917e8b1d3253982e0a1a37b74d93">SVF::u16_t</a></div><div class="ttdeci">unsigned short u16_t</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00052">GeneralType.h:52</a></div></div>
2960
+ <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#l00927">SVFStatements.h:927</a></div></div>
2961
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_af38b6e392cfd91b3516f2bc9feacce34"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#af38b6e392cfd91b3516f2bc9feacce34">SVF::SVFIR2AbsState::getSIntToFPValue</a></div><div class="ttdeci">AbstractValue getSIntToFPValue(const SVFVar *var)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8cpp_source.html#l00197">SVFIR2AbsState.cpp:197</a></div></div>
2962
+ <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>
2963
+ <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#l00107">AddressValue.h:107</a></div></div>
2964
+ <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#l00954">SVFStatements.h:954</a></div></div>
2965
+ <div class="ttc" id="aclassSVF_1_1IRGraph_html_a43514023a4f4d0c32f536f51443b0efc"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const SVFValue *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00137">IRGraph.h:137</a></div></div>
2966
+ <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338aca9dd165c6da06811ffc8c2e53b30ab32d"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca9dd165c6da06811ffc8c2e53b30ab32d">SVF::CmpStmt::FCMP_OLE</a></div><div class="ttdeci">@ FCMP_OLE</div><div class="ttdoc">0 1 0 1 True if ordered and less than or equal</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00959">SVFStatements.h:959</a></div></div>
2967
+ <div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1ae746463dbec33f7d026b1a43e9ea4b87"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1ae746463dbec33f7d026b1a43e9ea4b87">SVF::CopyStmt::PTRTOINT</a></div><div class="ttdeci">@ PTRTOINT</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00387">SVFStatements.h:387</a></div></div>
2968
+ <div class="ttc" id="aclassSVF_1_1ObjVar_html"><div class="ttname"><a href="classSVF_1_1ObjVar.html">SVF::ObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00315">SVFVariables.h:315</a></div></div>
2969
+ <div class="ttc" id="aclassSVF_1_1IntervalValue_html_a0df07a2659cbf3a918de5b0d7c407264"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#a0df07a2659cbf3a918de5b0d7c407264">SVF::IntervalValue::lb</a></div><div class="ttdeci">const NumericLiteral &amp; lb() const</div><div class="ttdoc">Return the lower bound.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00206">IntervalValue.h:206</a></div></div>
2970
+ <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338aca7833b647068883840c9bb438103e736d"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca7833b647068883840c9bb438103e736d">SVF::CmpStmt::ICMP_ULT</a></div><div class="ttdeci">@ ICMP_ULT</div><div class="ttdoc">unsigned less than</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00977">SVFStatements.h:977</a></div></div>
2971
+ <div class="ttc" id="aclassSVF_1_1SVFType_html_a333e01a9c431c8f53bd2fc597bd5c40cae2025d3e9d7943027c74ae6bba3fff22"><div class="ttname"><a href="classSVF_1_1SVFType.html#a333e01a9c431c8f53bd2fc597bd5c40cae2025d3e9d7943027c74ae6bba3fff22">SVF::SVFType::SVFIntegerTy</a></div><div class="ttdeci">@ SVFIntegerTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00169">SVFType.h:169</a></div></div>
2972
+ <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_a2f647224242dd87099104e0fdc994de6ac89b793572db14a3c018122cf9fc79d6"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ac89b793572db14a3c018122cf9fc79d6">SVF::BinaryOPStmt::Xor</a></div><div class="ttdeci">@ Xor</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01055">SVFStatements.h:1055</a></div></div>
2973
+ <div class="ttc" id="aclassSVF_1_1SparseAbstractState_html_a9e428ac8cc2b3b59b7dc4b164eb8b1c0"><div class="ttname"><a href="classSVF_1_1SparseAbstractState.html#a9e428ac8cc2b3b59b7dc4b164eb8b1c0">SVF::SparseAbstractState::load</a></div><div class="ttdeci">AbstractValue &amp; load(u32_t addr)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00694">AbstractState.h:694</a></div></div>
2974
+ <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#l01040">SVFStatements.h:1040</a></div></div>
2975
+ <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#l00976">SVFStatements.h:976</a></div></div>
2976
+ <div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a77433e71effbacec14da8f658523fb3e"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a77433e71effbacec14da8f658523fb3e">SVF::CopyStmt::BITCAST</a></div><div class="ttdeci">@ BITCAST</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00379">SVFStatements.h:379</a></div></div>
2977
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a46a2f2eedd729f4764f630d72391ec97"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a46a2f2eedd729f4764f630d72391ec97">SVF::SVFIR2AbsState::globalNulladdrs</a></div><div class="ttdeci">static AbstractValue globalNulladdrs</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8h_source.html#l00045">SVFIR2AbsState.h:45</a></div></div>
2978
+ <div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1ab55ad5d331f6e4a69f8e2f0d95e5d3a1"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1ab55ad5d331f6e4a69f8e2f0d95e5d3a1">SVF::CopyStmt::SEXT</a></div><div class="ttdeci">@ SEXT</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00378">SVFStatements.h:378</a></div></div>
2979
+ <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#l01054">SVFStatements.h:1054</a></div></div>
2980
+ <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#l01050">SVFStatements.h:1050</a></div></div>
2981
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a1e270574a1d6f0894868cfb098ffbb8b"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a1e270574a1d6f0894868cfb098ffbb8b">SVF::SVFIR2AbsState::getZExtValue</a></div><div class="ttdeci">AbstractValue getZExtValue(const SVFVar *var)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8cpp_source.html#l00111">SVFIR2AbsState.cpp:111</a></div></div>
2982
+ <div class="ttc" id="aclassSVF_1_1Z3Expr_html_acfdff582a0188678c10939165a40df30"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#acfdff582a0188678c10939165a40df30">SVF::Z3Expr::getContext</a></div><div class="ttdeci">static z3::context &amp; getContext()</div><div class="ttdoc">Get z3 context, singleton design here to make sure we only have one context.</div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8cpp_source.html#l00066">Z3Expr.cpp:66</a></div></div>
2983
+ <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>
2984
+ <div class="ttc" id="aclassSVF_1_1RelExeState_html_a8045abc5e96d0c7b373587c796180d3e"><div class="ttname"><a href="classSVF_1_1RelExeState.html#a8045abc5e96d0c7b373587c796180d3e">SVF::RelExeState::toZ3Expr</a></div><div class="ttdeci">virtual Z3Expr toZ3Expr(u32_t varId) const</div><div class="ttdoc">Return Z3 expression lazily based on SVFVar ID.</div><div class="ttdef"><b>Definition:</b> <a href="RelExeState_8h_source.html#l00150">RelExeState.h:150</a></div></div>
2985
+ <div class="ttc" id="anamespaceSVF_html_a366625858f450a1ea5f985a3c83e0f14"><div class="ttname"><a href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">SVF::u64_t</a></div><div class="ttdeci">unsigned long long u64_t</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00048">GeneralType.h:48</a></div></div>
2986
+ <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#l00955">SVFStatements.h:955</a></div></div>
2987
+ <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#l01044">SVFStatements.h:1044</a></div></div>
2988
+ <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#l01046">SVFStatements.h:1046</a></div></div>
2989
+ <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#l00956">SVFStatements.h:956</a></div></div>
2990
+ <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338aca229d105d0841dc895811b29af62a91ee"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca229d105d0841dc895811b29af62a91ee">SVF::CmpStmt::ICMP_SGT</a></div><div class="ttdeci">@ ICMP_SGT</div><div class="ttdoc">signed greater than</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00979">SVFStatements.h:979</a></div></div>
2991
+ <div class="ttc" id="aclassSVF_1_1MemObj_html_a1a4ff4aaaf2573240a318e1b79328cd0"><div class="ttname"><a href="classSVF_1_1MemObj.html#a1a4ff4aaaf2573240a318e1b79328cd0">SVF::MemObj::isConstDataOrConstGlobal</a></div><div class="ttdeci">bool isConstDataOrConstGlobal() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00501">SymbolTableInfo.cpp:501</a></div></div>
2992
+ <div class="ttc" id="aclassSVF_1_1AbstractState_html_a6a49c75fb6b35159dcf1763b4484d335"><div class="ttname"><a href="classSVF_1_1AbstractState.html#a6a49c75fb6b35159dcf1763b4484d335">SVF::AbstractState::_varToAbsVal</a></div><div class="ttdeci">VarToAbsValMap _varToAbsVal</div><div class="ttdoc">Map a variable (symbol) to its abstract value.</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00167">AbstractState.h:167</a></div></div>
2993
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a8eb06c3e65594dbcb602ec472258f09c"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a8eb06c3e65594dbcb602ec472258f09c">SVF::SVFIR2AbsState::inLocToAddrsTable</a></div><div class="ttdeci">bool inLocToAddrsTable(u32_t id) const</div><div class="ttdoc">whether the memory address stores memory addresses</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8h_source.html#l00142">SVFIR2AbsState.h:142</a></div></div>
2994
+ <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_a2f647224242dd87099104e0fdc994de6ac988853383e1588cf568687848e73576"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ac988853383e1588cf568687848e73576">SVF::BinaryOPStmt::AShr</a></div><div class="ttdeci">@ AShr</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01052">SVFStatements.h:1052</a></div></div>
2995
+ <div class="ttc" id="astructSVF_1_1AbstractValue_html_aecd8d41379dd6496772537ad51d1cb02"><div class="ttname"><a href="structSVF_1_1AbstractValue.html#aecd8d41379dd6496772537ad51d1cb02">SVF::AbstractValue::ub</a></div><div class="ttdeci">const NumericLiteral &amp; ub() const</div><div class="ttdef"><b>Definition:</b> <a href="AbstractValue_8h_source.html#l00204">AbstractValue.h:204</a></div></div>
2996
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_af48bab5352f5d1927aa467e1eb59c09f"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#af48bab5352f5d1927aa467e1eb59c09f">SVF::SVFIR2AbsState::getFPToSIntValue</a></div><div class="ttdeci">AbstractValue getFPToSIntValue(const SVFVar *var)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8cpp_source.html#l00161">SVFIR2AbsState.cpp:161</a></div></div>
2997
+ <div class="ttc" id="aclassSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00180">GenericGraph.h:180</a></div></div>
2998
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a4e032a5e0898f0e349927d5a86c8477c"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a4e032a5e0898f0e349927d5a86c8477c">SVF::SVFIR2AbsState::getRangeLimitFromType</a></div><div class="ttdeci">AbstractValue 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="SVFIR2AbsState_8cpp_source.html#l00049">SVFIR2AbsState.cpp:49</a></div></div>
2999
+ <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#l01051">SVFStatements.h:1051</a></div></div>
3000
+ <div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1ab364378cef751d1bca631f3bfacd0658"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1ab364378cef751d1bca631f3bfacd0658">SVF::CopyStmt::FPTRUNC</a></div><div class="ttdeci">@ FPTRUNC</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00381">SVFStatements.h:381</a></div></div>
3001
+ <div class="ttc" id="aclassSVF_1_1IntervalValue_html_a523826aede7ad22736beed0c8223b6b0"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#a523826aede7ad22736beed0c8223b6b0">SVF::IntervalValue::is_numeral</a></div><div class="ttdeci">bool is_numeral() const</div><div class="ttdoc">Return true if the IntervalValue is a number [num, num].</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00286">IntervalValue.h:286</a></div></div>
3002
+ <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>
3003
+ <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>
3004
+ <div class="ttc" id="aclassSVF_1_1Z3Expr_html"><div class="ttname"><a href="classSVF_1_1Z3Expr.html">SVF::Z3Expr</a></div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00038">Z3Expr.h:38</a></div></div>
3005
+ <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#l00180">SymbolTableInfo.cpp:180</a></div></div>
3006
+ <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>
3007
+ <div class="ttc" id="anamespaceSVF_html_a6ce4cf67f8622443c888737d7366a3e9"><div class="ttname"><a href="namespaceSVF.html#a6ce4cf67f8622443c888737d7366a3e9">SVF::s16_t</a></div><div class="ttdeci">signed short s16_t</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00053">GeneralType.h:53</a></div></div>
3008
+ <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338aca8149cba2e9e265892f02bbd4a35fe6fb"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca8149cba2e9e265892f02bbd4a35fe6fb">SVF::CmpStmt::FCMP_ULE</a></div><div class="ttdeci">@ FCMP_ULE</div><div class="ttdoc">1 1 0 1 True if unordered, less than, or equal</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00967">SVFStatements.h:967</a></div></div>
3009
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a26afaf14db3b2a56e2d325630e5ba841"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a26afaf14db3b2a56e2d325630e5ba841">SVF::SVFIR2AbsState::inVarToValTable</a></div><div class="ttdeci">bool inVarToValTable(u32_t id) const</div><div class="ttdoc">whether the variable is in varToVal table</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8h_source.html#l00123">SVFIR2AbsState.h:123</a></div></div>
3010
+ <div class="ttc" id="aclassSVF_1_1SparseAbstractState_html_a6749b39cd32b138578f7ff12669d36c3"><div class="ttname"><a href="classSVF_1_1SparseAbstractState.html#a6749b39cd32b138578f7ff12669d36c3">SVF::SparseAbstractState::getAddrs</a></div><div class="ttdeci">AbstractValue &amp; getAddrs(u32_t id)</div><div class="ttdoc">get memory addresses of variable</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00485">AbstractState.h:485</a></div></div>
3011
+ <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>
3012
+ <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#l00560">SVFStatements.h:560</a></div></div>
3013
+ <div class="ttc" id="aclassSVF_1_1AbstractState_html_a1f935ea8ab16b04699284bf92bbbb23c"><div class="ttname"><a href="classSVF_1_1AbstractState.html#a1f935ea8ab16b04699284bf92bbbb23c">SVF::AbstractState::store</a></div><div class="ttdeci">void store(u32_t addr, const AbstractValue &amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00306">AbstractState.h:306</a></div></div>
3014
+ <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#l00981">SVFStatements.h:981</a></div></div>
3015
+ <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#l00377">SVFType.h:377</a></div></div>
3016
+ <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>
3017
+ <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>
3018
+ <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>
3019
+ <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#l00156">SVFType.h:156</a></div></div>
3020
+ <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338acaa6b852204a4d0758ebd632d8a88b966d"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaa6b852204a4d0758ebd632d8a88b966d">SVF::CmpStmt::FCMP_ULT</a></div><div class="ttdeci">@ FCMP_ULT</div><div class="ttdoc">1 1 0 0 True if unordered or less than</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00966">SVFStatements.h:966</a></div></div>
3021
+ <div class="ttc" id="aclassSVF_1_1GepStmt_html_a6c74f234a6b40bc5292bb14874c2e600"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">SVF::GepStmt::getAccessPath</a></div><div class="ttdeci">const AccessPath &amp; getAccessPath() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00556">SVFStatements.h:556</a></div></div>
3022
+ <div class="ttc" id="astructSVF_1_1AbstractValue_html_a61516b8cd3550afd29f80fbe8c9146ff"><div class="ttname"><a href="structSVF_1_1AbstractValue.html#a61516b8cd3550afd29f80fbe8c9146ff">SVF::AbstractValue::isUnknown</a></div><div class="ttdeci">bool isUnknown() const</div><div class="ttdef"><b>Definition:</b> <a href="AbstractValue_8h_source.html#l00083">AbstractValue.h:83</a></div></div>
3023
+ <div class="ttc" id="aclassSVF_1_1SVFStructType_html"><div class="ttname"><a href="classSVF_1_1SVFStructType.html">SVF::SVFStructType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00344">SVFType.h:344</a></div></div>
3024
+ <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_a2f647224242dd87099104e0fdc994de6a97c70ced12e0f1c5e3c3708b13727e8e"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a97c70ced12e0f1c5e3c3708b13727e8e">SVF::BinaryOPStmt::FAdd</a></div><div class="ttdeci">@ FAdd</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01039">SVFStatements.h:1039</a></div></div>
3025
+ <div class="ttc" id="aclassSVF_1_1IRGraph_html_a3b417ee79560fd00f4cf80906044c198"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a3b417ee79560fd00f4cf80906044c198">SVF::IRGraph::getBlkPtr</a></div><div class="ttdeci">NodeID getBlkPtr() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00169">IRGraph.h:169</a></div></div>
3026
+ <div class="ttc" id="aclassSVF_1_1SelectStmt_html_ad4c3e9529176478bb726279a76050e8c"><div class="ttname"><a href="classSVF_1_1SelectStmt.html#ad4c3e9529176478bb726279a76050e8c">SVF::SelectStmt::getCondition</a></div><div class="ttdeci">const SVFVar * getCondition() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00919">SVFStatements.h:919</a></div></div>
3027
+ <div class="ttc" id="astructSVF_1_1AbstractValue_html_ae8a8fb4dc6ff1d7faddea6a9b1e65f1e"><div class="ttname"><a href="structSVF_1_1AbstractValue.html#ae8a8fb4dc6ff1d7faddea6a9b1e65f1e">SVF::AbstractValue::equals</a></div><div class="ttdeci">bool equals(const AbstractValue &amp;rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="AbstractValue_8h_source.html#l00465">AbstractValue.h:465</a></div></div>
3028
+ <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338aca56a20e408f9639234e4a11036764a38f"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca56a20e408f9639234e4a11036764a38f">SVF::CmpStmt::ICMP_ULE</a></div><div class="ttdeci">@ ICMP_ULE</div><div class="ttdoc">unsigned less or equal</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00978">SVFStatements.h:978</a></div></div>
3029
+ <div class="ttc" id="aclassSVF_1_1SVFConstantInt_html"><div class="ttname"><a href="classSVF_1_1SVFConstantInt.html">SVF::SVFConstantInt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00966">SVFValue.h:966</a></div></div>
3030
+ <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>
3031
+ <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#l01042">SVFStatements.h:1042</a></div></div>
3032
+ <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>
3033
+ <div class="ttc" id="aclassSVF_1_1AbstractState_html_ad3eefae77eb1fc4bbcfe70b0f2f51dd4"><div class="ttname"><a href="classSVF_1_1AbstractState.html#ad3eefae77eb1fc4bbcfe70b0f2f51dd4">SVF::AbstractState::isVirtualMemAddress</a></div><div class="ttdeci">static bool isVirtualMemAddress(u32_t val)</div><div class="ttdoc">Check bit value of val start with 0x7F000000, filter by 0xFF000000.</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00087">AbstractState.h:87</a></div></div>
3034
+ <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#l00213">IntervalValue.h:213</a></div></div>
3035
+ <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#l00963">SVFStatements.h:963</a></div></div>
3036
+ <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338acafa5a0ab60aff74a8d653c3f9fac04936"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acafa5a0ab60aff74a8d653c3f9fac04936">SVF::CmpStmt::ICMP_EQ</a></div><div class="ttdeci">@ ICMP_EQ</div><div class="ttdoc">equal</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00973">SVFStatements.h:973</a></div></div>
3037
+ <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#l00960">SVFStatements.h:960</a></div></div>
3038
+ <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#l00965">SVFStatements.h:965</a></div></div>
3039
+ <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>
3040
+ <div class="ttc" id="aclassSVF_1_1AbstractState_html_aa594b7f3d1590073a88bcc73918dde39"><div class="ttname"><a href="classSVF_1_1AbstractState.html#aa594b7f3d1590073a88bcc73918dde39">SVF::AbstractState::getVirtualMemAddress</a></div><div class="ttdeci">static u32_t getVirtualMemAddress(u32_t idx)</div><div class="ttdoc">The physical address starts with 0x7f...... + idx.</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00081">AbstractState.h:81</a></div></div>
3041
+ <div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1ab2b2f7dffed3d446a147fc7a27e66dd8"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1ab2b2f7dffed3d446a147fc7a27e66dd8">SVF::CopyStmt::TRUNC</a></div><div class="ttdeci">@ TRUNC</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00380">SVFStatements.h:380</a></div></div>
3042
+ <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>
3043
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_ae1490bd3f93a4fcbb2390a3f30539b8a"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#ae1490bd3f93a4fcbb2390a3f30539b8a">SVF::SVFIR2AbsState::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="SVFIR2AbsState_8cpp_source.html#l00577">SVFIR2AbsState.cpp:577</a></div></div>
3044
+ <div class="ttc" id="aclassSVF_1_1IntervalValue_html_a970b85f66d80cfc8ca56a8846c921afa"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#a970b85f66d80cfc8ca56a8846c921afa">SVF::IntervalValue::is_zero</a></div><div class="ttdeci">bool is_zero() const</div><div class="ttdoc">Return true if the IntervalValue is [0, 0].</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00239">IntervalValue.h:239</a></div></div>
3045
+ <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#l00164">AddressValue.h:164</a></div></div>
3046
+ <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#l00080">SymbolTableInfo.cpp:80</a></div></div>
3047
+ <div class="ttc" id="aclassSVF_1_1PhiStmt_html_a0b97394bc1946c0185d2c11fbc2181f4"><div class="ttname"><a href="classSVF_1_1PhiStmt.html#a0b97394bc1946c0185d2c11fbc2181f4">SVF::PhiStmt::getOpICFGNode</a></div><div class="ttdeci">const ICFGNode * getOpICFGNode(u32_t op_idx) const</div><div class="ttdoc">Return the corresponding ICFGNode of this operand.</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00866">SVFStatements.h:866</a></div></div>
3048
+ <div class="ttc" id="aclassSVF_1_1RelExeState_html_aa550a580be3278d19f759b3a644baea5"><div class="ttname"><a href="classSVF_1_1RelExeState.html#aa550a580be3278d19f759b3a644baea5">SVF::RelExeState::load</a></div><div class="ttdeci">Z3Expr &amp; load(const Z3Expr &amp;loc)</div><div class="ttdoc">Load value at location.</div><div class="ttdef"><b>Definition:</b> <a href="RelExeState_8cpp_source.html#l00183">RelExeState.cpp:183</a></div></div>
3049
+ <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>
3050
+ <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>
3051
+ <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#l00565">SVFStatements.h:565</a></div></div>
3052
+ <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="GeneralType_8h_source.html#l00047">GeneralType.h:47</a></div></div>
3053
+ <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#l00102">AddressValue.h:102</a></div></div>
3054
+ <div class="ttc" id="aclassSVF_1_1MemObj_html_a2f70e9c830b18f25c56b530722f106c4"><div class="ttname"><a href="classSVF_1_1MemObj.html#a2f70e9c830b18f25c56b530722f106c4">SVF::MemObj::getValue</a></div><div class="ttdeci">const SVFValue * getValue() const</div><div class="ttdoc">Get the reference value to this object.</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00406">SymbolTableInfo.h:406</a></div></div>
3055
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a5ba833f2f98f5b1b1a8a7ff7ecdb72b9"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a5ba833f2f98f5b1b1a8a7ff7ecdb72b9">SVF::SVFIR2AbsState::getFPTruncValue</a></div><div class="ttdeci">AbstractValue getFPTruncValue(const SVFVar *var, const SVFType *dstType)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8cpp_source.html#l00268">SVFIR2AbsState.cpp:268</a></div></div>
3056
+ <div class="ttc" id="aclassSVF_1_1Options_html_a429c3000ee2ac45119b8c241aa06762c"><div class="ttname"><a href="classSVF_1_1Options.html#a429c3000ee2ac45119b8c241aa06762c">SVF::Options::ModelArrays</a></div><div class="ttdeci">static const Option&lt; bool &gt; ModelArrays</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00207">Options.h:207</a></div></div>
3057
+ <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#l00112">AddressValue.h:112</a></div></div>
3058
+ <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#l01041">SVFStatements.h:1041</a></div></div>
3059
+ <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#l00580">SVFStatements.h:580</a></div></div>
3060
+ <div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a821cd6daeaee15b117b41a272f743ff1"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a821cd6daeaee15b117b41a272f743ff1">SVF::CopyStmt::UITOFP</a></div><div class="ttdeci">@ UITOFP</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00384">SVFStatements.h:384</a></div></div>
3061
+ <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#l00957">SVFStatements.h:957</a></div></div>
3062
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_aa3e62b9ef912def502b95992199f5d8c"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#aa3e62b9ef912def502b95992199f5d8c">SVF::SVFIR2AbsState::getAddrs</a></div><div class="ttdeci">AbstractValue &amp; getAddrs(u32_t id)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8h_source.html#l00113">SVFIR2AbsState.h:113</a></div></div>
3063
+ <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>
3064
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a592f4fe473d0159a3fbdac3bc35b424e"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a592f4fe473d0159a3fbdac3bc35b424e">SVF::SVFIR2AbsState::_relEs</a></div><div class="ttdeci">RelExeState _relEs</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8h_source.html#l00212">SVFIR2AbsState.h:212</a></div></div>
3065
+ <div class="ttc" id="aclassSVF_1_1AbstractState_html_a4e4525823fd31c718216c698ed6e0a06"><div class="ttname"><a href="classSVF_1_1AbstractState.html#a4e4525823fd31c718216c698ed6e0a06">SVF::AbstractState::getVarToVal</a></div><div class="ttdeci">const VarToAbsValMap &amp; getVarToVal() const</div><div class="ttdoc">get var2val map</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00238">AbstractState.h:238</a></div></div>
3066
+ <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#l00964">SVFStatements.h:964</a></div></div>
3067
+ <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_a2f647224242dd87099104e0fdc994de6ad2db0456c9943dd75aa091cb19040448"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ad2db0456c9943dd75aa091cb19040448">SVF::BinaryOPStmt::SRem</a></div><div class="ttdeci">@ SRem</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01048">SVFStatements.h:1048</a></div></div>
3068
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_aaecd2f39d5038009cb41b849fd8fe55f"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#aaecd2f39d5038009cb41b849fd8fe55f">SVF::SVFIR2AbsState::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="SVFIR2AbsState_8cpp_source.html#l00612">SVFIR2AbsState.cpp:612</a></div></div>
3069
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_aefdc1e49328ae897c1cf28aeb107f45b"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#aefdc1e49328ae897c1cf28aeb107f45b">SVF::SVFIR2AbsState::_es</a></div><div class="ttdeci">SparseAbstractState _es</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8h_source.html#l00211">SVFIR2AbsState.h:211</a></div></div>
3070
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_ae247497ab346e612f645d39041b2ce32"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#ae247497ab346e612f645d39041b2ce32">SVF::SVFIR2AbsState::getUIntToFPValue</a></div><div class="ttdeci">AbstractValue getUIntToFPValue(const SVFVar *var)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8cpp_source.html#l00208">SVFIR2AbsState.cpp:208</a></div></div>
3071
+ <div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a78bc561098a07651f94e72bffa895e16"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a78bc561098a07651f94e72bffa895e16">SVF::CopyStmt::SITOFP</a></div><div class="ttdeci">@ SITOFP</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00385">SVFStatements.h:385</a></div></div>
3072
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a38a62cdec2fac4ad2e64b86b4eb3b0bf"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a38a62cdec2fac4ad2e64b86b4eb3b0bf">SVF::SVFIR2AbsState::getTruncValue</a></div><div class="ttdeci">AbstractValue getTruncValue(const SVFVar *var, const SVFType *dstType)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8cpp_source.html#l00219">SVFIR2AbsState.cpp:219</a></div></div>
3073
+ <div class="ttc" id="aclassSVF_1_1SVFIntegerType_html"><div class="ttname"><a href="classSVF_1_1SVFIntegerType.html">SVF::SVFIntegerType</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00291">SVFType.h:291</a></div></div>
3074
+ <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338aca6eef834451ec753add639be49c51f03f"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca6eef834451ec753add639be49c51f03f">SVF::CmpStmt::ICMP_NE</a></div><div class="ttdeci">@ ICMP_NE</div><div class="ttdoc">not equal</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00974">SVFStatements.h:974</a></div></div>
3075
+ <div class="ttc" id="aclassSVF_1_1IntervalValue_html_a674f9bb98053f8658e246863d6561072"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#a674f9bb98053f8658e246863d6561072">SVF::IntervalValue::isBottom</a></div><div class="ttdeci">bool isBottom() const</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00060">IntervalValue.h:60</a></div></div>
3076
+ <div class="ttc" id="aclassSVF_1_1MemObj_html_a7f828731597450f1d43b61413ab0e7bb"><div class="ttname"><a href="classSVF_1_1MemObj.html#a7f828731597450f1d43b61413ab0e7bb">SVF::MemObj::isConstantArray</a></div><div class="ttdeci">bool isConstantArray() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00496">SymbolTableInfo.cpp:496</a></div></div>
3077
+ <div class="ttc" id="aclassSVF_1_1SparseAbstractState_html_a4f24d346d2ea4ed98f5516ba671d338b"><div class="ttname"><a href="classSVF_1_1SparseAbstractState.html#a4f24d346d2ea4ed98f5516ba671d338b">SVF::SparseAbstractState::inVarToValTable</a></div><div class="ttdeci">bool inVarToValTable(u32_t id) const</div><div class="ttdoc">whether the variable is in varToVal table</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00546">AbstractState.h:546</a></div></div>
3078
+ <div class="ttc" id="aclassSVF_1_1CmpStmt_html_aa6a21fb1cfbc263bb38651176c495632"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632">SVF::CmpStmt::getPredicate</a></div><div class="ttdeci">u32_t getPredicate() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01011">SVFStatements.h:1011</a></div></div>
3079
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a3bbf4cda2e3892c7359279337fab7d24"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a3bbf4cda2e3892c7359279337fab7d24">SVF::SVFIR2AbsState::isVirtualMemAddress</a></div><div class="ttdeci">static bool isVirtualMemAddress(u32_t val)</div><div class="ttdoc">Check bit value of val start with 0x7F000000, filter by 0xFF000000.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8h_source.html#l00184">SVFIR2AbsState.h:184</a></div></div>
3080
+ <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#l00043">AddressValue.h:43</a></div></div>
3081
+ <div class="ttc" id="aclassSVF_1_1SparseAbstractState_html_a931b900daaedf35965631b6492248940"><div class="ttname"><a href="classSVF_1_1SparseAbstractState.html#a931b900daaedf35965631b6492248940">SVF::SparseAbstractState::inLocToValTable</a></div><div class="ttdeci">bool inLocToValTable(u32_t id) const</div><div class="ttdoc">whether the memory address stores abstract value</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00608">AbstractState.h:608</a></div></div>
3082
+ <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#l00923">SVFStatements.h:923</a></div></div>
3083
+ <div class="ttc" id="aclassSVF_1_1NumericLiteral_html_a8e19113913c2aa236ab35d3bdd49541c"><div class="ttname"><a href="classSVF_1_1NumericLiteral.html#a8e19113913c2aa236ab35d3bdd49541c">SVF::NumericLiteral::getIntNumeral</a></div><div class="ttdeci">s64_t getIntNumeral() const</div><div class="ttdef"><b>Definition:</b> <a href="NumericLiteral_8h_source.html#l00148">NumericLiteral.h:148</a></div></div>
3084
+ <div class="ttc" id="aclassSVF_1_1SVFIR_html_ae18425df0631aefca7dd4b799f6f524a"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae18425df0631aefca7dd4b799f6f524a">SVF::SVFIR::getGepObjVar</a></div><div class="ttdeci">NodeID getGepObjVar(const MemObj *obj, const APOffset &amp;ap)</div><div class="ttdoc">Get a field SVFIR Object node according to base mem obj and offset.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00422">SVFIR.cpp:422</a></div></div>
3085
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a928b35a6ea960a94470b0983008bfa9d"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a928b35a6ea960a94470b0983008bfa9d">SVF::SVFIR2AbsState::getItvOfFlattenedElemIndex</a></div><div class="ttdeci">AbstractValue getItvOfFlattenedElemIndex(const GepStmt *gep)</div><div class="ttdoc">Return the offset expression of a GepStmt.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8cpp_source.html#l00502">SVFIR2AbsState.cpp:502</a></div></div>
3086
+ <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>
3087
+ <div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a975798ea3aeb2a77cc8858c712611afe"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a975798ea3aeb2a77cc8858c712611afe">SVF::CopyStmt::FPTOSI</a></div><div class="ttdeci">@ FPTOSI</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00383">SVFStatements.h:383</a></div></div>
3088
+ <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#l01081">SVFStatements.h:1081</a></div></div>
3089
+ <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>
3090
+ <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>
3091
+ <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>
3092
+ <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#l01045">SVFStatements.h:1045</a></div></div>
3093
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a80a0f0a20e993c6fcffc89f9de409f44"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a80a0f0a20e993c6fcffc89f9de409f44">SVF::SVFIR2AbsState::_svfir</a></div><div class="ttdeci">SVFIR * _svfir</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8h_source.html#l00210">SVFIR2AbsState.h:210</a></div></div>
3094
+ <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>
3095
+ <div class="ttc" id="aclassSVF_1_1MultiOpndStmt_html_af300571886b7aa2d84b0a70851c99bc3"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#af300571886b7aa2d84b0a70851c99bc3">SVF::MultiOpndStmt::getOpVarNum</a></div><div class="ttdeci">u32_t getOpVarNum() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00790">SVFStatements.h:790</a></div></div>
3096
+ <div class="ttc" id="aclassSVF_1_1AbstractState_html_aaabe5850dbf1620c6058f5ac6cb169b6"><div class="ttname"><a href="classSVF_1_1AbstractState.html#aaabe5850dbf1620c6058f5ac6cb169b6">SVF::AbstractState::getInternalID</a></div><div class="ttdeci">static u32_t getInternalID(u32_t idx)</div><div class="ttdoc">Return the internal index if idx is an address otherwise return the value of idx.</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00093">AbstractState.h:93</a></div></div>
3097
+ <div class="ttc" id="aclassSVF_1_1SVFVar_html_a1ace69053c2c4436fd78d5624bd0086a"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">SVF::SVFVar::hasValue</a></div><div class="ttdeci">bool hasValue() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00112">SVFVariables.h:112</a></div></div>
3098
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_ae6a36e79bdc4506f9f011ad100125444"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#ae6a36e79bdc4506f9f011ad100125444">SVF::SVFIR2AbsState::getFPToUIntValue</a></div><div class="ttdeci">AbstractValue getFPToUIntValue(const SVFVar *var)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8cpp_source.html#l00179">SVFIR2AbsState.cpp:179</a></div></div>
3099
+ <div class="ttc" id="aclassSVF_1_1AbstractState_html_aade30bb08f86b3f74e7aa9cdc60c92a3"><div class="ttname"><a href="classSVF_1_1AbstractState.html#aade30bb08f86b3f74e7aa9cdc60c92a3">SVF::AbstractState::_locToAbsVal</a></div><div class="ttdeci">LocToAbsValMap _locToAbsVal</div><div class="ttdoc">Map a memory address to its stored abstract value.</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00168">AbstractState.h:168</a></div></div>
3100
+ <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338acaeeae52f8d195815edfb8c85037d246d6"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acaeeae52f8d195815edfb8c85037d246d6">SVF::CmpStmt::ICMP_SLE</a></div><div class="ttdeci">@ ICMP_SLE</div><div class="ttdoc">signed less or equal</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00982">SVFStatements.h:982</a></div></div>
3101
+ <div class="ttc" id="aclassSVF_1_1Options_html_aaab923c093730b1670a54f09340b1bd5"><div class="ttname"><a href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">SVF::Options::MaxFieldLimit</a></div><div class="ttdeci">static const Option&lt; u32_t &gt; MaxFieldLimit</div><div class="ttdoc">Maximum number of field derivations for an object.</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00038">Options.h:38</a></div></div>
3102
+ <div class="ttc" id="astructSVF_1_1AbstractValue_html_af93f4b54b34e74579ad177ead629b53aa3a7df767184a0bf01de99351747f545a"><div class="ttname"><a href="structSVF_1_1AbstractValue.html#af93f4b54b34e74579ad177ead629b53aa3a7df767184a0bf01de99351747f545a">SVF::AbstractValue::UnknownType</a></div><div class="ttdeci">@ UnknownType</div><div class="ttdef"><b>Definition:</b> <a href="AbstractValue_8h_source.html#l00035">AbstractValue.h:35</a></div></div>
3103
+ <div class="ttc" id="anamespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
3104
+ <div class="ttc" id="aclassSVF_1_1SVFVar_html_ab6f95d3e7e099d75cfc9645ebc037047"><div class="ttname"><a href="classSVF_1_1SVFVar.html#ab6f95d3e7e099d75cfc9645ebc037047">SVF::SVFVar::getType</a></div><div class="ttdeci">virtual const SVFType * getType() const</div><div class="ttdoc">Return type of the value.</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00107">SVFVariables.h:107</a></div></div>
3105
+ <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338acac5a87d53b1ad255cec18b3784cd81f80"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acac5a87d53b1ad255cec18b3784cd81f80">SVF::CmpStmt::ICMP_SGE</a></div><div class="ttdeci">@ ICMP_SGE</div><div class="ttdoc">signed greater or equal</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00980">SVFStatements.h:980</a></div></div>
3106
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a10a83572bf5dee369b54cda74f402073"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a10a83572bf5dee369b54cda74f402073">SVF::SVFIR2AbsState::getGepObjAddress</a></div><div class="ttdeci">AbstractValue getGepObjAddress(u32_t pointer, APOffset offset)</div><div class="ttdoc">Return the field address given a pointer points to a struct object and an offset.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8cpp_source.html#l00389">SVFIR2AbsState.cpp:389</a></div></div>
3107
+ <div class="ttc" id="aclassSVF_1_1MultiOpndStmt_html_a71a530eb9fa9f7e273e471b4a75a039e"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">SVF::MultiOpndStmt::getResID</a></div><div class="ttdeci">NodeID getResID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00289">SVFStatements.cpp:289</a></div></div>
3108
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a63d855cf3342454ce5154fa7605f9935"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a63d855cf3342454ce5154fa7605f9935">SVF::SVFIR2AbsState::getVirtualMemAddress</a></div><div class="ttdeci">static u32_t getVirtualMemAddress(u32_t idx)</div><div class="ttdoc">The physical address starts with 0x7f...... + idx.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8h_source.html#l00178">SVFIR2AbsState.h:178</a></div></div>
3109
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_a847a9d505d3ed722b5b3d32cbcbd72ee"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#a847a9d505d3ed722b5b3d32cbcbd72ee">SVF::SVFIR2AbsState::inLocToValTable</a></div><div class="ttdeci">bool inLocToValTable(u32_t id) const</div><div class="ttdoc">whether the memory address stores a interval value</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8h_source.html#l00136">SVFIR2AbsState.h:136</a></div></div>
3110
+ <div class="ttc" id="aclassSVF_1_1SparseAbstractState_html_ad28955676ab059f0c175cbff8bf097b5"><div class="ttname"><a href="classSVF_1_1SparseAbstractState.html#ad28955676ab059f0c175cbff8bf097b5">SVF::SparseAbstractState::inLocToAddrsTable</a></div><div class="ttdeci">bool inLocToAddrsTable(u32_t id) const</div><div class="ttdoc">whether the memory address stores memory addresses</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00577">AbstractState.h:577</a></div></div>
3111
+ <div class="ttc" id="anamespaceSVF_html_ad781b0b14e89773e774072b280658ef3"><div class="ttname"><a href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">SVF::s64_t</a></div><div class="ttdeci">signed long long s64_t</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00049">GeneralType.h:49</a></div></div>
3112
+ <div class="ttc" id="astructSVF_1_1AbstractValue_html_a8b1af972fa8a4e40347990d179ec1c52"><div class="ttname"><a href="structSVF_1_1AbstractValue.html#a8b1af972fa8a4e40347990d179ec1c52">SVF::AbstractValue::isBottom</a></div><div class="ttdeci">bool isBottom() const</div><div class="ttdef"><b>Definition:</b> <a href="AbstractValue_8h_source.html#l00192">AbstractValue.h:192</a></div></div>
3113
+ <div class="ttc" id="astructSVF_1_1AbstractValue_html_a5cc67e56c658a6833b1bf9235f2a73ba"><div class="ttname"><a href="structSVF_1_1AbstractValue.html#a5cc67e56c658a6833b1bf9235f2a73ba">SVF::AbstractValue::insertAddr</a></div><div class="ttdeci">std::pair&lt; AddressValue::AddrSet::iterator, bool &gt; insertAddr(u32_t id)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractValue_8h_source.html#l00456">AbstractValue.h:456</a></div></div>
3114
+ <div class="ttc" id="astructSVF_1_1AbstractValue_html"><div class="ttname"><a href="structSVF_1_1AbstractValue.html">SVF::AbstractValue</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractValue_8h_source.html#l00029">AbstractValue.h:29</a></div></div>
3115
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_aa925878721ae7028c3edae0c7fe8e127"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#aa925878721ae7028c3edae0c7fe8e127">SVF::SVFIR2AbsState::getSExtValue</a></div><div class="ttdeci">AbstractValue getSExtValue(const SVFVar *var)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8cpp_source.html#l00156">SVFIR2AbsState.cpp:156</a></div></div>
3116
+ <div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a16c9ba88473e39f9a105b74b016af046"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a16c9ba88473e39f9a105b74b016af046">SVF::CopyStmt::ZEXT</a></div><div class="ttdeci">@ ZEXT</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00377">SVFStatements.h:377</a></div></div>
3117
+ <div class="ttc" id="aclassSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00380">SymbolTableInfo.h:380</a></div></div>
3118
+ <div class="ttc" id="aclassSVF_1_1SVFIR2AbsState_html_ac37760566b534d89a61d789b00efb993"><div class="ttname"><a href="classSVF_1_1SVFIR2AbsState.html#ac37760566b534d89a61d789b00efb993">SVF::SVFIR2AbsState::getInternalID</a></div><div class="ttdeci">static u32_t getInternalID(u32_t idx)</div><div class="ttdoc">Return the internal index if idx is an address otherwise return the value of idx.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2AbsState_8h_source.html#l00172">SVFIR2AbsState.h:172</a></div></div>
3119
+ <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338aca8d59d9d7f39bb9c8b1e3dcebe0c5dc48"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca8d59d9d7f39bb9c8b1e3dcebe0c5dc48">SVF::CmpStmt::ICMP_UGT</a></div><div class="ttdeci">@ ICMP_UGT</div><div class="ttdoc">unsigned greater than</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00975">SVFStatements.h:975</a></div></div>
3120
+ <div class="ttc" id="aclassSVF_1_1SparseAbstractState_html_a41a0ffbedd20ce499bc04bbd9c1894e1"><div class="ttname"><a href="classSVF_1_1SparseAbstractState.html#a41a0ffbedd20ce499bc04bbd9c1894e1">SVF::SparseAbstractState::inVarToAddrsTable</a></div><div class="ttdeci">bool inVarToAddrsTable(u32_t id) const</div><div class="ttdoc">whether the variable is in varToAddrs table</div><div class="ttdef"><b>Definition:</b> <a href="AbstractState_8h_source.html#l00515">AbstractState.h:515</a></div></div>
3121
+ <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_a2f647224242dd87099104e0fdc994de6a0df258a85e260bcb9534ae1b650e1856"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6a0df258a85e260bcb9534ae1b650e1856">SVF::BinaryOPStmt::And</a></div><div class="ttdeci">@ And</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01053">SVFStatements.h:1053</a></div></div>
3122
+ <div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a32b1e88bbb7433ed8071e9dd9daa2c83"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a32b1e88bbb7433ed8071e9dd9daa2c83">SVF::CopyStmt::INTTOPTR</a></div><div class="ttdeci">@ INTTOPTR</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00386">SVFStatements.h:386</a></div></div>
3123
+ <div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a3fbb25d7761cca1dd44e06e41e5570c9"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a3fbb25d7761cca1dd44e06e41e5570c9">SVF::CopyStmt::COPYVAL</a></div><div class="ttdeci">@ COPYVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00376">SVFStatements.h:376</a></div></div>
3124
+ <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338aca7234c9a242034a71d0bdcb54aeec6da7"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca7234c9a242034a71d0bdcb54aeec6da7">SVF::CmpStmt::FCMP_TRUE</a></div><div class="ttdeci">@ FCMP_TRUE</div><div class="ttdoc">1 1 1 1 Always true (always folded)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00969">SVFStatements.h:969</a></div></div>
3125
+ <div class="ttc" id="aclassSVF_1_1StInfo_html_a55e5fd85f232c1867c5c6a73646d53eb"><div class="ttname"><a href="classSVF_1_1StInfo.html#a55e5fd85f232c1867c5c6a73646d53eb">SVF::StInfo::getFlattenedElemIdxVec</a></div><div class="ttdeci">std::vector&lt; u32_t &gt; &amp; getFlattenedElemIdxVec()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00098">SVFType.h:98</a></div></div>
3126
+ <div class="ttc" id="aclassSVF_1_1MemObj_html_a019a77516c403f1f3cc72917b810a41f"><div class="ttname"><a href="classSVF_1_1MemObj.html#a019a77516c403f1f3cc72917b810a41f">SVF::MemObj::isConstantStruct</a></div><div class="ttdeci">bool isConstantStruct() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00491">SymbolTableInfo.cpp:491</a></div></div>
3127
+ <div class="ttc" id="aclassSVF_1_1CopyStmt_html_ae041bbd93e3839193fd7ffe9611a4ca1a80a8638b1b7a7057fb4cd577e1949f6c"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ae041bbd93e3839193fd7ffe9611a4ca1a80a8638b1b7a7057fb4cd577e1949f6c">SVF::CopyStmt::FPTOUI</a></div><div class="ttdeci">@ FPTOUI</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00382">SVFStatements.h:382</a></div></div>
3128
+ <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#l01038">SVFStatements.h:1038</a></div></div>
3129
+ <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#l00092">AddressValue.h:92</a></div></div>
3130
+ <!-- start footer part -->
3131
+ <hr class="footer"/><address class="footer"><small>
3132
+ Generated by &#160;<a href="http://www.doxygen.org/index.html">
3133
+ <img class="footer" src="doxygen.png" alt="doxygen"/>
3134
+ </a> 1.8.17
3135
+ </small></address>
3136
+ </body>
3137
+ </html>