svf-tools 1.0.811 → 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 (341) hide show
  1. package/SVF-doxygen/html/AccessPath_8cpp_source.html +159 -136
  2. package/SVF-doxygen/html/AccessPath_8h_source.html +45 -42
  3. package/SVF-doxygen/html/ConsExeState_8cpp_source.html +21 -21
  4. package/SVF-doxygen/html/ConsExeState_8h_source.html +384 -385
  5. package/SVF-doxygen/html/ConsG_8cpp_source.html +8 -8
  6. package/SVF-doxygen/html/ContextDDA_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/ExeState_8cpp_source.html +24 -24
  8. package/SVF-doxygen/html/ExeState_8h_source.html +227 -217
  9. package/SVF-doxygen/html/FlowDDA_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/FlowSensitive_8cpp_source.html +1 -1
  11. package/SVF-doxygen/html/ICFGEdge_8h_source.html +2 -2
  12. package/SVF-doxygen/html/ICFG_8cpp_source.html +2 -2
  13. package/SVF-doxygen/html/IRGraph_8cpp_source.html +2 -2
  14. package/SVF-doxygen/html/IntervalExeState_8cpp_source.html +8 -8
  15. package/SVF-doxygen/html/IntervalExeState_8h_source.html +412 -408
  16. package/SVF-doxygen/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  17. package/SVF-doxygen/html/RelationSolver_8cpp_source.html +3 -3
  18. package/SVF-doxygen/html/SVFFileSystem_8cpp_source.html +13 -13
  19. package/SVF-doxygen/html/SVFFileSystem_8h_source.html +11 -11
  20. package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +273 -272
  21. package/SVF-doxygen/html/SVFIR2ConsExeState_8h_source.html +28 -28
  22. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +980 -973
  23. package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +169 -169
  24. package/SVF-doxygen/html/SVFIR2Relation_8cpp_source.html +33 -33
  25. package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +4 -4
  26. package/SVF-doxygen/html/SVFIRBuilder_8h_source.html +11 -11
  27. package/SVF-doxygen/html/SVFIR_8cpp_source.html +14 -14
  28. package/SVF-doxygen/html/SVFIR_8h_source.html +11 -11
  29. package/SVF-doxygen/html/SVFStatements_8cpp_source.html +19 -19
  30. package/SVF-doxygen/html/SVFStatements_8h_source.html +829 -830
  31. package/SVF-doxygen/html/SaberCondAllocator_8cpp_source.html +7 -7
  32. package/SVF-doxygen/html/SaberCondAllocator_8h_source.html +2 -2
  33. package/SVF-doxygen/html/SymState_8h_source.html +1 -1
  34. package/SVF-doxygen/html/VFGNode_8h_source.html +7 -7
  35. package/SVF-doxygen/html/VFG_8cpp_source.html +15 -15
  36. package/SVF-doxygen/html/VFG_8h_source.html +10 -10
  37. package/SVF-doxygen/html/classSVF_1_1AccessPath-members.html +18 -17
  38. package/SVF-doxygen/html/classSVF_1_1AccessPath.html +206 -153
  39. package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +68 -68
  40. package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +51 -51
  41. package/SVF-doxygen/html/classSVF_1_1BranchVFGNode.html +3 -3
  42. package/SVF-doxygen/html/classSVF_1_1CallPE.html +35 -35
  43. package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +97 -97
  44. package/SVF-doxygen/html/classSVF_1_1ConsExeState-members.html +74 -74
  45. package/SVF-doxygen/html/classSVF_1_1ConsExeState.html +412 -394
  46. package/SVF-doxygen/html/classSVF_1_1ConstraintGraph.html +8 -8
  47. package/SVF-doxygen/html/classSVF_1_1ContextDDA.html +1 -1
  48. package/SVF-doxygen/html/classSVF_1_1ExeState-members.html +34 -34
  49. package/SVF-doxygen/html/classSVF_1_1ExeState.html +287 -272
  50. package/SVF-doxygen/html/classSVF_1_1FlowDDA.html +1 -1
  51. package/SVF-doxygen/html/classSVF_1_1FlowSensitive.html +1 -1
  52. package/SVF-doxygen/html/classSVF_1_1GepStmt-members.html +1 -1
  53. package/SVF-doxygen/html/classSVF_1_1GepStmt.html +37 -37
  54. package/SVF-doxygen/html/classSVF_1_1ICFG.html +2 -2
  55. package/SVF-doxygen/html/classSVF_1_1IntervalExeState-members.html +78 -78
  56. package/SVF-doxygen/html/classSVF_1_1IntervalExeState.html +445 -434
  57. package/SVF-doxygen/html/classSVF_1_1MultiOpndStmt.html +48 -48
  58. package/SVF-doxygen/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  59. package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +46 -46
  60. package/SVF-doxygen/html/classSVF_1_1RelationSolver.html +3 -3
  61. package/SVF-doxygen/html/classSVF_1_1RetPE.html +35 -35
  62. package/SVF-doxygen/html/classSVF_1_1SVFIR.html +13 -13
  63. package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState-members.html +28 -28
  64. package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +296 -295
  65. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState-members.html +15 -16
  66. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +1087 -1128
  67. package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +4 -4
  68. package/SVF-doxygen/html/classSVF_1_1SVFIRReader.html +1 -1
  69. package/SVF-doxygen/html/classSVF_1_1SVFIRWriter.html +1 -1
  70. package/SVF-doxygen/html/classSVF_1_1SaberCondAllocator.html +7 -7
  71. package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +38 -38
  72. package/SVF-doxygen/html/classSVF_1_1SymState.html +2 -2
  73. package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +22 -22
  74. package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +21 -21
  75. package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +44 -44
  76. package/SVF-doxygen/html/classSVF_1_1VFG.html +15 -15
  77. package/SVF-doxygen/html/functions.html +6 -6
  78. package/SVF-doxygen/html/functions_a.html +13 -8
  79. package/SVF-doxygen/html/functions_b.html +3 -3
  80. package/SVF-doxygen/html/functions_e.html +2 -2
  81. package/SVF-doxygen/html/functions_func_e.html +2 -2
  82. package/SVF-doxygen/html/functions_func_g.html +44 -45
  83. package/SVF-doxygen/html/functions_func_i.html +12 -22
  84. package/SVF-doxygen/html/functions_func_l.html +6 -6
  85. package/SVF-doxygen/html/functions_func_n.html +3 -3
  86. package/SVF-doxygen/html/functions_func_p.html +1 -1
  87. package/SVF-doxygen/html/functions_func_s.html +7 -7
  88. package/SVF-doxygen/html/functions_func_w.html +3 -3
  89. package/SVF-doxygen/html/functions_g.html +42 -43
  90. package/SVF-doxygen/html/functions_i.html +30 -37
  91. package/SVF-doxygen/html/functions_l.html +8 -8
  92. package/SVF-doxygen/html/functions_n.html +7 -7
  93. package/SVF-doxygen/html/functions_o.html +20 -21
  94. package/SVF-doxygen/html/functions_p.html +12 -12
  95. package/SVF-doxygen/html/functions_r.html +3 -1
  96. package/SVF-doxygen/html/functions_s.html +18 -20
  97. package/SVF-doxygen/html/functions_t.html +10 -10
  98. package/SVF-doxygen/html/functions_type.html +5 -0
  99. package/SVF-doxygen/html/functions_type_i.html +4 -4
  100. package/SVF-doxygen/html/functions_type_v.html +3 -8
  101. package/SVF-doxygen/html/functions_v.html +10 -13
  102. package/SVF-doxygen/html/functions_vars.html +6 -6
  103. package/SVF-doxygen/html/functions_vars_g.html +2 -2
  104. package/SVF-doxygen/html/functions_vars_i.html +3 -0
  105. package/SVF-doxygen/html/functions_vars_o.html +0 -3
  106. package/SVF-doxygen/html/functions_w.html +11 -11
  107. package/SVF-doxygen/html/search/all_0.js +4 -4
  108. package/SVF-doxygen/html/search/all_1.js +210 -209
  109. package/SVF-doxygen/html/search/all_10.js +324 -324
  110. package/SVF-doxygen/html/search/all_11.js +222 -222
  111. package/SVF-doxygen/html/search/all_12.js +544 -544
  112. package/SVF-doxygen/html/search/all_13.js +191 -191
  113. package/SVF-doxygen/html/search/all_14.js +67 -67
  114. package/SVF-doxygen/html/search/all_15.js +167 -169
  115. package/SVF-doxygen/html/search/all_16.js +63 -63
  116. package/SVF-doxygen/html/search/all_17.js +1 -1
  117. package/SVF-doxygen/html/search/all_18.js +1 -1
  118. package/SVF-doxygen/html/search/all_19.js +11 -11
  119. package/SVF-doxygen/html/search/all_1a.js +172 -172
  120. package/SVF-doxygen/html/search/all_2.js +169 -169
  121. package/SVF-doxygen/html/search/all_3.js +642 -642
  122. package/SVF-doxygen/html/search/all_4.js +233 -233
  123. package/SVF-doxygen/html/search/all_5.js +119 -119
  124. package/SVF-doxygen/html/search/all_6.js +225 -225
  125. package/SVF-doxygen/html/search/all_7.js +868 -868
  126. package/SVF-doxygen/html/search/all_8.js +197 -197
  127. package/SVF-doxygen/html/search/all_9.js +606 -611
  128. package/SVF-doxygen/html/search/all_a.js +46 -46
  129. package/SVF-doxygen/html/search/all_b.js +26 -26
  130. package/SVF-doxygen/html/search/all_c.js +116 -116
  131. package/SVF-doxygen/html/search/all_d.js +196 -196
  132. package/SVF-doxygen/html/search/all_e.js +207 -207
  133. package/SVF-doxygen/html/search/all_f.js +115 -116
  134. package/SVF-doxygen/html/search/classes_0.js +26 -26
  135. package/SVF-doxygen/html/search/classes_1.js +9 -9
  136. package/SVF-doxygen/html/search/classes_10.js +73 -73
  137. package/SVF-doxygen/html/search/classes_11.js +15 -15
  138. package/SVF-doxygen/html/search/classes_12.js +2 -2
  139. package/SVF-doxygen/html/search/classes_13.js +10 -10
  140. package/SVF-doxygen/html/search/classes_14.js +14 -14
  141. package/SVF-doxygen/html/search/classes_15.js +1 -1
  142. package/SVF-doxygen/html/search/classes_2.js +80 -80
  143. package/SVF-doxygen/html/search/classes_3.js +37 -37
  144. package/SVF-doxygen/html/search/classes_4.js +9 -9
  145. package/SVF-doxygen/html/search/classes_5.js +28 -28
  146. package/SVF-doxygen/html/search/classes_6.js +104 -104
  147. package/SVF-doxygen/html/search/classes_7.js +33 -33
  148. package/SVF-doxygen/html/search/classes_8.js +56 -56
  149. package/SVF-doxygen/html/search/classes_9.js +1 -1
  150. package/SVF-doxygen/html/search/classes_a.js +12 -12
  151. package/SVF-doxygen/html/search/classes_b.js +29 -29
  152. package/SVF-doxygen/html/search/classes_c.js +6 -6
  153. package/SVF-doxygen/html/search/classes_d.js +18 -18
  154. package/SVF-doxygen/html/search/classes_e.js +36 -36
  155. package/SVF-doxygen/html/search/classes_f.js +25 -25
  156. package/SVF-doxygen/html/search/defines_0.js +3 -3
  157. package/SVF-doxygen/html/search/defines_1.js +2 -2
  158. package/SVF-doxygen/html/search/defines_2.js +30 -30
  159. package/SVF-doxygen/html/search/defines_3.js +21 -21
  160. package/SVF-doxygen/html/search/defines_4.js +2 -2
  161. package/SVF-doxygen/html/search/defines_5.js +4 -4
  162. package/SVF-doxygen/html/search/defines_6.js +2 -2
  163. package/SVF-doxygen/html/search/defines_7.js +5 -5
  164. package/SVF-doxygen/html/search/defines_8.js +11 -11
  165. package/SVF-doxygen/html/search/defines_9.js +9 -9
  166. package/SVF-doxygen/html/search/defines_a.js +2 -2
  167. package/SVF-doxygen/html/search/defines_b.js +1 -1
  168. package/SVF-doxygen/html/search/defines_c.js +3 -3
  169. package/SVF-doxygen/html/search/defines_d.js +2 -2
  170. package/SVF-doxygen/html/search/defines_e.js +7 -7
  171. package/SVF-doxygen/html/search/defines_f.js +3 -3
  172. package/SVF-doxygen/html/search/enums_0.js +3 -3
  173. package/SVF-doxygen/html/search/enums_1.js +2 -2
  174. package/SVF-doxygen/html/search/enums_10.js +1 -1
  175. package/SVF-doxygen/html/search/enums_11.js +1 -1
  176. package/SVF-doxygen/html/search/enums_2.js +8 -8
  177. package/SVF-doxygen/html/search/enums_3.js +1 -1
  178. package/SVF-doxygen/html/search/enums_4.js +3 -3
  179. package/SVF-doxygen/html/search/enums_5.js +1 -1
  180. package/SVF-doxygen/html/search/enums_6.js +2 -2
  181. package/SVF-doxygen/html/search/enums_7.js +2 -2
  182. package/SVF-doxygen/html/search/enums_8.js +4 -4
  183. package/SVF-doxygen/html/search/enums_9.js +1 -1
  184. package/SVF-doxygen/html/search/enums_a.js +1 -1
  185. package/SVF-doxygen/html/search/enums_b.js +7 -7
  186. package/SVF-doxygen/html/search/enums_c.js +1 -1
  187. package/SVF-doxygen/html/search/enums_d.js +4 -4
  188. package/SVF-doxygen/html/search/enums_e.js +2 -2
  189. package/SVF-doxygen/html/search/enums_f.js +4 -4
  190. package/SVF-doxygen/html/search/enumvalues_0.js +14 -14
  191. package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
  192. package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
  193. package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
  194. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  195. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  196. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  197. package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
  198. package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
  199. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  200. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  201. package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
  202. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  203. package/SVF-doxygen/html/search/enumvalues_7.js +9 -9
  204. package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
  205. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  206. package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
  207. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  208. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  209. package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
  210. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  211. package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
  212. package/SVF-doxygen/html/search/files_0.js +13 -13
  213. package/SVF-doxygen/html/search/files_1.js +7 -7
  214. package/SVF-doxygen/html/search/files_10.js +8 -8
  215. package/SVF-doxygen/html/search/files_11.js +8 -8
  216. package/SVF-doxygen/html/search/files_12.js +2 -2
  217. package/SVF-doxygen/html/search/files_2.js +55 -55
  218. package/SVF-doxygen/html/search/files_3.js +14 -14
  219. package/SVF-doxygen/html/search/files_4.js +5 -5
  220. package/SVF-doxygen/html/search/files_5.js +13 -13
  221. package/SVF-doxygen/html/search/files_6.js +9 -9
  222. package/SVF-doxygen/html/search/files_7.js +14 -14
  223. package/SVF-doxygen/html/search/files_8.js +13 -13
  224. package/SVF-doxygen/html/search/files_9.js +18 -18
  225. package/SVF-doxygen/html/search/files_a.js +3 -3
  226. package/SVF-doxygen/html/search/files_b.js +2 -2
  227. package/SVF-doxygen/html/search/files_c.js +20 -20
  228. package/SVF-doxygen/html/search/files_d.js +4 -4
  229. package/SVF-doxygen/html/search/files_e.js +62 -62
  230. package/SVF-doxygen/html/search/files_f.js +8 -8
  231. package/SVF-doxygen/html/search/functions_0.js +12 -12
  232. package/SVF-doxygen/html/search/functions_1.js +360 -360
  233. package/SVF-doxygen/html/search/functions_10.js +140 -140
  234. package/SVF-doxygen/html/search/functions_11.js +138 -138
  235. package/SVF-doxygen/html/search/functions_12.js +279 -279
  236. package/SVF-doxygen/html/search/functions_13.js +59 -59
  237. package/SVF-doxygen/html/search/functions_14.js +39 -39
  238. package/SVF-doxygen/html/search/functions_15.js +71 -71
  239. package/SVF-doxygen/html/search/functions_16.js +32 -32
  240. package/SVF-doxygen/html/search/functions_17.js +3 -3
  241. package/SVF-doxygen/html/search/functions_18.js +172 -172
  242. package/SVF-doxygen/html/search/functions_2.js +87 -87
  243. package/SVF-doxygen/html/search/functions_3.js +257 -257
  244. package/SVF-doxygen/html/search/functions_4.js +75 -75
  245. package/SVF-doxygen/html/search/functions_5.js +53 -53
  246. package/SVF-doxygen/html/search/functions_6.js +59 -59
  247. package/SVF-doxygen/html/search/functions_7.js +852 -852
  248. package/SVF-doxygen/html/search/functions_8.js +149 -149
  249. package/SVF-doxygen/html/search/functions_9.js +423 -428
  250. package/SVF-doxygen/html/search/functions_a.js +30 -30
  251. package/SVF-doxygen/html/search/functions_b.js +2 -2
  252. package/SVF-doxygen/html/search/functions_c.js +26 -26
  253. package/SVF-doxygen/html/search/functions_d.js +77 -77
  254. package/SVF-doxygen/html/search/functions_e.js +35 -35
  255. package/SVF-doxygen/html/search/functions_f.js +56 -56
  256. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  257. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  258. package/SVF-doxygen/html/search/related_0.js +2 -2
  259. package/SVF-doxygen/html/search/related_1.js +2 -2
  260. package/SVF-doxygen/html/search/related_2.js +2 -2
  261. package/SVF-doxygen/html/search/related_3.js +2 -2
  262. package/SVF-doxygen/html/search/related_4.js +2 -2
  263. package/SVF-doxygen/html/search/related_5.js +1 -1
  264. package/SVF-doxygen/html/search/related_6.js +2 -2
  265. package/SVF-doxygen/html/search/related_7.js +4 -4
  266. package/SVF-doxygen/html/search/related_8.js +2 -2
  267. package/SVF-doxygen/html/search/related_9.js +4 -4
  268. package/SVF-doxygen/html/search/related_a.js +19 -19
  269. package/SVF-doxygen/html/search/related_b.js +4 -4
  270. package/SVF-doxygen/html/search/related_c.js +1 -1
  271. package/SVF-doxygen/html/search/related_d.js +12 -12
  272. package/SVF-doxygen/html/search/related_e.js +2 -2
  273. package/SVF-doxygen/html/search/related_f.js +2 -2
  274. package/SVF-doxygen/html/search/typedefs_0.js +19 -18
  275. package/SVF-doxygen/html/search/typedefs_1.js +26 -26
  276. package/SVF-doxygen/html/search/typedefs_10.js +61 -61
  277. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  278. package/SVF-doxygen/html/search/typedefs_12.js +11 -11
  279. package/SVF-doxygen/html/search/typedefs_13.js +33 -34
  280. package/SVF-doxygen/html/search/typedefs_14.js +8 -8
  281. package/SVF-doxygen/html/search/typedefs_2.js +129 -129
  282. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  283. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  284. package/SVF-doxygen/html/search/typedefs_5.js +41 -41
  285. package/SVF-doxygen/html/search/typedefs_6.js +55 -55
  286. package/SVF-doxygen/html/search/typedefs_7.js +44 -44
  287. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  288. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  289. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  290. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  291. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  292. package/SVF-doxygen/html/search/typedefs_d.js +14 -14
  293. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  294. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  295. package/SVF-doxygen/html/search/variables_0.js +151 -151
  296. package/SVF-doxygen/html/search/variables_1.js +75 -75
  297. package/SVF-doxygen/html/search/variables_10.js +97 -97
  298. package/SVF-doxygen/html/search/variables_11.js +44 -44
  299. package/SVF-doxygen/html/search/variables_12.js +92 -92
  300. package/SVF-doxygen/html/search/variables_13.js +75 -75
  301. package/SVF-doxygen/html/search/variables_14.js +14 -14
  302. package/SVF-doxygen/html/search/variables_15.js +48 -48
  303. package/SVF-doxygen/html/search/variables_16.js +9 -9
  304. package/SVF-doxygen/html/search/variables_17.js +1 -1
  305. package/SVF-doxygen/html/search/variables_18.js +2 -2
  306. package/SVF-doxygen/html/search/variables_2.js +38 -38
  307. package/SVF-doxygen/html/search/variables_3.js +142 -142
  308. package/SVF-doxygen/html/search/variables_4.js +55 -55
  309. package/SVF-doxygen/html/search/variables_5.js +37 -37
  310. package/SVF-doxygen/html/search/variables_6.js +66 -66
  311. package/SVF-doxygen/html/search/variables_7.js +33 -33
  312. package/SVF-doxygen/html/search/variables_8.js +7 -7
  313. package/SVF-doxygen/html/search/variables_9.js +78 -77
  314. package/SVF-doxygen/html/search/variables_a.js +4 -4
  315. package/SVF-doxygen/html/search/variables_b.js +10 -10
  316. package/SVF-doxygen/html/search/variables_c.js +45 -45
  317. package/SVF-doxygen/html/search/variables_d.js +56 -56
  318. package/SVF-doxygen/html/search/variables_e.js +123 -123
  319. package/SVF-doxygen/html/search/variables_f.js +29 -30
  320. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  321. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1AccessPath_01_4.html +9 -9
  322. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1ConsExeState_01_4.html +5 -5
  323. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1ExeState_01_4.html +5 -5
  324. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1IntervalExeState_01_4.html +5 -5
  325. package/SVF-doxygen/html/svf-ex_8cpp.html +17 -17
  326. package/SVF-doxygen/html/svf-ex_8cpp_source.html +17 -17
  327. package/package.json +1 -1
  328. package/svf/include/AbstractExecution/ConsExeState.h +99 -96
  329. package/svf/include/AbstractExecution/ExeState.h +66 -53
  330. package/svf/include/AbstractExecution/IntervalExeState.h +66 -61
  331. package/svf/include/AbstractExecution/SVFIR2ConsExeState.h +7 -7
  332. package/svf/include/AbstractExecution/SVFIR2ItvExeState.h +22 -19
  333. package/svf/include/MemoryModel/AccessPath.h +13 -11
  334. package/svf/include/SVFIR/SVFStatements.h +2 -3
  335. package/svf/lib/AbstractExecution/ConsExeState.cpp +13 -13
  336. package/svf/lib/AbstractExecution/ExeState.cpp +19 -19
  337. package/svf/lib/AbstractExecution/IntervalExeState.cpp +4 -4
  338. package/svf/lib/AbstractExecution/SVFIR2ConsExeState.cpp +38 -37
  339. package/svf/lib/AbstractExecution/SVFIR2ItvExeState.cpp +273 -287
  340. package/svf/lib/MemoryModel/AccessPath.cpp +39 -17
  341. package/svf/lib/SVFIR/SVFFileSystem.cpp +2 -2
