svf-tools 1.0.812 → 1.0.813

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 (279) hide show
  1. package/SVF-doxygen/html/ConsExeState_8cpp_source.html +21 -21
  2. package/SVF-doxygen/html/ConsExeState_8h_source.html +384 -385
  3. package/SVF-doxygen/html/ExeState_8cpp_source.html +24 -24
  4. package/SVF-doxygen/html/ExeState_8h_source.html +227 -217
  5. package/SVF-doxygen/html/IntervalExeState_8cpp_source.html +8 -8
  6. package/SVF-doxygen/html/IntervalExeState_8h_source.html +412 -408
  7. package/SVF-doxygen/html/RelationSolver_8cpp_source.html +3 -3
  8. package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +43 -43
  9. package/SVF-doxygen/html/SVFIR2ConsExeState_8h_source.html +18 -18
  10. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +250 -262
  11. package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +103 -101
  12. package/SVF-doxygen/html/SymState_8h_source.html +1 -1
  13. package/SVF-doxygen/html/classSVF_1_1ConsExeState-members.html +74 -74
  14. package/SVF-doxygen/html/classSVF_1_1ConsExeState.html +412 -394
  15. package/SVF-doxygen/html/classSVF_1_1ExeState-members.html +34 -34
  16. package/SVF-doxygen/html/classSVF_1_1ExeState.html +287 -272
  17. package/SVF-doxygen/html/classSVF_1_1IntervalExeState-members.html +78 -78
  18. package/SVF-doxygen/html/classSVF_1_1IntervalExeState.html +445 -434
  19. package/SVF-doxygen/html/classSVF_1_1RelationSolver.html +3 -3
  20. package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState-members.html +28 -28
  21. package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +77 -77
  22. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState-members.html +40 -40
  23. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +372 -372
  24. package/SVF-doxygen/html/classSVF_1_1SymState.html +2 -2
  25. package/SVF-doxygen/html/functions.html +6 -6
  26. package/SVF-doxygen/html/functions_a.html +13 -8
  27. package/SVF-doxygen/html/functions_b.html +3 -3
  28. package/SVF-doxygen/html/functions_e.html +2 -2
  29. package/SVF-doxygen/html/functions_func_e.html +2 -2
  30. package/SVF-doxygen/html/functions_func_g.html +32 -35
  31. package/SVF-doxygen/html/functions_func_i.html +11 -21
  32. package/SVF-doxygen/html/functions_func_l.html +6 -6
  33. package/SVF-doxygen/html/functions_func_n.html +3 -3
  34. package/SVF-doxygen/html/functions_func_p.html +2 -2
  35. package/SVF-doxygen/html/functions_func_s.html +7 -7
  36. package/SVF-doxygen/html/functions_func_w.html +3 -3
  37. package/SVF-doxygen/html/functions_g.html +27 -30
  38. package/SVF-doxygen/html/functions_i.html +13 -23
  39. package/SVF-doxygen/html/functions_l.html +8 -8
  40. package/SVF-doxygen/html/functions_n.html +7 -7
  41. package/SVF-doxygen/html/functions_o.html +4 -4
  42. package/SVF-doxygen/html/functions_p.html +9 -9
  43. package/SVF-doxygen/html/functions_r.html +1 -1
  44. package/SVF-doxygen/html/functions_s.html +19 -17
  45. package/SVF-doxygen/html/functions_t.html +7 -7
  46. package/SVF-doxygen/html/functions_type.html +5 -0
  47. package/SVF-doxygen/html/functions_type_v.html +3 -8
  48. package/SVF-doxygen/html/functions_v.html +13 -16
  49. package/SVF-doxygen/html/functions_vars.html +6 -6
  50. package/SVF-doxygen/html/functions_vars_g.html +2 -2
  51. package/SVF-doxygen/html/functions_w.html +3 -3
  52. package/SVF-doxygen/html/search/all_0.js +4 -4
  53. package/SVF-doxygen/html/search/all_1.js +210 -209
  54. package/SVF-doxygen/html/search/all_10.js +324 -324
  55. package/SVF-doxygen/html/search/all_11.js +222 -222
  56. package/SVF-doxygen/html/search/all_12.js +544 -544
  57. package/SVF-doxygen/html/search/all_13.js +191 -191
  58. package/SVF-doxygen/html/search/all_14.js +67 -67
  59. package/SVF-doxygen/html/search/all_15.js +167 -169
  60. package/SVF-doxygen/html/search/all_16.js +63 -63
  61. package/SVF-doxygen/html/search/all_17.js +1 -1
  62. package/SVF-doxygen/html/search/all_18.js +1 -1
  63. package/SVF-doxygen/html/search/all_19.js +11 -11
  64. package/SVF-doxygen/html/search/all_1a.js +172 -172
  65. package/SVF-doxygen/html/search/all_2.js +169 -169
  66. package/SVF-doxygen/html/search/all_3.js +642 -642
  67. package/SVF-doxygen/html/search/all_4.js +233 -233
  68. package/SVF-doxygen/html/search/all_5.js +119 -119
  69. package/SVF-doxygen/html/search/all_6.js +225 -225
  70. package/SVF-doxygen/html/search/all_7.js +946 -947
  71. package/SVF-doxygen/html/search/all_9.js +481 -486
  72. package/SVF-doxygen/html/search/all_a.js +46 -46
  73. package/SVF-doxygen/html/search/all_b.js +26 -26
  74. package/SVF-doxygen/html/search/all_c.js +116 -116
  75. package/SVF-doxygen/html/search/all_d.js +196 -196
  76. package/SVF-doxygen/html/search/all_e.js +207 -207
  77. package/SVF-doxygen/html/search/all_f.js +115 -115
  78. package/SVF-doxygen/html/search/classes_0.js +26 -26
  79. package/SVF-doxygen/html/search/classes_1.js +9 -9
  80. package/SVF-doxygen/html/search/classes_10.js +73 -73
  81. package/SVF-doxygen/html/search/classes_11.js +15 -15
  82. package/SVF-doxygen/html/search/classes_12.js +2 -2
  83. package/SVF-doxygen/html/search/classes_13.js +10 -10
  84. package/SVF-doxygen/html/search/classes_14.js +14 -14
  85. package/SVF-doxygen/html/search/classes_15.js +1 -1
  86. package/SVF-doxygen/html/search/classes_2.js +80 -80
  87. package/SVF-doxygen/html/search/classes_3.js +37 -37
  88. package/SVF-doxygen/html/search/classes_4.js +9 -9
  89. package/SVF-doxygen/html/search/classes_5.js +28 -28
  90. package/SVF-doxygen/html/search/classes_6.js +104 -104
  91. package/SVF-doxygen/html/search/classes_7.js +33 -33
  92. package/SVF-doxygen/html/search/classes_8.js +56 -56
  93. package/SVF-doxygen/html/search/classes_9.js +1 -1
  94. package/SVF-doxygen/html/search/classes_a.js +12 -12
  95. package/SVF-doxygen/html/search/classes_b.js +29 -29
  96. package/SVF-doxygen/html/search/classes_c.js +6 -6
  97. package/SVF-doxygen/html/search/classes_d.js +18 -18
  98. package/SVF-doxygen/html/search/classes_e.js +36 -36
  99. package/SVF-doxygen/html/search/classes_f.js +25 -25
  100. package/SVF-doxygen/html/search/defines_0.js +3 -3
  101. package/SVF-doxygen/html/search/defines_1.js +2 -2
  102. package/SVF-doxygen/html/search/defines_2.js +30 -30
  103. package/SVF-doxygen/html/search/defines_3.js +21 -21
  104. package/SVF-doxygen/html/search/defines_4.js +2 -2
  105. package/SVF-doxygen/html/search/defines_5.js +4 -4
  106. package/SVF-doxygen/html/search/defines_6.js +2 -2
  107. package/SVF-doxygen/html/search/defines_7.js +5 -5
  108. package/SVF-doxygen/html/search/defines_8.js +11 -11
  109. package/SVF-doxygen/html/search/defines_9.js +9 -9
  110. package/SVF-doxygen/html/search/defines_a.js +2 -2
  111. package/SVF-doxygen/html/search/defines_b.js +1 -1
  112. package/SVF-doxygen/html/search/defines_c.js +3 -3
  113. package/SVF-doxygen/html/search/defines_d.js +2 -2
  114. package/SVF-doxygen/html/search/defines_e.js +7 -7
  115. package/SVF-doxygen/html/search/defines_f.js +3 -3
  116. package/SVF-doxygen/html/search/enums_0.js +3 -3
  117. package/SVF-doxygen/html/search/enums_1.js +2 -2
  118. package/SVF-doxygen/html/search/enums_10.js +1 -1
  119. package/SVF-doxygen/html/search/enums_11.js +1 -1
  120. package/SVF-doxygen/html/search/enums_2.js +8 -8
  121. package/SVF-doxygen/html/search/enums_3.js +1 -1
  122. package/SVF-doxygen/html/search/enums_4.js +3 -3
  123. package/SVF-doxygen/html/search/enums_5.js +1 -1
  124. package/SVF-doxygen/html/search/enums_6.js +2 -2
  125. package/SVF-doxygen/html/search/enums_7.js +2 -2
  126. package/SVF-doxygen/html/search/enums_8.js +4 -4
  127. package/SVF-doxygen/html/search/enums_9.js +1 -1
  128. package/SVF-doxygen/html/search/enums_a.js +1 -1
  129. package/SVF-doxygen/html/search/enums_b.js +7 -7
  130. package/SVF-doxygen/html/search/enums_c.js +1 -1
  131. package/SVF-doxygen/html/search/enums_d.js +4 -4
  132. package/SVF-doxygen/html/search/enums_e.js +2 -2
  133. package/SVF-doxygen/html/search/enums_f.js +4 -4
  134. package/SVF-doxygen/html/search/enumvalues_0.js +14 -14
  135. package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
  136. package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
  137. package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
  138. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  139. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  140. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  141. package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
  142. package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
  143. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  144. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  145. package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
  146. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  147. package/SVF-doxygen/html/search/enumvalues_7.js +9 -9
  148. package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
  149. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  150. package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
  151. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  152. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  153. package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
  154. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  155. package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
  156. package/SVF-doxygen/html/search/files_0.js +13 -13
  157. package/SVF-doxygen/html/search/files_1.js +7 -7
  158. package/SVF-doxygen/html/search/files_10.js +8 -8
  159. package/SVF-doxygen/html/search/files_11.js +8 -8
  160. package/SVF-doxygen/html/search/files_12.js +2 -2
  161. package/SVF-doxygen/html/search/files_2.js +55 -55
  162. package/SVF-doxygen/html/search/files_3.js +14 -14
  163. package/SVF-doxygen/html/search/files_4.js +5 -5
  164. package/SVF-doxygen/html/search/files_5.js +13 -13
  165. package/SVF-doxygen/html/search/files_6.js +9 -9
  166. package/SVF-doxygen/html/search/files_7.js +14 -14
  167. package/SVF-doxygen/html/search/files_8.js +13 -13
  168. package/SVF-doxygen/html/search/files_9.js +18 -18
  169. package/SVF-doxygen/html/search/files_a.js +3 -3
  170. package/SVF-doxygen/html/search/files_b.js +2 -2
  171. package/SVF-doxygen/html/search/files_c.js +20 -20
  172. package/SVF-doxygen/html/search/files_d.js +4 -4
  173. package/SVF-doxygen/html/search/files_e.js +62 -62
  174. package/SVF-doxygen/html/search/files_f.js +8 -8
  175. package/SVF-doxygen/html/search/functions_0.js +12 -12
  176. package/SVF-doxygen/html/search/functions_1.js +360 -360
  177. package/SVF-doxygen/html/search/functions_10.js +140 -140
  178. package/SVF-doxygen/html/search/functions_11.js +138 -138
  179. package/SVF-doxygen/html/search/functions_12.js +279 -279
  180. package/SVF-doxygen/html/search/functions_13.js +59 -59
  181. package/SVF-doxygen/html/search/functions_14.js +39 -39
  182. package/SVF-doxygen/html/search/functions_15.js +71 -71
  183. package/SVF-doxygen/html/search/functions_16.js +32 -32
  184. package/SVF-doxygen/html/search/functions_17.js +3 -3
  185. package/SVF-doxygen/html/search/functions_18.js +172 -172
  186. package/SVF-doxygen/html/search/functions_2.js +87 -87
  187. package/SVF-doxygen/html/search/functions_3.js +257 -257
  188. package/SVF-doxygen/html/search/functions_4.js +75 -75
  189. package/SVF-doxygen/html/search/functions_5.js +53 -53
  190. package/SVF-doxygen/html/search/functions_6.js +59 -59
  191. package/SVF-doxygen/html/search/functions_7.js +852 -853
  192. package/SVF-doxygen/html/search/functions_8.js +149 -149
  193. package/SVF-doxygen/html/search/functions_9.js +423 -428
  194. package/SVF-doxygen/html/search/functions_a.js +30 -30
  195. package/SVF-doxygen/html/search/functions_b.js +2 -2
  196. package/SVF-doxygen/html/search/functions_c.js +26 -26
  197. package/SVF-doxygen/html/search/functions_d.js +77 -77
  198. package/SVF-doxygen/html/search/functions_e.js +35 -35
  199. package/SVF-doxygen/html/search/functions_f.js +56 -56
  200. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  201. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  202. package/SVF-doxygen/html/search/related_0.js +2 -2
  203. package/SVF-doxygen/html/search/related_1.js +2 -2
  204. package/SVF-doxygen/html/search/related_2.js +2 -2
  205. package/SVF-doxygen/html/search/related_3.js +2 -2
  206. package/SVF-doxygen/html/search/related_4.js +2 -2
  207. package/SVF-doxygen/html/search/related_5.js +1 -1
  208. package/SVF-doxygen/html/search/related_6.js +2 -2
  209. package/SVF-doxygen/html/search/related_7.js +4 -4
  210. package/SVF-doxygen/html/search/related_8.js +2 -2
  211. package/SVF-doxygen/html/search/related_9.js +4 -4
  212. package/SVF-doxygen/html/search/related_a.js +19 -19
  213. package/SVF-doxygen/html/search/related_b.js +4 -4
  214. package/SVF-doxygen/html/search/related_c.js +1 -1
  215. package/SVF-doxygen/html/search/related_d.js +12 -12
  216. package/SVF-doxygen/html/search/related_e.js +2 -2
  217. package/SVF-doxygen/html/search/related_f.js +2 -2
  218. package/SVF-doxygen/html/search/typedefs_0.js +19 -18
  219. package/SVF-doxygen/html/search/typedefs_1.js +26 -26
  220. package/SVF-doxygen/html/search/typedefs_10.js +61 -61
  221. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  222. package/SVF-doxygen/html/search/typedefs_12.js +11 -11
  223. package/SVF-doxygen/html/search/typedefs_13.js +33 -34
  224. package/SVF-doxygen/html/search/typedefs_14.js +8 -8
  225. package/SVF-doxygen/html/search/typedefs_2.js +129 -129
  226. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  227. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  228. package/SVF-doxygen/html/search/typedefs_5.js +41 -41
  229. package/SVF-doxygen/html/search/typedefs_6.js +55 -55
  230. package/SVF-doxygen/html/search/typedefs_7.js +44 -44
  231. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  232. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  233. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  234. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  235. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  236. package/SVF-doxygen/html/search/typedefs_d.js +14 -14
  237. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  238. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  239. package/SVF-doxygen/html/search/variables_0.js +151 -151
  240. package/SVF-doxygen/html/search/variables_1.js +75 -75
  241. package/SVF-doxygen/html/search/variables_10.js +97 -97
  242. package/SVF-doxygen/html/search/variables_11.js +44 -44
  243. package/SVF-doxygen/html/search/variables_12.js +92 -92
  244. package/SVF-doxygen/html/search/variables_13.js +75 -75
  245. package/SVF-doxygen/html/search/variables_14.js +14 -14
  246. package/SVF-doxygen/html/search/variables_15.js +48 -48
  247. package/SVF-doxygen/html/search/variables_16.js +9 -9
  248. package/SVF-doxygen/html/search/variables_17.js +1 -1
  249. package/SVF-doxygen/html/search/variables_18.js +2 -2
  250. package/SVF-doxygen/html/search/variables_2.js +38 -38
  251. package/SVF-doxygen/html/search/variables_3.js +142 -142
  252. package/SVF-doxygen/html/search/variables_4.js +55 -55
  253. package/SVF-doxygen/html/search/variables_5.js +37 -37
  254. package/SVF-doxygen/html/search/variables_6.js +66 -66
  255. package/SVF-doxygen/html/search/variables_7.js +33 -33
  256. package/SVF-doxygen/html/search/variables_8.js +7 -7
  257. package/SVF-doxygen/html/search/variables_9.js +78 -78
  258. package/SVF-doxygen/html/search/variables_a.js +4 -4
  259. package/SVF-doxygen/html/search/variables_b.js +10 -10
  260. package/SVF-doxygen/html/search/variables_c.js +45 -45
  261. package/SVF-doxygen/html/search/variables_d.js +56 -56
  262. package/SVF-doxygen/html/search/variables_e.js +123 -123
  263. package/SVF-doxygen/html/search/variables_f.js +29 -29
  264. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1ConsExeState_01_4.html +5 -5
  265. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1ExeState_01_4.html +5 -5
  266. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1IntervalExeState_01_4.html +5 -5
  267. package/SVF-doxygen/html/svf-ex_8cpp.html +7 -7
  268. package/SVF-doxygen/html/svf-ex_8cpp_source.html +7 -7
  269. package/package.json +1 -1
  270. package/svf/include/AbstractExecution/ConsExeState.h +99 -96
  271. package/svf/include/AbstractExecution/ExeState.h +66 -53
  272. package/svf/include/AbstractExecution/IntervalExeState.h +66 -61
  273. package/svf/include/AbstractExecution/SVFIR2ConsExeState.h +7 -7
  274. package/svf/include/AbstractExecution/SVFIR2ItvExeState.h +20 -14
  275. package/svf/lib/AbstractExecution/ConsExeState.cpp +13 -13
  276. package/svf/lib/AbstractExecution/ExeState.cpp +19 -19
  277. package/svf/lib/AbstractExecution/IntervalExeState.cpp +4 -4
  278. package/svf/lib/AbstractExecution/SVFIR2ConsExeState.cpp +36 -36
  279. package/svf/lib/AbstractExecution/SVFIR2ItvExeState.cpp +80 -92