@@ -49,9 +49,9 @@ class ExeState
49
49
 
50
50
  public:
51
51
 
52
- typedef AddressValue VAddrs;
53
- typedef Map<u32_t, VAddrs> VarToVAddrs;
54
- /// Execution state kind
52
+ typedef AddressValue Addrs;
53
+ typedef Map<u32_t, Addrs> VarToAddrs;
54
+ /// Execution state type
55
55
  enum ExeState_TYPE
56
56
  {
57
57
  IntervalK, SingleValueK
@@ -64,18 +64,18 @@ public:
64
64
 
65
65
  virtual ~ExeState() = default;
66
66
 
67
- ExeState(const ExeState &rhs) : _varToVAddrs(rhs._varToVAddrs),
68
- _locToVAddrs(rhs._locToVAddrs) {}
67
+ ExeState(const ExeState &rhs) : _varToAddrs(rhs._varToAddrs),
68
+ _locToAddrs(rhs._locToAddrs) {}
69
69
 
70
- ExeState(ExeState &&rhs) noexcept: _varToVAddrs(std::move(rhs._varToVAddrs)),
71
- _locToVAddrs(std::move(rhs._locToVAddrs)) {}
70
+ ExeState(ExeState &&rhs) noexcept: _varToAddrs(std::move(rhs._varToAddrs)),
71
+ _locToAddrs(std::move(rhs._locToAddrs)) {}
72
72
 
73
73
  ExeState &operator=(const ExeState &rhs)
74
74
  {
75
75
  if(*this != rhs)
76
76
  {
77
- _varToVAddrs = rhs._varToVAddrs;
78
- _locToVAddrs = rhs._locToVAddrs;
77
+ _varToAddrs = rhs._varToAddrs;
78
+ _locToAddrs = rhs._locToAddrs;
79
79
  }
80
80
  return *this;
81
81
  }
@@ -84,24 +84,49 @@ public:
84
84
  {
85
85
  if (this != &rhs)
86
86
  {
87
- _varToVAddrs = std::move(rhs._varToVAddrs);
88
- _locToVAddrs = std::move(rhs._locToVAddrs);
87
+ _varToAddrs = std::move(rhs._varToAddrs);
88
+ _locToAddrs = std::move(rhs._locToAddrs);
89
89
  }
90
90
  return *this;
91
91
  }
92
92
 
93
- virtual bool operator==(const ExeState &rhs) const;
94
93
 
95
- inline virtual bool operator!=(const ExeState &rhs) const
94
+ protected:
95
+ VarToAddrs _varToAddrs{{0, getVirtualMemAddress(0)}}; ///< Map a variable (symbol) to its memory addresses
96
+ VarToAddrs _locToAddrs; ///< Map a memory address to its stored memory addresses
97
+
98
+ public:
99
+
100
+ /// get memory addresses of variable
101
+ virtual Addrs &getAddrs(u32_t id)
96
102
  {
97
- return !(*this == rhs);
103
+ return _varToAddrs[id];
98
104
  }
99
105
 
100
- bool equals(const ExeState *other) const
106
+ /// whether the variable is in varToAddrs table
107
+ inline virtual bool inVarToAddrsTable(u32_t id) const
101
108
  {
102
- return false;
109
+ return _varToAddrs.find(id) != _varToAddrs.end();
110
+ }
111
+
112
+ /// whether the memory address stores memory addresses
113
+ inline virtual bool inLocToAddrsTable(u32_t id) const
114
+ {
115
+ return _locToAddrs.find(id) != _locToAddrs.end();
103
116
  }
104
117
 
118
+
119
+ inline virtual const VarToAddrs &getVarToAddrs() const
120
+ {
121
+ return _varToAddrs;
122
+ }
123
+
124
+ inline virtual const VarToAddrs &getLocToAddrs() const
125
+ {
126
+ return _locToAddrs;
127
+ }
128
+
129
+ public:
105
130
  /// Make all value join with the other
106
131
  bool joinWith(const ExeState &other);
107
132
 
@@ -123,44 +148,22 @@ public:
123
148
  return _kind;
124
149
  }
125
150
 
126
- inline virtual const VarToVAddrs &getVarToVAddrs() const
127
- {
128
- return _varToVAddrs;
129
- }
130
-
131
- inline virtual const VarToVAddrs &getLocToVAddrs() const
132
- {
133
- return _locToVAddrs;
134
- }
135
-
136
- inline virtual bool inVarToAddrsTable(u32_t id) const
137
- {
138
- return _varToVAddrs.find(id) != _varToVAddrs.end();
139
- }
140
151
 
141
- inline virtual bool inLocToAddrsTable(u32_t id) const
142
- {
143
- return _locToVAddrs.find(id) != _locToVAddrs.end();
144
- }
145
-
146
- virtual VAddrs &getVAddrs(u32_t id)
147
- {
148
- return _varToVAddrs[id];
149
- }
150
152
 
151
- inline virtual void storeVAddrs(u32_t addr, const VAddrs &vaddrs)
153
+ public:
154
+ inline virtual void storeAddrs(u32_t addr, const Addrs &vaddrs)
152
155
  {
153
156
  assert(isVirtualMemAddress(addr) && "not virtual address?");
154
157
  if(isNullPtr(addr)) return;
155
158
  u32_t objId = getInternalID(addr);
156
- _locToVAddrs[objId] = vaddrs;
159
+ _locToAddrs[objId] = vaddrs;
157
160
  }