@@ -33,7 +33,7 @@
33
33
  using namespace SVF;
34
34
  using namespace SVFUtil;
35
35
 
36
- SVF::SVFIR2ItvExeState::VAddrs SVF::SVFIR2ItvExeState::globalNullVaddrs =
36
+ SVF::SVFIR2ItvExeState::Addrs SVF::SVFIR2ItvExeState::globalNulladdrs =
37
37
  AddressValue();
38
38
 
39
39
  /**
@@ -112,13 +112,13 @@ void SVFIR2ItvExeState::applySummary(IntervalExeState &es)
112
112
  {
113
113
  _es._locToItvVal[item.first] = item.second;
114
114
  }
115
- for (const auto &item: es._varToVAddrs)
115
+ for (const auto &item: es._varToAddrs)
116
116
  {
117
- _es._varToVAddrs[item.first] = item.second;
117
+ _es._varToAddrs[item.first] = item.second;
118
118
  }
119
- for (const auto &item: es._locToVAddrs)
119
+ for (const auto &item: es._locToAddrs)
120
120
  {
121
- _es._locToVAddrs[item.first] = item.second;
121
+ _es._locToAddrs[item.first] = item.second;
122
122
  }
123
123
  }
124
124
 
@@ -132,29 +132,29 @@ void SVFIR2ItvExeState::moveToGlobal()
132
132
  {
133
133
  IntervalExeState::globalES._locToItvVal.insert(it);
134
134
  }
135
- for (const auto &_varToVAddr: _es._varToVAddrs)
135
+ for (const auto &_varToVAddr: _es._varToAddrs)
136
136
  {
137
- IntervalExeState::globalES._varToVAddrs.insert(_varToVAddr);
137
+ IntervalExeState::globalES._varToAddrs.insert(_varToVAddr);
138
138
  }
139
- for (const auto &_locToVAddr: _es._locToVAddrs)
139
+ for (const auto &_locToVAddr: _es._locToAddrs)
140
140
  {
141
- IntervalExeState::globalES._locToVAddrs.insert(_locToVAddr);
141
+ IntervalExeState::globalES._locToAddrs.insert(_locToVAddr);
142
142
  }
143
143
 
144
144
  _es._varToItvVal.clear();
145
145
  IntervalExeState::globalES._varToItvVal.erase(PAG::getPAG()->getBlkPtr());
146
146
  _es._varToItvVal[PAG::getPAG()->getBlkPtr()] = IntervalValue::top();
147
147
  _es._locToItvVal.clear();
148
- _es._varToVAddrs.clear();
149
- _es._locToVAddrs.clear();
148
+ _es._varToAddrs.clear();
149
+ _es._locToAddrs.clear();
150
150
  }
151
151
 
152
- void SVFIR2ItvExeState::widenVAddrs(IntervalExeState &lhs, const IntervalExeState &rhs)
152
+ void SVFIR2ItvExeState::widenAddrs(IntervalExeState &lhs, const IntervalExeState &rhs)
153
153
  {
154
- for (const auto &rhsItem: rhs._varToVAddrs)
154
+ for (const auto &rhsItem: rhs._varToAddrs)
155
155
  {
156
- auto lhsIter = lhs._varToVAddrs.find(rhsItem.first);
157
- if (lhsIter != lhs._varToVAddrs.end())
156
+ auto lhsIter = lhs._varToAddrs.find(rhsItem.first);
157
+ if (lhsIter != lhs._varToAddrs.end())
158
158
  {
159
159
  for (const auto &addr: rhsItem.second)
160
160
  {
@@ -168,10 +168,10 @@ void SVFIR2ItvExeState::widenVAddrs(IntervalExeState &lhs, const IntervalExeStat
168
168
  }
169
169
  }
170
170
  }
171
- for (const auto &rhsItem: rhs._locToVAddrs)
171
+ for (const auto &rhsItem: rhs._locToAddrs)
172
172
  {
173
- auto lhsIter = lhs._locToVAddrs.find(rhsItem.first);
174
- if (lhsIter != lhs._locToVAddrs.end())
173
+ auto lhsIter = lhs._locToAddrs.find(rhsItem.first);
174
+ if (lhsIter != lhs._locToAddrs.end())
175
175
  {
176
176
  for (const auto &addr: rhsItem.second)
177
177
  {
@@ -187,12 +187,12 @@ void SVFIR2ItvExeState::widenVAddrs(IntervalExeState &lhs, const IntervalExeStat
187
187
  }
188
188
  }
189
189
 
190
- void SVFIR2ItvExeState::narrowVAddrs(IntervalExeState &lhs, const IntervalExeState &rhs)
190
+ void SVFIR2ItvExeState::narrowAddrs(IntervalExeState &lhs, const IntervalExeState &rhs)
191
191
  {
192
- for (const auto &rhsItem: rhs._varToVAddrs)
192
+ for (const auto &rhsItem: rhs._varToAddrs)
193
193
  {
194
- auto lhsIter = lhs._varToVAddrs.find(rhsItem.first);
195
- if (lhsIter != lhs._varToVAddrs.end())
194
+ auto lhsIter = lhs._varToAddrs.find(rhsItem.first);
195
+ if (lhsIter != lhs._varToAddrs.end())
196
196
  {
197
197
  for (const auto &addr: lhsIter->second)
198
198
  {
@@ -204,10 +204,10 @@ void SVFIR2ItvExeState::narrowVAddrs(IntervalExeState &lhs, const IntervalExeSta
204
204
  }
205
205
  }
206
206
  }
207
- for (const auto &rhsItem: rhs._locToVAddrs)
207
+ for (const auto &rhsItem: rhs._locToAddrs)
208
208
  {
209
- auto lhsIter = lhs._locToVAddrs.find(rhsItem.first);
210
- if (lhsIter != lhs._locToVAddrs.end())
209
+ auto lhsIter = lhs._locToAddrs.find(rhsItem.first);
210
+ if (lhsIter != lhs._locToAddrs.end())
211
211
  {
212
212
  for (const auto &addr: lhsIter->second)
213
213
  {
@@ -221,11 +221,11 @@ void SVFIR2ItvExeState::narrowVAddrs(IntervalExeState &lhs, const IntervalExeSta
221
221
  }
222
222
  }
223
223
 
224
- SVFIR2ItvExeState::VAddrs SVFIR2ItvExeState::getGepObjAddress(u32_t pointer, APOffset offset)
224
+ SVFIR2ItvExeState::Addrs SVFIR2ItvExeState::getGepObjAddress(u32_t pointer, APOffset offset)
225
225
  {
226
- assert(!getVAddrs(pointer).empty());
227
- VAddrs &addrs = getVAddrs(pointer);
228
- VAddrs ret;
226
+ assert(!getAddrs(pointer).empty());
227
+ Addrs &addrs = getAddrs(pointer);
228
+ Addrs ret;
229
229
  for (const auto &addr: addrs)
230
230
  {
231
231
  int64_t baseObj = getInternalID(addr);
@@ -458,22 +458,22 @@ void SVFIR2ItvExeState::initObjVar(const ObjVar *objVar, u32_t varId)
458
458
  else if (SVFUtil::isa<SVFConstantNullPtr>(obj->getValue()))
459
459
  IntervalExeState::globalES[varId] = IntervalValue(0, 0);
460
460
  else if (SVFUtil::isa<SVFGlobalValue>(obj->getValue()))
461
- IntervalExeState::globalES.getVAddrs(varId).insert(getVirtualMemAddress(varId));
461
+ IntervalExeState::globalES.getAddrs(varId).insert(getVirtualMemAddress(varId));
462
462
  else if (obj->isConstantArray() || obj->isConstantStruct())
463
463
  IntervalExeState::globalES[varId] = IntervalValue::top();
464
464
  else
465
465
  IntervalExeState::globalES[varId] = IntervalValue::top();
466
466
  }
467
467
  else
468
- IntervalExeState::globalES.getVAddrs(varId).insert(getVirtualMemAddress(varId));
468
+ IntervalExeState::globalES.getAddrs(varId).insert(getVirtualMemAddress(varId));
469
469
  }
470
470
  else
471
- IntervalExeState::globalES.getVAddrs(varId).insert(getVirtualMemAddress(varId));
471
+ IntervalExeState::globalES.getAddrs(varId).insert(getVirtualMemAddress(varId));
472
472
  }
473
473
 
474
474
  void SVFIR2ItvExeState::initSVFVar(u32_t varId)
475
475
  {
476
- if (inVarToIValTable(varId) || _es.inVarToAddrsTable(varId)) return;
476
+ if (inVarToValTable(varId) || _es.inVarToAddrsTable(varId)) return;
477
477
  SVFIR *svfir = PAG::getPAG();
478
478
  SVFVar *svfVar = svfir->getGNode(varId);
479
479
  // write objvar into cache instead of exestate
@@ -498,7 +498,7 @@ void SVFIR2ItvExeState::initSVFVar(u32_t varId)
498
498
  void SVFIR2ItvExeState::translateAddr(const AddrStmt *addr)
499
499
  {
500
500
  initSVFVar(addr->getRHSVarID());
501
- if (inVarToIValTable(addr->getRHSVarID()))
501
+ if (inVarToValTable(addr->getRHSVarID()))
502
502
  {
503
503
  // if addr RHS is integerType(i8 i32 etc), value should be limited.
504
504
  if (addr->getRHSVar()->getType()->getKind() == SVFType::SVFIntegerTy)
@@ -511,7 +511,7 @@ void SVFIR2ItvExeState::translateAddr(const AddrStmt *addr)
511
511
  }
512
512
  else if (inVarToAddrsTable(addr->getRHSVarID()))
513
513
  {
514
- IntervalExeState::globalES.getVAddrs(addr->getLHSVarID()) = IntervalExeState::globalES.getVAddrs(
514
+ IntervalExeState::globalES.getAddrs(addr->getLHSVarID()) = IntervalExeState::globalES.getAddrs(
515
515
  addr->getRHSVarID());
516
516
  }
517
517
  else
@@ -526,9 +526,9 @@ void SVFIR2ItvExeState::translateBinary(const BinaryOPStmt *binary)
526
526
  u32_t op0 = binary->getOpVarID(0);
527
527
  u32_t op1 = binary->getOpVarID(1);
528
528
  u32_t res = binary->getResID();
529
- if (!inVarToIValTable(op0)) _es[op0] = IntervalValue::top();
530
- if (!inVarToIValTable(op1)) _es[op1] = IntervalValue::top();
531
- if (inVarToIValTable(op0) && inVarToIValTable(op1))
529
+ if (!inVarToValTable(op0)) _es[op0] = IntervalValue::top();
530
+ if (!inVarToValTable(op1)) _es[op1] = IntervalValue::top();
531
+ if (inVarToValTable(op0) && inVarToValTable(op1))
532
532
  {
533
533
  IntervalValue &lhs = _es[op0], &rhs = _es[op1];
534
534
  IntervalValue resVal;
@@ -588,7 +588,7 @@ void SVFIR2ItvExeState::translateCmp(const CmpStmt *cmp)
588
588
  u32_t op0 = cmp->getOpVarID(0);
589
589
  u32_t op1 = cmp->getOpVarID(1);
590
590
  u32_t res = cmp->getResID();
591
- if (inVarToIValTable(op0) && inVarToIValTable(op1))
591
+ if (inVarToValTable(op0) && inVarToValTable(op1))
592
592
  {
593
593
  IntervalValue resVal;
594
594
  IntervalValue &lhs = _es[op0], &rhs = _es[op1];
@@ -645,7 +645,7 @@ void SVFIR2ItvExeState::translateCmp(const CmpStmt *cmp)
645
645
  else if (inVarToAddrsTable(op0) && inVarToAddrsTable(op1))
646
646
  {
647
647
  IntervalValue resVal;
648
- VAddrs &lhs = getVAddrs(op0), &rhs = getVAddrs(op1);
648
+ Addrs &lhs = getAddrs(op0), &rhs = getAddrs(op1);
649
649
  assert(!lhs.empty() && !rhs.empty() && "empty address?");
650
650
  auto predicate = cmp->getPredicate();
651
651
  switch (predicate)
@@ -773,30 +773,26 @@ void SVFIR2ItvExeState::translateLoad(const LoadStmt *load)
773
773
  u32_t lhs = load->getLHSVarID();
774
774
  if (inVarToAddrsTable(rhs))
775
775
  {
776
- VAddrs &addrs = getVAddrs(rhs);
776
+ Addrs &addrs = getAddrs(rhs);
777
777
  assert(!addrs.empty());
778
778
  IntervalValue rhsItv = IntervalValue::bottom();
779
779
  AddressValue rhsAddr;
780
- bool isItv = false, isAddr = false;
780
+ bool isVal = false, isAddr = false;
781
781
  for (const auto &addr: addrs)
782
782
  {
783
783
  u32_t objId = getInternalID(addr);
784
- if (inLocToIValTable(objId))
784
+ if (inLocToValTable(objId))
785
785
  {
786
786
  rhsItv.join_with(_es.load(addr));
787
- isItv = true;
787
+ isVal = true;
788
788
  }
789
789
  else if (inLocToAddrsTable(objId))
790
790
  {
791
- rhsAddr.join_with(_es.loadVAddrs(addr));
791
+ rhsAddr.join_with(_es.loadAddrs(addr));
792
792
  isAddr = true;
793
793
  }
794
- else
795
- {
796
- // rhs not in table
797
- }
798
794
  }
799
- if (isItv)
795
+ if (isVal)
800
796
  {
801
797
  // lhs var is an integer
802
798
  _es[lhs] = rhsItv;
@@ -804,11 +800,11 @@ void SVFIR2ItvExeState::translateLoad(const LoadStmt *load)
804
800
  else if (isAddr)
805
801
  {
806
802
  // lhs var is an address
807
- _es.getVAddrs(lhs) = rhsAddr;
803
+ _es.getAddrs(lhs) = rhsAddr;
808
804
  }
809
805
  else
810
806
  {
811
- // rhs not in table
807
+ // rhs not initialized, e.g., absence of a store before load
812
808
  }
813
809
  }
814
810
  }
@@ -819,10 +815,10 @@ void SVFIR2ItvExeState::translateStore(const StoreStmt *store)
819
815
  u32_t lhs = store->getLHSVarID();
820
816
  if (inVarToAddrsTable(lhs))
821
817
  {
822
- if (inVarToIValTable(rhs))
818
+ if (inVarToValTable(rhs))
823
819
  {
824
- assert(!getVAddrs(lhs).empty());
825
- VAddrs &addrs = getVAddrs(lhs);
820
+ assert(!getAddrs(lhs).empty());
821
+ Addrs &addrs = getAddrs(lhs);
826
822
  for (const auto &addr: addrs)
827
823
  {
828
824
  _es.store(addr, _es[rhs]);
@@ -830,12 +826,12 @@ void SVFIR2ItvExeState::translateStore(const StoreStmt *store)
830
826
  }
831
827
  else if (inVarToAddrsTable(rhs))
832
828
  {
833
- assert(!getVAddrs(lhs).empty());
834
- VAddrs &addrs = getVAddrs(lhs);
829
+ assert(!getAddrs(lhs).empty());
830
+ Addrs &addrs = getAddrs(lhs);
835
831
  for (const auto &addr: addrs)
836
832
  {
837
- assert(!getVAddrs(rhs).empty());
838
- _es.storeVAddrs(addr, getVAddrs(rhs));
833
+ assert(!getAddrs(rhs).empty());
834
+ _es.storeAddrs(addr, getAddrs(rhs));
839
835
  }
840
836
 
841
837
  }
@@ -852,7 +848,7 @@ void SVFIR2ItvExeState::translateCopy(const CopyStmt *copy)
852
848
  }
853
849
  else
854
850
  {
855
- if (inVarToIValTable(rhs))
851
+ if (inVarToValTable(rhs))
856
852
  {
857
853
  _es[lhs] = _es[rhs];
858
854
  // if copy LHS is integerType(i8 i32 etc), value should be limited.
@@ -866,8 +862,8 @@ void SVFIR2ItvExeState::translateCopy(const CopyStmt *copy)
866
862
  }
867
863
  else if (inVarToAddrsTable(rhs))
868
864
  {
869
- assert(!getVAddrs(rhs).empty());
870
- _es.getVAddrs(lhs) = getVAddrs(rhs);
865
+ assert(!getAddrs(rhs).empty());
866
+ _es.getAddrs(lhs) = getAddrs(rhs);
871
867
  }
872
868
  }
873
869
  }
@@ -877,15 +873,15 @@ void SVFIR2ItvExeState::translateGep(const GepStmt *gep)
877
873
  u32_t rhs = gep->getRHSVarID();
878
874
  u32_t lhs = gep->getLHSVarID();
879
875
  if (!inVarToAddrsTable(rhs)) return;
880
- assert(!getVAddrs(rhs).empty());
881
- VAddrs &rhsVal = getVAddrs(rhs);
876
+ assert(!getAddrs(rhs).empty());
877
+ Addrs &rhsVal = getAddrs(rhs);
882
878
  if (rhsVal.empty()) return;
883
879
  IntervalValue offsetPair = getItvOfFlattenedElemIndex(gep);
884
880
  if (!isVirtualMemAddress(*rhsVal.begin()))
885
881
  return;
886
882
  else
887
883
  {
888
- VAddrs gepAddrs;
884
+ Addrs gepAddrs;
889
885
  APOffset lb = offsetPair.lb().getNumeral() < Options::MaxFieldLimit()?
890
886
  offsetPair.lb().getNumeral(): Options::MaxFieldLimit();
891
887
  APOffset ub = offsetPair.ub().getNumeral() < Options::MaxFieldLimit()?
@@ -893,7 +889,7 @@ void SVFIR2ItvExeState::translateGep(const GepStmt *gep)
893
889
  for (APOffset i = lb; i <= ub; i++)
894
890
  gepAddrs.join_with(getGepObjAddress(rhs, i));
895
891
  if(gepAddrs.empty()) return;
896
- _es.getVAddrs(lhs) = gepAddrs;
892
+ _es.getAddrs(lhs) = gepAddrs;
897
893
  return;
898
894
  }
899
895
  }
@@ -904,7 +900,7 @@ void SVFIR2ItvExeState::translateSelect(const SelectStmt *select)
904
900
  u32_t tval = select->getTrueValue()->getId();
905
901
  u32_t fval = select->getFalseValue()->getId();
906
902
  u32_t cond = select->getCondition()->getId();
907
- if (inVarToIValTable(tval) && inVarToIValTable(fval) && inVarToIValTable(cond))
903
+ if (inVarToValTable(tval) && inVarToValTable(fval) && inVarToValTable(cond))
908
904
  {
909
905
  if (_es[cond].is_numeral())
910
906
  {
@@ -915,13 +911,13 @@ void SVFIR2ItvExeState::translateSelect(const SelectStmt *select)
915
911
  _es[res] = _es[cond];
916
912
  }
917
913
  }
918
- else if (inVarToAddrsTable(tval) && inVarToAddrsTable(fval) && inVarToIValTable(cond))
914
+ else if (inVarToAddrsTable(tval) && inVarToAddrsTable(fval) && inVarToValTable(cond))
919
915
  {
920
916
  if (_es[cond].is_numeral())
921
917
  {
922
- assert(!getVAddrs(fval).empty());
923
- assert(!getVAddrs(tval).empty());
924
- _es.getVAddrs(res) = _es[cond].is_zero() ? getVAddrs(fval) : getVAddrs(tval);
918
+ assert(!getAddrs(fval).empty());
919
+ assert(!getAddrs(tval).empty());
920
+ _es.getAddrs(res) = _es[cond].is_zero() ? getAddrs(fval) : getAddrs(tval);
925
921
  }
926
922
  }
927
923
  }
@@ -931,27 +927,23 @@ void SVFIR2ItvExeState::translatePhi(const PhiStmt *phi)
931
927
  u32_t res = phi->getResID();
932
928
  IntervalValue rhsItv = IntervalValue::bottom();
933
929
  AddressValue rhsAddr;
934
- bool isItv = false, isAddr = false;
930
+ bool isVal = false, isAddr = false;
935
931
  for (u32_t i = 0; i < phi->getOpVarNum(); i++)
936
932
  {
937
933
  NodeID curId = phi->getOpVarID(i);
938
- if (inVarToIValTable(curId))
934
+ if (inVarToValTable(curId))
939
935
  {
940
936
  rhsItv.join_with(_es[curId]);
941
- isItv = true;
937
+ isVal = true;
942
938
  }
943
939
  else if (inVarToAddrsTable(curId))
944
940
  {
945
- assert(!getVAddrs(curId).empty());
946
- rhsAddr.join_with(getVAddrs(curId));
941
+ assert(!getAddrs(curId).empty());
942
+ rhsAddr.join_with(getAddrs(curId));
947
943
  isAddr = true;
948
944
  }
949
- else
950
- {
951
- // rhs not in the table
952
- }
953
945
  }
954
- if (isItv)
946
+ if (isVal)
955
947
  {
956
948
  // res var is an integer
957
949
  _es[res] = rhsItv;
@@ -959,11 +951,7 @@ void SVFIR2ItvExeState::translatePhi(const PhiStmt *phi)
959
951
  else if (isAddr)
960
952
  {
961
953
  // res var is an address
962
- _es.getVAddrs(res) = rhsAddr;
963
- }
964
- else
965
- {
966
- // rhs not in table
954
+ _es.getAddrs(res) = rhsAddr;
967
955
  }
968
956
  }
969
957
 
@@ -972,14 +960,14 @@ void SVFIR2ItvExeState::translateCall(const CallPE *callPE)
972
960
  {
973
961
  NodeID lhs = callPE->getLHSVarID();
974
962
  NodeID rhs = callPE->getRHSVarID();
975
- if (inVarToIValTable(rhs))
963
+ if (inVarToValTable(rhs))
976
964
  {
977
965
  _es[lhs] = _es[rhs];
978
966
  }
979
967
  else if (inVarToAddrsTable(rhs))
980
968
  {
981
- assert(!getVAddrs(rhs).empty());
982
- _es.getVAddrs(lhs) = getVAddrs(rhs);
969
+ assert(!getAddrs(rhs).empty());
970
+ _es.getAddrs(lhs) = getAddrs(rhs);
983
971
  }
984
972
  }
985
973
 
@@ -987,13 +975,13 @@ void SVFIR2ItvExeState::translateRet(const RetPE *retPE)
987
975
  {
988
976
  NodeID lhs = retPE->getLHSVarID();
989
977
  NodeID rhs = retPE->getRHSVarID();
990
- if (inVarToIValTable(rhs))
978
+ if (inVarToValTable(rhs))
991
979
  {
992
980
  _es[lhs] = _es[rhs];
993
981
  }
994
982
  else if (inVarToAddrsTable(rhs))
995
983
  {
996
- assert(!getVAddrs(rhs).empty());
997
- _es.getVAddrs(lhs) = getVAddrs(rhs);
984
+ assert(!getAddrs(rhs).empty());
985
+ _es.getAddrs(lhs) = getAddrs(rhs);
998
986
  }
999
987
  }