158
161
 
159
- inline virtual VAddrs &loadVAddrs(u32_t addr)
162
+ inline virtual Addrs &loadAddrs(u32_t addr)
160
163
  {
161
164
  assert(isVirtualMemAddress(addr) && "not virtual address?");
162
165
  u32_t objId = getInternalID(addr);
163
- return _locToVAddrs[objId];
166
+ return _locToAddrs[objId];
164
167
  }
165
168
 
166
169
  inline bool isNullPtr(u32_t addr)
@@ -168,13 +171,23 @@ public:
168
171
  return getInternalID(addr) == 0;
169
172
  }
170
173
 
171
- protected:
172
- VarToVAddrs _varToVAddrs{{0, getVirtualMemAddress(0)}};
173
- VarToVAddrs _locToVAddrs;
174
+ public:
175
+
176
+ virtual bool operator==(const ExeState &rhs) const;
177
+
178
+ inline virtual bool operator!=(const ExeState &rhs) const
179
+ {
180
+ return !(*this == rhs);
181
+ }
182
+
183
+ bool equals(const ExeState *other) const
184
+ {
185
+ return false;
186
+ }
174
187
 
175
188
  protected:
176
189
 
177
- static bool eqVarToVAddrs(const VarToVAddrs &lhs, const VarToVAddrs &rhs)
190
+ static bool eqVarToAddrs(const VarToAddrs &lhs, const VarToAddrs &rhs)
178
191
  {
179
192
  if (lhs.size() != rhs.size()) return false;
180
193
  for (const auto &item: lhs)
@@ -195,14 +208,14 @@ public:
195
208
  virtual std::string varToAddrs(u32_t varId) const
196
209
  {
197
210
  std::stringstream exprName;
198
- auto it = _varToVAddrs.find(varId);
199
- if (it == _varToVAddrs.end())
211
+ auto it = _varToAddrs.find(varId);
212
+ if (it == _varToAddrs.end())
200
213
  {
201
214
  exprName << "Var not in varToAddrs!\n";
202
215
  }
203
216
  else
204
217
  {
205
- const VAddrs &vaddrs = it->second;
218
+ const Addrs &vaddrs = it->second;
206
219
  if (vaddrs.size() == 1)
207
220
  {
208
221
  exprName << "addr: {" << std::dec << getInternalID(*vaddrs.begin()) << "}\n";
@@ -223,14 +236,14 @@ public:
223
236
  virtual std::string locToAddrs(u32_t objId) const
224
237
  {
225
238
  std::stringstream exprName;
226
- auto it = _locToVAddrs.find(objId);
227
- if (it == _locToVAddrs.end())
239
+ auto it = _locToAddrs.find(objId);
240
+ if (it == _locToAddrs.end())
228
241
  {
229
242
  exprName << "Var not in varToAddrs!\n";
230
243
  }
231
244
  else
232
245
  {
233
- const VAddrs &vaddrs = it->second;
246
+ const Addrs &vaddrs = it->second;
234
247
  if (vaddrs.size() == 1)
235
248
  {
236
249
  exprName << "addr: {" << std::dec << getInternalID(*vaddrs.begin()) << "}\n";
@@ -63,18 +63,10 @@ public:
63
63
 
64
64
  static IntervalExeState globalES;
65
65
 
66
- protected:
67
- /// key: nodeID value: Domain Value
68
- VarToValMap _varToItvVal;
69
- /// key: nodeID value: Domain Value
70
- LocToValMap _locToItvVal;
71
-
72
-
73
66
  public:
74
- /// default constructor, default pc is true
67
+ /// default constructor
75
68
  IntervalExeState() : ExeState(ExeState::IntervalK) {}
76
69
 
77
- /// set path constraints, val2val and loc2val map
78
70
  IntervalExeState(VarToValMap &_varToValMap, LocToValMap &_locToValMap) : ExeState(ExeState::IntervalK),
79
71
  _varToItvVal(_varToValMap),
80
72
  _locToItvVal(_locToValMap) {}
@@ -86,7 +78,9 @@ public:
86
78
 
87
79
  }
88
80
 
89
- /// check two interval exe state are equal or not. _varToItvVal and _locToItvVal map should be equivalent
81
+ virtual ~IntervalExeState() = default;
82
+
83
+
90
84
  IntervalExeState &operator=(const IntervalExeState &rhs)
91
85
  {
92
86
  if (rhs != *this)
@@ -151,54 +145,63 @@ public:
151
145
  return inv;
152
146
  }
153
147
 
154
- VAddrs &getVAddrs(u32_t id) override
148
+ protected:
149
+
150
+ VarToValMap _varToItvVal; ///< Map a variable (symbol) to its interval value
151
+ LocToValMap _locToItvVal; ///< Map a memory address to its stored interval value
152
+
153
+ public:
154
+
155
+ /// get memory addresses of variable
156
+ Addrs &getAddrs(u32_t id) override
155
157
  {
156
- auto it = _varToVAddrs.find(id);
157
- if (it != _varToVAddrs.end())
158
+ auto it = _varToAddrs.find(id);
159
+ if (it != _varToAddrs.end())
158
160
  return it->second;
159
161
  else
160
- return globalES._varToVAddrs[id];
162
+ return globalES._varToAddrs[id];
161
163
  }
162
164
 
163
- inline bool inVarToIValTable(u32_t id) const
165
+ /// get interval value of variable
166
+ inline IntervalValue &operator[](u32_t varId)
164
167
  {
165
- return _varToItvVal.find(id) != _varToItvVal.end() ||
166
- globalES._varToItvVal.find(id) != globalES._varToItvVal.end();
168
+ auto localIt = _varToItvVal.find(varId);
169
+ if(localIt != _varToItvVal.end())
170
+ return localIt->second;
171
+ else
172
+ {
173
+ return globalES._varToItvVal[varId];
174
+ }
167
175
  }
168
176
 
177
+ /// whether the variable is in varToAddrs table
169
178
  inline bool inVarToAddrsTable(u32_t id) const override
170
179
  {
171
- return _varToVAddrs.find(id) != _varToVAddrs.end() ||
172
- globalES._varToVAddrs.find(id) != globalES._varToVAddrs.end();
180
+ return _varToAddrs.find(id) != _varToAddrs.end() ||
181
+ globalES._varToAddrs.find(id) != globalES._varToAddrs.end();
173
182
  }
174
183
 
175
- inline bool inLocToIValTable(u32_t id) const
184
+ /// whether the variable is in varToVal table
185
+ inline bool inVarToValTable(u32_t id) const
176
186
  {
177
- return _locToItvVal.find(id) != _locToItvVal.end() ||
178
- globalES._locToItvVal.find(id) != globalES._locToItvVal.end();
179
- }
180
-
181
- inline bool inLocalLocToIValTable(u32_t id) const
182
- {
183
- return _locToItvVal.find(id) != _locToItvVal.end();
187
+ return _varToItvVal.find(id) != _varToItvVal.end() ||
188
+ globalES._varToItvVal.find(id) != globalES._varToItvVal.end();
184
189
  }
185
190
 
191
+ /// whether the memory address stores memory addresses
186
192
  inline bool inLocToAddrsTable(u32_t id) const override
187
193
  {
188
- return _locToVAddrs.find(id) != _locToVAddrs.end() ||
189
- globalES._locToVAddrs.find(id) != globalES._locToVAddrs.end();
194
+ return _locToAddrs.find(id) != _locToAddrs.end() ||
195
+ globalES._locToAddrs.find(id) != globalES._locToAddrs.end();
190
196
  }
191
197
 
192
- inline bool inLocalLocToAddrsTable(u32_t id) const
198
+ /// whether the memory address stores interval value
199
+ inline bool inLocToValTable(u32_t id) const
193
200
  {
194
- return _locToVAddrs.find(id) != _locToVAddrs.end();
201
+ return _locToItvVal.find(id) != _locToItvVal.end() ||
202
+ globalES._locToItvVal.find(id) != globalES._locToItvVal.end();
195
203
  }
196
204
 
197
- bool equals(const IntervalExeState &other) const;
198
-
199
- virtual ~IntervalExeState() = default;
200
-
201
-
202
205
  /// get var2val map
203
206
  const VarToValMap &getVarToVal() const
204
207
  {
@@ -211,18 +214,18 @@ public:
211
214
  return _locToItvVal;
212
215
  }
213
216
 
214
- /// [], call getValueExpr()
215
- inline IntervalValue &operator[](u32_t varId)
217
+ inline bool inLocalLocToValTable(u32_t id) const
216
218
  {
217
- auto localIt = _varToItvVal.find(varId);
218
- if(localIt != _varToItvVal.end())
219
- return localIt->second;
220
- else
221
- {
222
- return globalES._varToItvVal[varId];
223
- }
219
+ return _locToItvVal.find(id) != _locToItvVal.end();
224
220
  }
225
221
 
222
+ inline bool inLocalLocToAddrsTable(u32_t id) const
223
+ {
224
+ return _locToAddrs.find(id) != _locToAddrs.end();
225
+ }
226
+
227
+ public:
228
+
226
229
  inline void cpyItvToLocal(u32_t varId)
227
230
  {
228
231
  auto localIt = _varToItvVal.find(varId);
@@ -319,24 +322,24 @@ public:
319
322
  }
320
323
  }
321
324
 
322
- inline VAddrs &loadVAddrs(u32_t addr) override
325
+ inline Addrs &loadAddrs(u32_t addr) override
323
326
  {
324
327
  assert(isVirtualMemAddress(addr) && "not virtual address?");
325
328
  u32_t objId = getInternalID(addr);
326
- auto it = _locToVAddrs.find(objId);
327
- if(it != _locToVAddrs.end())
329
+ auto it = _locToAddrs.find(objId);
330
+ if(it != _locToAddrs.end())
328
331
  return it->second;
329
332
  else
330
333
  {
331
- auto globIt = globalES._locToVAddrs.find(objId);
332
- if(globIt != globalES._locToVAddrs.end())
334
+ auto globIt = globalES._locToAddrs.find(objId);
335
+ if(globIt != globalES._locToAddrs.end())
333
336
  return globIt->second;
334
337
  else
335
- return _locToVAddrs[objId];
338
+ return _locToAddrs[objId];
336
339
  }
337
340
  }
338
341
 
339
- inline IntervalValue& getLocToItv(u32_t id)
342
+ inline IntervalValue& getLocToVal(u32_t id)
340
343
  {
341
344
  auto it = _locToItvVal.find(id);
342
345
  if(it != _locToItvVal.end())
@@ -351,18 +354,18 @@ public:
351
354
  }
352
355
  }
353
356
 
354
- inline VAddrs& getLocVAddrs(u32_t id)
357
+ inline Addrs& getLocAddrs(u32_t id)
355
358
  {
356
- auto it = _locToVAddrs.find(id);
357
- if(it != _locToVAddrs.end())
359
+ auto it = _locToAddrs.find(id);
360
+ if(it != _locToAddrs.end())
358
361
  return it->second;
359
362
  else
360
363
  {
361
- auto globIt = globalES._locToVAddrs.find(id);
362
- if(globIt != globalES._locToVAddrs.end())
364
+ auto globIt = globalES._locToAddrs.find(id);
365
+ if(globIt != globalES._locToAddrs.end())
363
366
  return globIt->second;
364
367
  else
365
- return _locToVAddrs[id];
368
+ return _locToAddrs[id];
366
369
  }
367
370
  }
368
371
 
@@ -374,6 +377,8 @@ public:
374
377
  return "";
375
378
  }
376
379
 
380
+ bool equals(const IntervalExeState &other) const;
381
+
377
382
  static bool eqVarToValMap(const VarToValMap &lhs, const VarToValMap &rhs)
378
383
  {
379
384
  if (lhs.size() != rhs.size()) return false;
@@ -446,15 +451,15 @@ public:
446
451
  {
447
452
  _locToItvVal.clear();
448
453
  _varToItvVal.clear();
449
- _locToVAddrs.clear();
450
- _varToVAddrs.clear();
454
+ _locToAddrs.clear();
455
+ _varToAddrs.clear();
451
456
  }
452
457
 
453
458
 
454
459
  private:
455
460
  void printTable(const VarToValMap &table, std::ostream &oss) const;
456
461
 
457
- void printTable(const VarToVAddrs &table, std::ostream &oss) const;
462
+ void printTable(const VarToAddrs &table, std::ostream &oss) const;
458
463
  };
459
464
  }
460
465
 
@@ -35,7 +35,7 @@ namespace SVF
35
35
  class SVFIR2ConsExeState
36
36
  {
37
37
  public:
38
- typedef ExeState::VAddrs VAddrs;
38
+ typedef ExeState::Addrs Addrs;
39
39
 
40
40
  SVFIR2ConsExeState() = default;
41
41
 
@@ -89,7 +89,7 @@ public:
89
89
  //%}
90
90
 
91
91
  /// Return the expr of gep object given a base and offset
92
- VAddrs getGepObjAddress(u32_t base, s32_t offset);
92
+ Addrs getGepObjAddress(u32_t base, s32_t offset);
93
93
 
94
94
  /// Return the offset expression of a GepStmt
95
95
  std::pair<s32_t, s32_t> getGepOffset(const GepStmt *gep);
@@ -123,17 +123,17 @@ public:
123
123
 
124
124
  inline bool inVarToValTable(u32_t id) const
125
125
  {
126
- return _es->inVarToVal(id);
126
+ return _es->inVarToValTable(id);
127
127
  }
128
128
 
129
- inline bool inLocToValTable(u32_t id) const
129
+ inline bool inVarToAddrsTable(u32_t id) const
130
130
  {
131
- return _es->inLocToVal(id);
131
+ return _es->inVarToAddrsTable(id);
132
132
  }
133
133
 
134
- inline bool inVarToAddrsTable(u32_t id) const
134
+ inline bool inLocToValTable(u32_t id) const
135
135
  {
136
- return _es->inVarToAddrsTable(id);
136
+ return _es->inLocToValTable(id);
137
137
  }
138
138
 
139
139
  inline bool inLocToAddrsTable(u32_t id) const
@@ -41,8 +41,8 @@ namespace SVF
41
41
  class SVFIR2ItvExeState
42
42
  {
43
43
  public:
44
- typedef ExeState::VAddrs VAddrs;
45
- static VAddrs globalNullVaddrs;
44
+ typedef ExeState::Addrs Addrs;
45
+ static Addrs globalNulladdrs;
46
46
  public:
47
47
  SVFIR2ItvExeState(SVFIR *ir) : _svfir(ir) {}
48
48
 
@@ -66,18 +66,15 @@ public:
66
66
  return _relEs;
67
67
  }
68
68
 
69
- void widenVAddrs(IntervalExeState &lhs, const IntervalExeState &rhs);
69
+ void widenAddrs(IntervalExeState &lhs, const IntervalExeState &rhs);
70
70
 
71
- void narrowVAddrs(IntervalExeState &lhs, const IntervalExeState &rhs);
71
+ void narrowAddrs(IntervalExeState &lhs, const IntervalExeState &rhs);
72
72
 
73
73
  /// Return the field address given a pointer points to a struct object and an offset
74
- VAddrs getGepObjAddress(u32_t pointer, APOffset offset);
74
+ Addrs getGepObjAddress(u32_t pointer, APOffset offset);
75
75
 
76
- /// Return the byte offset from one gep param offset
77
- IntervalValue getByteOffsetfromGepTypePair(const AccessPath::IdxVarAndGepTypePair& gep_pair, const GepStmt *gep);
78
-
79
- /// Return the Index offset from one gep param offset
80
- IntervalValue getItvOfFlattenedElemIndexFromGepTypePair(const AccessPath::IdxVarAndGepTypePair& gep_pair, const GepStmt *gep);
76
+ /// Return the value range of Integer SVF Type, e.g. unsigned i8 Type->[0, 255], signed i8 Type->[-128, 127]
77
+ IntervalValue getRangeLimitFromType(const SVFType* type);
81
78
 
82
79
  /// Return the byte offset expression of a GepStmt
83
80
  /// elemBytesize is the element byte size of an static alloc or heap alloc array
@@ -106,29 +103,35 @@ public:
106
103
  /// Init SVFVar
107
104
  void initSVFVar(u32_t varId);
108
105
 
109
- inline VAddrs &getVAddrs(u32_t id)
106
+ inline Addrs &getAddrs(u32_t id)
110
107
  {
111
108
  if (inVarToAddrsTable(id))
112
- return _es.getVAddrs(id);
109
+ return _es.getAddrs(id);
113
110
  else
114
- return globalNullVaddrs;
111
+ return globalNulladdrs;
115
112
  }
116
113
 
117
- inline bool inVarToIValTable(u32_t id) const
118
- {
119
- return _es.inVarToIValTable(id);
120
- }
121
114
 
122
- inline bool inLocToIValTable(u32_t id) const
115
+ /// whether the variable is in varToVal table
116
+ inline bool inVarToValTable(u32_t id) const
123
117
  {
124
- return _es.inLocToIValTable(id);
118
+ return _es.inVarToValTable(id);
125
119
  }
126
120
 
121
+ /// whether the variable is in varToAddrs table
127
122
  inline bool inVarToAddrsTable(u32_t id) const
128
123
  {
129
124
  return _es.inVarToAddrsTable(id);
130
125
  }
131
126
 
127
+
128
+ /// whether the memory address stores a interval value
129
+ inline bool inLocToValTable(u32_t id) const
130
+ {
131
+ return _es.inLocToValTable(id);
132
+ }
133
+
134
+ /// whether the memory address stores memory addresses
132
135
  inline bool inLocToAddrsTable(u32_t id) const
133
136
  {
134
137
  return _es.inLocToAddrsTable(id);
@@ -61,8 +61,8 @@ public:
61
61
  NonOverlap, Overlap, Subset, Superset, Same
62
62
  };
63
63
 
64
- typedef std::pair<const SVFVar*, const SVFType*> IdxVarAndGepTypePair;
65
- typedef std::vector<IdxVarAndGepTypePair> IdxVarAndGepTypePairs;
64
+ typedef std::pair<const SVFVar*, const SVFType*> IdxOperandPair;
65
+ typedef std::vector<IdxOperandPair> IdxOperandPairs;
66
66
 
67
67
  /// Constructor
68
68
  AccessPath(APOffset o = 0) : fldIdx(o) {}
@@ -70,7 +70,7 @@ public:
70
70
  /// Copy Constructor
71
71
  AccessPath(const AccessPath& ap)
72
72
  : fldIdx(ap.fldIdx),
73
- offsetVarAndGepTypePairs(ap.getOffsetVarAndGepTypePairVec())
73
+ idxOperandPairs(ap.getIdxOperandPairVec())
74
74
  {
75
75
  }
76
76
 
@@ -83,13 +83,13 @@ public:
83
83
  inline const AccessPath& operator=(const AccessPath& rhs)
84
84
  {
85
85
  fldIdx = rhs.fldIdx;
86
- offsetVarAndGepTypePairs = rhs.getOffsetVarAndGepTypePairVec();
86
+ idxOperandPairs = rhs.getIdxOperandPairVec();
87
87
  return *this;
88
88
  }
89
89
  inline bool operator==(const AccessPath& rhs) const
90
90
  {
91
91
  return this->fldIdx == rhs.fldIdx &&
92
- this->offsetVarAndGepTypePairs == rhs.offsetVarAndGepTypePairs;
92
+ this->idxOperandPairs == rhs.idxOperandPairs;
93
93
  }
94
94
  //@}
95
95
 
@@ -103,9 +103,9 @@ public:
103
103
  {
104
104
  fldIdx = idx;
105
105
  }
106
- inline const IdxVarAndGepTypePairs& getOffsetVarAndGepTypePairVec() const
106
+ inline const IdxOperandPairs& getIdxOperandPairVec() const
107
107
  {
108
- return offsetVarAndGepTypePairs;
108
+ return idxOperandPairs;
109
109
  }
110
110
  //@}
111
111
 
@@ -151,6 +151,9 @@ public:
151
151
  return computeAllLocations().intersects(RHS.computeAllLocations());
152
152
  }
153
153
 
154
+ /// Return byte offset from the beginning of the structure to the field where it is located for struct type
155
+ u32_t getStructFieldOffset(const SVFVar* idxOperandVar, const SVFStructType* idxOperandType) const;
156
+
154
157
  /// Dump location set
155
158
  std::string dump() const;
156
159
 
@@ -163,8 +166,7 @@ private:
163
166
  NodeBS computeAllLocations() const;
164
167
 
165
168
  APOffset fldIdx; ///< Accumulated Constant Offsets
166
- IdxVarAndGepTypePairs
167
- offsetVarAndGepTypePairs; ///< a vector of actual offset in the form of <SVF Var, iterator type>s
169
+ IdxOperandPairs idxOperandPairs; ///< a vector of actual offset in the form of <SVF Var, iterator type>
168
170
  };
169
171
 
170
172
  } // End namespace SVF
@@ -174,9 +176,9 @@ template <> struct std::hash<SVF::AccessPath>
174
176
  size_t operator()(const SVF::AccessPath &ap) const
175
177
  {
176
178
  SVF::Hash<std::pair<SVF::NodeID, SVF::NodeID>> h;
177
- std::hash<SVF::AccessPath::IdxVarAndGepTypePairs> v;
179
+ std::hash<SVF::AccessPath::IdxOperandPairs> v;
178
180
  return h(std::make_pair(ap.getConstantFieldIdx(),
179
- v(ap.getOffsetVarAndGepTypePairVec())));
181
+ v(ap.getIdxOperandPairVec())));
180
182
  }
181
183
  };
182
184
 
@@ -492,10 +492,9 @@ public:
492
492
  {
493
493
  return ap;
494
494
  }
495
- inline const AccessPath::IdxVarAndGepTypePairs
496
- getOffsetVarAndGepTypePairVec() const
495
+ inline const AccessPath::IdxOperandPairs getOffsetVarAndGepTypePairVec() const
497
496
  {
498
- return getAccessPath().getOffsetVarAndGepTypePairVec();
497
+ return getAccessPath().getIdxOperandPairVec();
499
498
  }
500
499
  /// Return TRUE if this is a constant location set.
501
500
  inline bool isConstantOffset() const