svf-tools 1.0.838 → 1.0.839

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 (317) hide show
  1. package/SVF-doxygen/html/CFLSVFGBuilder_8cpp.html +86 -0
  2. package/SVF-doxygen/html/CFLSVFGBuilder_8cpp_source.html +195 -0
  3. package/SVF-doxygen/html/CFLSVFGBuilder_8h.html +98 -0
  4. package/SVF-doxygen/html/CFLSVFGBuilder_8h_source.html +148 -0
  5. package/SVF-doxygen/html/CFLVF_8h.html +1 -1
  6. package/SVF-doxygen/html/CFLVF_8h_source.html +5 -5
  7. package/SVF-doxygen/html/DDAStat_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/DDAVFSolver_8h_source.html +1 -1
  9. package/SVF-doxygen/html/DoubleFreeChecker_8cpp_source.html +4 -4
  10. package/SVF-doxygen/html/DoubleFreeChecker_8h_source.html +1 -1
  11. package/SVF-doxygen/html/FileChecker_8cpp_source.html +2 -2
  12. package/SVF-doxygen/html/FileChecker_8h_source.html +1 -1
  13. package/SVF-doxygen/html/LeakChecker_8cpp_source.html +2 -2
  14. package/SVF-doxygen/html/LeakChecker_8h_source.html +1 -1
  15. package/SVF-doxygen/html/ProgSlice_8cpp_source.html +170 -136
  16. package/SVF-doxygen/html/ProgSlice_8h_source.html +314 -298
  17. package/SVF-doxygen/html/SVFGOPT_8h_source.html +5 -5
  18. package/SVF-doxygen/html/SVFGReadWrite_8cpp_source.html +2 -2
  19. package/SVF-doxygen/html/SVFG_8cpp_source.html +29 -29
  20. package/SVF-doxygen/html/SVFG_8h_source.html +446 -444
  21. package/SVF-doxygen/html/SaberCondAllocator_8cpp_source.html +1 -1
  22. package/SVF-doxygen/html/SaberCondAllocator_8h_source.html +246 -235
  23. package/SVF-doxygen/html/SaberSVFGBuilder_8cpp.html +1 -0
  24. package/SVF-doxygen/html/SaberSVFGBuilder_8cpp_source.html +271 -265
  25. package/SVF-doxygen/html/SaberSVFGBuilder_8h_source.html +75 -62
  26. package/SVF-doxygen/html/SrcSnkDDA_8cpp_source.html +257 -256
  27. package/SVF-doxygen/html/SrcSnkDDA_8h_source.html +18 -18
  28. package/SVF-doxygen/html/VersionedFlowSensitive_8cpp_source.html +3 -3
  29. package/SVF-doxygen/html/WPAPass_8cpp_source.html +1 -1
  30. package/SVF-doxygen/html/annotated.html +377 -376
  31. package/SVF-doxygen/html/classSVF_1_1CFLSVFGBuilder-members.html +121 -0
  32. package/SVF-doxygen/html/classSVF_1_1CFLSVFGBuilder.html +473 -0
  33. package/SVF-doxygen/html/classSVF_1_1CFLSVFGBuilder.png +0 -0
  34. package/SVF-doxygen/html/classSVF_1_1CFLVF-members.html +1 -1
  35. package/SVF-doxygen/html/classSVF_1_1CFLVF.html +7 -7
  36. package/SVF-doxygen/html/classSVF_1_1DDAStat.html +1 -1
  37. package/SVF-doxygen/html/classSVF_1_1DDAVFSolver.html +1 -1
  38. package/SVF-doxygen/html/classSVF_1_1DoubleFreeChecker.html +5 -5
  39. package/SVF-doxygen/html/classSVF_1_1FileChecker.html +3 -3
  40. package/SVF-doxygen/html/classSVF_1_1FlowSensitive.html +1 -1
  41. package/SVF-doxygen/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  42. package/SVF-doxygen/html/classSVF_1_1LeakChecker.html +5 -5
  43. package/SVF-doxygen/html/classSVF_1_1ProgSlice-members.html +25 -22
  44. package/SVF-doxygen/html/classSVF_1_1ProgSlice.html +493 -366
  45. package/SVF-doxygen/html/classSVF_1_1SVFG-members.html +182 -181
  46. package/SVF-doxygen/html/classSVF_1_1SVFG.html +324 -298
  47. package/SVF-doxygen/html/classSVF_1_1SVFGBuilder.html +2 -1
  48. package/SVF-doxygen/html/classSVF_1_1SVFGBuilder.png +0 -0
  49. package/SVF-doxygen/html/classSVF_1_1SVFGOPT.html +7 -7
  50. package/SVF-doxygen/html/classSVF_1_1SaberCondAllocator-members.html +22 -19
  51. package/SVF-doxygen/html/classSVF_1_1SaberCondAllocator.html +238 -159
  52. package/SVF-doxygen/html/classSVF_1_1SaberSVFGBuilder-members.html +11 -9
  53. package/SVF-doxygen/html/classSVF_1_1SaberSVFGBuilder.html +347 -285
  54. package/SVF-doxygen/html/classSVF_1_1SaberSVFGBuilder.png +0 -0
  55. package/SVF-doxygen/html/classSVF_1_1SrcSnkDDA.html +259 -257
  56. package/SVF-doxygen/html/classSVF_1_1VersionedFlowSensitive.html +3 -3
  57. package/SVF-doxygen/html/classSVF_1_1WPAPass.html +1 -1
  58. package/SVF-doxygen/html/classes.html +95 -94
  59. package/SVF-doxygen/html/dir_1b8e404556d3e8597ae60437f0a084bf.html +2 -0
  60. package/SVF-doxygen/html/dir_8a9c8659eb68b9cbd3fead4690588a47.html +2 -0
  61. package/SVF-doxygen/html/files.html +6 -4
  62. package/SVF-doxygen/html/functions_b.html +4 -3
  63. package/SVF-doxygen/html/functions_c.html +38 -29
  64. package/SVF-doxygen/html/functions_f.html +6 -6
  65. package/SVF-doxygen/html/functions_func_b.html +3 -2
  66. package/SVF-doxygen/html/functions_func_c.html +29 -23
  67. package/SVF-doxygen/html/functions_func_g.html +14 -10
  68. package/SVF-doxygen/html/functions_func_i.html +1 -1
  69. package/SVF-doxygen/html/functions_func_r.html +6 -5
  70. package/SVF-doxygen/html/functions_func_s.html +20 -17
  71. package/SVF-doxygen/html/functions_func_~.html +3 -0
  72. package/SVF-doxygen/html/functions_g.html +10 -6
  73. package/SVF-doxygen/html/functions_i.html +5 -5
  74. package/SVF-doxygen/html/functions_m.html +1 -1
  75. package/SVF-doxygen/html/functions_n.html +8 -7
  76. package/SVF-doxygen/html/functions_p.html +15 -15
  77. package/SVF-doxygen/html/functions_r.html +12 -6
  78. package/SVF-doxygen/html/functions_rela_c.html +3 -0
  79. package/SVF-doxygen/html/functions_s.html +22 -11
  80. package/SVF-doxygen/html/functions_t.html +7 -7
  81. package/SVF-doxygen/html/functions_type_n.html +2 -1
  82. package/SVF-doxygen/html/functions_type_s.html +6 -1
  83. package/SVF-doxygen/html/functions_type_w.html +1 -0
  84. package/SVF-doxygen/html/functions_v.html +4 -6
  85. package/SVF-doxygen/html/functions_vars_m.html +1 -1
  86. package/SVF-doxygen/html/functions_vars_r.html +3 -0
  87. package/SVF-doxygen/html/functions_vars_s.html +2 -1
  88. package/SVF-doxygen/html/functions_w.html +4 -3
  89. package/SVF-doxygen/html/functions_~.html +3 -0
  90. package/SVF-doxygen/html/hierarchy.html +2 -1
  91. package/SVF-doxygen/html/namespaceSVF.html +2 -0
  92. package/SVF-doxygen/html/search/all_10.js +325 -325
  93. package/SVF-doxygen/html/search/all_11.js +224 -223
  94. package/SVF-doxygen/html/search/all_12.js +553 -551
  95. package/SVF-doxygen/html/search/all_13.js +190 -190
  96. package/SVF-doxygen/html/search/all_14.js +67 -67
  97. package/SVF-doxygen/html/search/all_15.js +167 -167
  98. package/SVF-doxygen/html/search/all_16.js +63 -63
  99. package/SVF-doxygen/html/search/all_17.js +1 -1
  100. package/SVF-doxygen/html/search/all_18.js +1 -1
  101. package/SVF-doxygen/html/search/all_19.js +11 -11
  102. package/SVF-doxygen/html/search/all_1a.js +173 -172
  103. package/SVF-doxygen/html/search/all_2.js +1 -1
  104. package/SVF-doxygen/html/search/all_3.js +466 -462
  105. package/SVF-doxygen/html/search/all_4.js +230 -230
  106. package/SVF-doxygen/html/search/all_5.js +119 -119
  107. package/SVF-doxygen/html/search/all_6.js +226 -226
  108. package/SVF-doxygen/html/search/all_7.js +1047 -1046
  109. package/SVF-doxygen/html/search/all_8.js +198 -198
  110. package/SVF-doxygen/html/search/all_9.js +608 -608
  111. package/SVF-doxygen/html/search/all_a.js +46 -46
  112. package/SVF-doxygen/html/search/all_b.js +26 -26
  113. package/SVF-doxygen/html/search/all_c.js +115 -115
  114. package/SVF-doxygen/html/search/all_d.js +197 -197
  115. package/SVF-doxygen/html/search/all_e.js +207 -207
  116. package/SVF-doxygen/html/search/all_f.js +116 -116
  117. package/SVF-doxygen/html/search/classes_0.js +26 -26
  118. package/SVF-doxygen/html/search/classes_1.js +9 -9
  119. package/SVF-doxygen/html/search/classes_10.js +73 -73
  120. package/SVF-doxygen/html/search/classes_11.js +15 -15
  121. package/SVF-doxygen/html/search/classes_12.js +2 -2
  122. package/SVF-doxygen/html/search/classes_13.js +10 -10
  123. package/SVF-doxygen/html/search/classes_14.js +14 -14
  124. package/SVF-doxygen/html/search/classes_15.js +1 -1
  125. package/SVF-doxygen/html/search/classes_2.js +81 -80
  126. package/SVF-doxygen/html/search/classes_3.js +37 -37
  127. package/SVF-doxygen/html/search/classes_4.js +9 -9
  128. package/SVF-doxygen/html/search/classes_5.js +28 -28
  129. package/SVF-doxygen/html/search/classes_6.js +104 -104
  130. package/SVF-doxygen/html/search/classes_7.js +34 -34
  131. package/SVF-doxygen/html/search/classes_8.js +56 -56
  132. package/SVF-doxygen/html/search/classes_9.js +1 -1
  133. package/SVF-doxygen/html/search/classes_a.js +12 -12
  134. package/SVF-doxygen/html/search/classes_b.js +29 -29
  135. package/SVF-doxygen/html/search/classes_c.js +6 -6
  136. package/SVF-doxygen/html/search/classes_d.js +18 -18
  137. package/SVF-doxygen/html/search/classes_e.js +36 -36
  138. package/SVF-doxygen/html/search/classes_f.js +25 -25
  139. package/SVF-doxygen/html/search/defines_0.js +3 -3
  140. package/SVF-doxygen/html/search/defines_1.js +2 -2
  141. package/SVF-doxygen/html/search/defines_2.js +30 -30
  142. package/SVF-doxygen/html/search/defines_3.js +20 -20
  143. package/SVF-doxygen/html/search/defines_4.js +2 -2
  144. package/SVF-doxygen/html/search/defines_5.js +4 -4
  145. package/SVF-doxygen/html/search/defines_6.js +2 -2
  146. package/SVF-doxygen/html/search/defines_7.js +5 -5
  147. package/SVF-doxygen/html/search/defines_8.js +11 -11
  148. package/SVF-doxygen/html/search/defines_9.js +9 -9
  149. package/SVF-doxygen/html/search/defines_a.js +2 -2
  150. package/SVF-doxygen/html/search/defines_b.js +1 -1
  151. package/SVF-doxygen/html/search/defines_c.js +3 -3
  152. package/SVF-doxygen/html/search/defines_d.js +2 -2
  153. package/SVF-doxygen/html/search/defines_e.js +7 -7
  154. package/SVF-doxygen/html/search/defines_f.js +3 -3
  155. package/SVF-doxygen/html/search/enums_0.js +3 -3
  156. package/SVF-doxygen/html/search/enums_1.js +2 -2
  157. package/SVF-doxygen/html/search/enums_10.js +1 -1
  158. package/SVF-doxygen/html/search/enums_11.js +1 -1
  159. package/SVF-doxygen/html/search/enums_2.js +8 -8
  160. package/SVF-doxygen/html/search/enums_3.js +1 -1
  161. package/SVF-doxygen/html/search/enums_4.js +3 -3
  162. package/SVF-doxygen/html/search/enums_5.js +1 -1
  163. package/SVF-doxygen/html/search/enums_6.js +2 -2
  164. package/SVF-doxygen/html/search/enums_7.js +2 -2
  165. package/SVF-doxygen/html/search/enums_8.js +4 -4
  166. package/SVF-doxygen/html/search/enums_9.js +1 -1
  167. package/SVF-doxygen/html/search/enums_a.js +1 -1
  168. package/SVF-doxygen/html/search/enums_b.js +7 -7
  169. package/SVF-doxygen/html/search/enums_c.js +1 -1
  170. package/SVF-doxygen/html/search/enums_d.js +4 -4
  171. package/SVF-doxygen/html/search/enums_e.js +2 -2
  172. package/SVF-doxygen/html/search/enums_f.js +4 -4
  173. package/SVF-doxygen/html/search/enumvalues_0.js +14 -14
  174. package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
  175. package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
  176. package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
  177. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  178. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  179. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  180. package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
  181. package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
  182. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  183. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  184. package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
  185. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  186. package/SVF-doxygen/html/search/enumvalues_7.js +9 -9
  187. package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
  188. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  189. package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
  190. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  191. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  192. package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
  193. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  194. package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
  195. package/SVF-doxygen/html/search/files_0.js +13 -13
  196. package/SVF-doxygen/html/search/files_1.js +7 -7
  197. package/SVF-doxygen/html/search/files_10.js +8 -8
  198. package/SVF-doxygen/html/search/files_11.js +8 -8
  199. package/SVF-doxygen/html/search/files_12.js +2 -2
  200. package/SVF-doxygen/html/search/files_2.js +57 -55
  201. package/SVF-doxygen/html/search/files_3.js +14 -14
  202. package/SVF-doxygen/html/search/files_4.js +5 -5
  203. package/SVF-doxygen/html/search/files_5.js +13 -13
  204. package/SVF-doxygen/html/search/files_6.js +9 -9
  205. package/SVF-doxygen/html/search/files_7.js +14 -14
  206. package/SVF-doxygen/html/search/files_8.js +13 -13
  207. package/SVF-doxygen/html/search/files_9.js +18 -18
  208. package/SVF-doxygen/html/search/files_a.js +3 -3
  209. package/SVF-doxygen/html/search/files_b.js +2 -2
  210. package/SVF-doxygen/html/search/files_c.js +20 -20
  211. package/SVF-doxygen/html/search/files_d.js +4 -4
  212. package/SVF-doxygen/html/search/files_e.js +62 -62
  213. package/SVF-doxygen/html/search/files_f.js +8 -8
  214. package/SVF-doxygen/html/search/functions_0.js +13 -13
  215. package/SVF-doxygen/html/search/functions_1.js +362 -362
  216. package/SVF-doxygen/html/search/functions_10.js +140 -140
  217. package/SVF-doxygen/html/search/functions_11.js +139 -139
  218. package/SVF-doxygen/html/search/functions_12.js +289 -288
  219. package/SVF-doxygen/html/search/functions_13.js +59 -59
  220. package/SVF-doxygen/html/search/functions_14.js +39 -39
  221. package/SVF-doxygen/html/search/functions_15.js +71 -71
  222. package/SVF-doxygen/html/search/functions_16.js +32 -32
  223. package/SVF-doxygen/html/search/functions_17.js +3 -3
  224. package/SVF-doxygen/html/search/functions_18.js +173 -172
  225. package/SVF-doxygen/html/search/functions_2.js +89 -89
  226. package/SVF-doxygen/html/search/functions_3.js +260 -258
  227. package/SVF-doxygen/html/search/functions_4.js +78 -78
  228. package/SVF-doxygen/html/search/functions_5.js +53 -53
  229. package/SVF-doxygen/html/search/functions_6.js +60 -60
  230. package/SVF-doxygen/html/search/functions_7.js +856 -855
  231. package/SVF-doxygen/html/search/functions_8.js +149 -149
  232. package/SVF-doxygen/html/search/functions_9.js +424 -424
  233. package/SVF-doxygen/html/search/functions_a.js +30 -30
  234. package/SVF-doxygen/html/search/functions_b.js +2 -2
  235. package/SVF-doxygen/html/search/functions_c.js +25 -25
  236. package/SVF-doxygen/html/search/functions_d.js +79 -79
  237. package/SVF-doxygen/html/search/functions_e.js +35 -35
  238. package/SVF-doxygen/html/search/functions_f.js +56 -56
  239. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  240. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  241. package/SVF-doxygen/html/search/related_0.js +2 -2
  242. package/SVF-doxygen/html/search/related_1.js +2 -2
  243. package/SVF-doxygen/html/search/related_2.js +3 -2
  244. package/SVF-doxygen/html/search/related_3.js +2 -2
  245. package/SVF-doxygen/html/search/related_4.js +2 -2
  246. package/SVF-doxygen/html/search/related_5.js +1 -1
  247. package/SVF-doxygen/html/search/related_6.js +2 -2
  248. package/SVF-doxygen/html/search/related_7.js +4 -4
  249. package/SVF-doxygen/html/search/related_8.js +2 -2
  250. package/SVF-doxygen/html/search/related_9.js +4 -4
  251. package/SVF-doxygen/html/search/related_a.js +19 -19
  252. package/SVF-doxygen/html/search/related_b.js +4 -4
  253. package/SVF-doxygen/html/search/related_c.js +2 -2
  254. package/SVF-doxygen/html/search/related_d.js +12 -12
  255. package/SVF-doxygen/html/search/related_e.js +2 -2
  256. package/SVF-doxygen/html/search/related_f.js +2 -2
  257. package/SVF-doxygen/html/search/typedefs_0.js +19 -19
  258. package/SVF-doxygen/html/search/typedefs_1.js +26 -26
  259. package/SVF-doxygen/html/search/typedefs_10.js +62 -61
  260. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  261. package/SVF-doxygen/html/search/typedefs_12.js +11 -11
  262. package/SVF-doxygen/html/search/typedefs_13.js +33 -33
  263. package/SVF-doxygen/html/search/typedefs_14.js +8 -8
  264. package/SVF-doxygen/html/search/typedefs_2.js +129 -129
  265. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  266. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  267. package/SVF-doxygen/html/search/typedefs_5.js +41 -41
  268. package/SVF-doxygen/html/search/typedefs_6.js +56 -56
  269. package/SVF-doxygen/html/search/typedefs_7.js +44 -44
  270. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  271. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  272. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  273. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  274. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  275. package/SVF-doxygen/html/search/typedefs_d.js +14 -14
  276. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  277. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  278. package/SVF-doxygen/html/search/variables_0.js +151 -151
  279. package/SVF-doxygen/html/search/variables_1.js +75 -75
  280. package/SVF-doxygen/html/search/variables_10.js +98 -98
  281. package/SVF-doxygen/html/search/variables_11.js +45 -44
  282. package/SVF-doxygen/html/search/variables_12.js +90 -90
  283. package/SVF-doxygen/html/search/variables_13.js +74 -74
  284. package/SVF-doxygen/html/search/variables_14.js +14 -14
  285. package/SVF-doxygen/html/search/variables_15.js +48 -48
  286. package/SVF-doxygen/html/search/variables_16.js +9 -9
  287. package/SVF-doxygen/html/search/variables_17.js +1 -1
  288. package/SVF-doxygen/html/search/variables_18.js +2 -2
  289. package/SVF-doxygen/html/search/variables_2.js +38 -38
  290. package/SVF-doxygen/html/search/variables_3.js +142 -142
  291. package/SVF-doxygen/html/search/variables_4.js +50 -50
  292. package/SVF-doxygen/html/search/variables_5.js +37 -37
  293. package/SVF-doxygen/html/search/variables_6.js +66 -66
  294. package/SVF-doxygen/html/search/variables_7.js +34 -34
  295. package/SVF-doxygen/html/search/variables_8.js +7 -7
  296. package/SVF-doxygen/html/search/variables_9.js +78 -78
  297. package/SVF-doxygen/html/search/variables_a.js +4 -4
  298. package/SVF-doxygen/html/search/variables_b.js +10 -10
  299. package/SVF-doxygen/html/search/variables_c.js +45 -45
  300. package/SVF-doxygen/html/search/variables_d.js +55 -55
  301. package/SVF-doxygen/html/search/variables_e.js +123 -123
  302. package/SVF-doxygen/html/search/variables_f.js +30 -30
  303. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +1 -1
  304. package/SVF-doxygen/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +2 -2
  305. package/SVF-doxygen/html/svf-ex_8cpp.html +1 -1
  306. package/SVF-doxygen/html/svf-ex_8cpp_source.html +1 -1
  307. package/package.json +1 -1
  308. package/svf/include/CFL/CFLSVFGBuilder.h +58 -0
  309. package/svf/include/CFL/CFLVF.h +2 -2
  310. package/svf/include/Graphs/SVFG.h +1 -0
  311. package/svf/include/SABER/ProgSlice.h +11 -0
  312. package/svf/include/SABER/SaberCondAllocator.h +8 -0
  313. package/svf/include/SABER/SaberSVFGBuilder.h +12 -2
  314. package/svf/lib/CFL/CFLSVFGBuilder.cpp +100 -0
  315. package/svf/lib/SABER/ProgSlice.cpp +48 -1
  316. package/svf/lib/SABER/SaberSVFGBuilder.cpp +5 -0
  317. package/svf/lib/SABER/SrcSnkDDA.cpp +1 -0
@@ -113,263 +113,264 @@ $(function() {
113
113
  <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>();</div>
114
114
  <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; </div>
115
115
  <div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>* ander = <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">AndersenWaveDiff::createAndersenWaveDiff</a>(pag);</div>
116
- <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a93970b0b5e0a6148a86ab192a812f34b">Options::SABERFULLSVFG</a>())</div>
117
- <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; svfg = memSSA.buildFullSVFG(ander);</div>
118
- <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">else</span></div>
119
- <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; svfg = memSSA.buildPTROnlySVFG(ander);</div>
120
- <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; setGraph(memSSA.getSVFG());</div>
121
- <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; ptaCallGraph = ander-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>();</div>
122
- <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="comment">//AndersenWaveDiff::releaseAndersenWaveDiff();</span></div>
123
- <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"></span> getSaberCondAllocator()-&gt;allocate(getPAG()-&gt;getModule());</div>
124
- <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; </div>
125
- <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; initSrcs();</div>
126
- <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; initSnks();</div>
127
- <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div>
128
- <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; </div>
129
- <div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ac12d813bcba4ec70de5e9048bbe16afc"> 60</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ac12d813bcba4ec70de5e9048bbe16afc">SrcSnkDDA::analyze</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module)</div>
130
- <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;{</div>
131
- <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; </div>
132
- <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; initialize(module);</div>
133
- <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; </div>
134
- <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="classSVF_1_1ContextCond.html#a92e89bbae0f31bb9eb971ab3edcc8071">ContextCond::setMaxCxtLen</a>(<a class="code" href="classSVF_1_1Options.html#a3fd9cce83729bc62cd2fb568b0d53db5">Options::CxtLimit</a>());</div>
135
- <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; </div>
136
- <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVFGNodeSetIter</a> iter = sourcesBegin(), eiter = sourcesEnd();</div>
137
- <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; iter != eiter; ++iter)</div>
138
- <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div>
139
- <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; setCurSlice(*iter);</div>
140
- <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
141
- <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Analysing slice:&quot;</span> &lt;&lt; (*iter)-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>);</div>
142
- <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="classSVF_1_1ContextCond.html">ContextCond</a> cxt;</div>
143
- <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1CxtDPItem.html">DPIm</a> <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>((*iter)-&gt;getId(),cxt);</div>
144
- <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; forwardTraverse(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>);</div>
145
- <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; </div>
146
- <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">if</span> (getCurSlice()-&gt;isReachGlobal())</div>
147
- <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div>
148
- <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Forward analysis reaches globals for slice:&quot;</span> &lt;&lt; (*iter)-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>);</div>
149
- <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div>
150
- <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">else</span></div>
151
- <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div>
152
- <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Forward process for slice:&quot;</span> &lt;&lt; (*iter)-&gt;getId() &lt;&lt; <span class="stringliteral">&quot; (size = &quot;</span> &lt;&lt; getCurSlice()-&gt;getForwardSliceSize() &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>);</div>
153
- <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
154
- <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVFGNodeSetIter</a> sit = getCurSlice()-&gt;sinksBegin(), esit =</div>
155
- <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; getCurSlice()-&gt;sinksEnd(); sit != esit; ++sit)</div>
156
- <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div>
157
- <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classSVF_1_1ContextCond.html">ContextCond</a> cxt;</div>
158
- <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="classSVF_1_1CxtDPItem.html">DPIm</a> <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>((*sit)-&gt;getId(),cxt);</div>
159
- <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; backwardTraverse(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>);</div>
160
- <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div>
161
- <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; </div>
162
- <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Backward process for slice:&quot;</span> &lt;&lt; (*iter)-&gt;getId() &lt;&lt; <span class="stringliteral">&quot; (size = &quot;</span> &lt;&lt; getCurSlice()-&gt;getBackwardSliceSize() &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>);</div>
163
- <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; </div>
164
- <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ab9443e23bdcb60f118a7aab835f974db">Options::DumpSlice</a>())</div>
165
- <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; annotateSlice(_curSlice);</div>
166
- <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; </div>
167
- <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">if</span>(_curSlice-&gt;AllPathReachableSolve())</div>
168
- <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; _curSlice-&gt;setAllReachable();</div>
169
- <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; </div>
170
- <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Guard computation for slice:&quot;</span> &lt;&lt; (*iter)-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>);</div>
171
- <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div>
172
- <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; </div>
173
- <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; reportBug(getCurSlice());</div>
174
- <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div>
175
- <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; finalize();</div>
176
- <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; </div>
177
- <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;}</div>
178
- <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; </div>
116
+ <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; memSSA.setSaberCondAllocator(getSaberCondAllocator());</div>
117
+ <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a93970b0b5e0a6148a86ab192a812f34b">Options::SABERFULLSVFG</a>())</div>
118
+ <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; svfg = memSSA.buildFullSVFG(ander);</div>
119
+ <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">else</span></div>
120
+ <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; svfg = memSSA.buildPTROnlySVFG(ander);</div>
121
+ <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; setGraph(memSSA.getSVFG());</div>
122
+ <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; ptaCallGraph = ander-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>();</div>
123
+ <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">//AndersenWaveDiff::releaseAndersenWaveDiff();</span></div>
124
+ <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"></span> getSaberCondAllocator()-&gt;allocate(getPAG()-&gt;getModule());</div>
125
+ <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
126
+ <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; initSrcs();</div>
127
+ <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; initSnks();</div>
128
+ <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</div>
129
+ <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; </div>
130
+ <div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ac12d813bcba4ec70de5e9048bbe16afc"> 61</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ac12d813bcba4ec70de5e9048bbe16afc">SrcSnkDDA::analyze</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module)</div>
131
+ <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;{</div>
132
+ <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; </div>
133
+ <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; initialize(module);</div>
134
+ <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; </div>
135
+ <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classSVF_1_1ContextCond.html#a92e89bbae0f31bb9eb971ab3edcc8071">ContextCond::setMaxCxtLen</a>(<a class="code" href="classSVF_1_1Options.html#a3fd9cce83729bc62cd2fb568b0d53db5">Options::CxtLimit</a>());</div>
136
+ <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; </div>
137
+ <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVFGNodeSetIter</a> iter = sourcesBegin(), eiter = sourcesEnd();</div>
138
+ <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; iter != eiter; ++iter)</div>
139
+ <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div>
140
+ <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; setCurSlice(*iter);</div>
141
+ <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div>
142
+ <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Analysing slice:&quot;</span> &lt;&lt; (*iter)-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>);</div>
143
+ <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1ContextCond.html">ContextCond</a> cxt;</div>
144
+ <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="classSVF_1_1CxtDPItem.html">DPIm</a> <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>((*iter)-&gt;getId(),cxt);</div>
145
+ <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; forwardTraverse(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>);</div>
146
+ <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; </div>
147
+ <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span> (getCurSlice()-&gt;isReachGlobal())</div>
148
+ <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div>
149
+ <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Forward analysis reaches globals for slice:&quot;</span> &lt;&lt; (*iter)-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>);</div>
150
+ <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div>
151
+ <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">else</span></div>
152
+ <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div>
153
+ <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Forward process for slice:&quot;</span> &lt;&lt; (*iter)-&gt;getId() &lt;&lt; <span class="stringliteral">&quot; (size = &quot;</span> &lt;&lt; getCurSlice()-&gt;getForwardSliceSize() &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>);</div>
154
+ <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; </div>
155
+ <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVFGNodeSetIter</a> sit = getCurSlice()-&gt;sinksBegin(), esit =</div>
156
+ <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; getCurSlice()-&gt;sinksEnd(); sit != esit; ++sit)</div>
157
+ <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div>
158
+ <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="classSVF_1_1ContextCond.html">ContextCond</a> cxt;</div>
159
+ <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="classSVF_1_1CxtDPItem.html">DPIm</a> <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>((*sit)-&gt;getId(),cxt);</div>
160
+ <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; backwardTraverse(<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>);</div>
161
+ <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div>
162
+ <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; </div>
163
+ <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Backward process for slice:&quot;</span> &lt;&lt; (*iter)-&gt;getId() &lt;&lt; <span class="stringliteral">&quot; (size = &quot;</span> &lt;&lt; getCurSlice()-&gt;getBackwardSliceSize() &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>);</div>
164
+ <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; </div>
165
+ <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ab9443e23bdcb60f118a7aab835f974db">Options::DumpSlice</a>())</div>
166
+ <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; annotateSlice(_curSlice);</div>
167
+ <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; </div>
168
+ <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span>(_curSlice-&gt;AllPathReachableSolve())</div>
169
+ <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; _curSlice-&gt;setAllReachable();</div>
170
+ <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; </div>
171
+ <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Guard computation for slice:&quot;</span> &lt;&lt; (*iter)-&gt;getId() &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>);</div>
172
+ <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div>
173
+ <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; </div>
174
+ <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; reportBug(getCurSlice());</div>
175
+ <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div>
176
+ <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; finalize();</div>
177
+ <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; </div>
178
+ <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;}</div>
179
179
  <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; </div>
180
- <div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#afc75e55af839ef535d80555fd422342c"> 117</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#afc75e55af839ef535d80555fd422342c">SrcSnkDDA::isInAWrapper</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src, <a class="code" href="classSVF_1_1SrcSnkDDA.html#a47a4be28c625bf4d079a04ac24132165">CallSiteSet</a>&amp; csIdSet)</div>
181
- <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;{</div>
182
- <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; </div>
183
- <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordtype">bool</span> reachFunExit = <span class="keyword">false</span>;</div>
184
- <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; </div>
185
- <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">WorkList</a> worklist;</div>
186
- <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(src);</div>
187
- <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">SVFGNodeBS</a> visited;</div>
188
- <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> step = 0;</div>
189
- <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div>
190
- <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div>
191
- <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div>
192
- <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; </div>
193
- <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">if</span>(visited.<a class="code" href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">test</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())==0)</div>
194
- <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; visited.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div>
195
- <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">else</span></div>
196
- <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">continue</span>;</div>
197
- <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="comment">// reaching maximum steps when traversing on SVFG to identify a memory allocation wrapper</span></div>
198
- <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> (step++ &gt; <a class="code" href="classSVF_1_1Options.html#aab0131558d9da9b0fe888387217ba919">Options::MaxStepInWrapper</a>())</div>
199
- <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
200
- <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; </div>
201
- <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> it = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), eit =</div>
202
- <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); it != eit; ++it)</div>
203
- <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div>
204
- <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = (*it);</div>
205
- <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="comment">//assert(edge-&gt;isDirectVFGEdge() &amp;&amp; &quot;the edge should always be direct VF&quot;);</span></div>
206
- <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">// if this is a call edge</span></div>
207
- <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">if</span>(edge-&gt;<a class="code" href="classSVF_1_1VFGEdge.html#a92e3da59f7f5a693945b9a93f169da04">isCallDirectVFGEdge</a>())</div>
208
- <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; {</div>
209
- <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
210
- <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div>
211
- <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="comment">// if this is a return edge</span></div>
212
- <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(edge-&gt;<a class="code" href="classSVF_1_1VFGEdge.html#a49cbf2a714c9b965b19452d266cd8bdf">isRetDirectVFGEdge</a>())</div>
213
- <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div>
214
- <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; reachFunExit = <span class="keyword">true</span>;</div>
215
- <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; csIdSet.insert(getSVFG()-&gt;getCallSite(SVFUtil::cast&lt;RetDirSVFGEdge&gt;(edge)-&gt;getCallSiteId()));</div>
216
- <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div>
217
- <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="comment">// (1) an intra direct edge, we will keep tracking</span></div>
218
- <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="comment">// (2) an intra indirect edge, we only track if the succ SVFGNode is a load, which means we only track one level store-load pair .</span></div>
219
- <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="comment">// (3) do not track for all other interprocedural edges.</span></div>
220
- <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">else</span></div>
221
- <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; {</div>
222
- <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* succ = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div>
223
- <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;IntraDirSVFGEdge&gt;(edge))</div>
224
- <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div>
225
- <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a5c8cbc986cccb9d84f87aae162df3737">SVFUtil::isa</a>&lt;<a class="code" href="classSVF_1_1CopyVFGNode.html">CopySVFGNode</a>, <a class="code" href="classSVF_1_1GepVFGNode.html">GepSVFGNode</a>, <a class="code" href="classSVF_1_1PHIVFGNode.html">PHISVFGNode</a>,</div>
226
- <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetSVFGNode</a>, <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetSVFGNode</a>,</div>
227
- <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>&gt;(succ))</div>
228
- <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div>
229
- <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(succ);</div>
230
- <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div>
231
- <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div>
232
- <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;IntraIndSVFGEdge&gt;(edge))</div>
233
- <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; {</div>
234
- <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadSVFGNode, IntraMSSAPHISVFGNode&gt;(succ))</div>
235
- <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; {</div>
236
- <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(succ);</div>
237
- <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div>
238
- <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div>
239
- <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">else</span></div>
240
- <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
241
- <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div>
242
- <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div>
243
- <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; }</div>
244
- <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span>(reachFunExit)</div>
245
- <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
246
- <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">else</span></div>
247
- <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
248
- <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;}</div>
249
- <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; </div>
180
+ <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; </div>
181
+ <div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#afc75e55af839ef535d80555fd422342c"> 118</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#afc75e55af839ef535d80555fd422342c">SrcSnkDDA::isInAWrapper</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src, <a class="code" href="classSVF_1_1SrcSnkDDA.html#a47a4be28c625bf4d079a04ac24132165">CallSiteSet</a>&amp; csIdSet)</div>
182
+ <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;{</div>
183
+ <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; </div>
184
+ <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordtype">bool</span> reachFunExit = <span class="keyword">false</span>;</div>
185
+ <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; </div>
186
+ <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">WorkList</a> worklist;</div>
187
+ <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(src);</div>
188
+ <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">SVFGNodeBS</a> visited;</div>
189
+ <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> step = 0;</div>
190
+ <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div>
191
+ <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div>
192
+ <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div>
193
+ <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; </div>
194
+ <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">if</span>(visited.<a class="code" href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">test</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())==0)</div>
195
+ <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; visited.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div>
196
+ <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">else</span></div>
197
+ <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">continue</span>;</div>
198
+ <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// reaching maximum steps when traversing on SVFG to identify a memory allocation wrapper</span></div>
199
+ <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">if</span> (step++ &gt; <a class="code" href="classSVF_1_1Options.html#aab0131558d9da9b0fe888387217ba919">Options::MaxStepInWrapper</a>())</div>
200
+ <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
201
+ <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; </div>
202
+ <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> it = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), eit =</div>
203
+ <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); it != eit; ++it)</div>
204
+ <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; {</div>
205
+ <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = (*it);</div>
206
+ <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">//assert(edge-&gt;isDirectVFGEdge() &amp;&amp; &quot;the edge should always be direct VF&quot;);</span></div>
207
+ <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="comment">// if this is a call edge</span></div>
208
+ <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">if</span>(edge-&gt;<a class="code" href="classSVF_1_1VFGEdge.html#a92e3da59f7f5a693945b9a93f169da04">isCallDirectVFGEdge</a>())</div>
209
+ <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div>
210
+ <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
211
+ <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div>
212
+ <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">// if this is a return edge</span></div>
213
+ <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(edge-&gt;<a class="code" href="classSVF_1_1VFGEdge.html#a49cbf2a714c9b965b19452d266cd8bdf">isRetDirectVFGEdge</a>())</div>
214
+ <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; {</div>
215
+ <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; reachFunExit = <span class="keyword">true</span>;</div>
216
+ <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; csIdSet.insert(getSVFG()-&gt;getCallSite(SVFUtil::cast&lt;RetDirSVFGEdge&gt;(edge)-&gt;getCallSiteId()));</div>
217
+ <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div>
218
+ <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="comment">// (1) an intra direct edge, we will keep tracking</span></div>
219
+ <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="comment">// (2) an intra indirect edge, we only track if the succ SVFGNode is a load, which means we only track one level store-load pair .</span></div>
220
+ <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="comment">// (3) do not track for all other interprocedural edges.</span></div>
221
+ <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">else</span></div>
222
+ <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div>
223
+ <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* succ = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div>
224
+ <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;IntraDirSVFGEdge&gt;(edge))</div>
225
+ <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; {</div>
226
+ <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a5c8cbc986cccb9d84f87aae162df3737">SVFUtil::isa</a>&lt;<a class="code" href="classSVF_1_1CopyVFGNode.html">CopySVFGNode</a>, <a class="code" href="classSVF_1_1GepVFGNode.html">GepSVFGNode</a>, <a class="code" href="classSVF_1_1PHIVFGNode.html">PHISVFGNode</a>,</div>
227
+ <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetSVFGNode</a>, <a class="code" href="classSVF_1_1ActualRetVFGNode.html">ActualRetSVFGNode</a>,</div>
228
+ <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a>&gt;(succ))</div>
229
+ <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; {</div>
230
+ <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(succ);</div>
231
+ <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div>
232
+ <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div>
233
+ <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;IntraIndSVFGEdge&gt;(edge))</div>
234
+ <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div>
235
+ <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadSVFGNode, IntraMSSAPHISVFGNode&gt;(succ))</div>
236
+ <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {</div>
237
+ <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(succ);</div>
238
+ <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div>
239
+ <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div>
240
+ <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">else</span></div>
241
+ <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
242
+ <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div>
243
+ <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; }</div>
244
+ <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div>
245
+ <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">if</span>(reachFunExit)</div>
246
+ <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
247
+ <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">else</span></div>
248
+ <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
249
+ <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;}</div>
250
250
  <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; </div>
251
- <div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#acb99b47a514fc9d10fe1b989c7b09127"> 191</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#acb99b47a514fc9d10fe1b989c7b09127">SrcSnkDDA::FWProcessOutgoingEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtDPItem.html">DPIm</a>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>, <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge)</div>
252
- <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;{</div>
253
- <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n##processing source: &quot;</span> &lt;&lt; getCurSlice()-&gt;getSource()-&gt;getId() &lt;&lt;<span class="stringliteral">&quot; forward propagate from (&quot;</span> &lt;&lt; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>());</div>
254
- <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; </div>
255
- <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="comment">// for indirect SVFGEdge, the propagation should follow the def-use chains</span></div>
256
- <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="comment">// points-to on the edge indicate whether the object of source node can be propagated</span></div>
257
- <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; </div>
258
- <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div>
259
- <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="classSVF_1_1CxtDPItem.html">DPIm</a> newItem(dstNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.getContexts());</div>
260
- <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; </div>
261
- <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span>(isGlobalSVFGNode(dstNode) || getCurSlice()-&gt;isReachGlobal())</div>
262
- <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; {</div>
263
- <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; getCurSlice()-&gt;setReachGlobal();</div>
264
- <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">return</span>;</div>
265
- <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div>
266
- <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; </div>
251
+ <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; </div>
252
+ <div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#acb99b47a514fc9d10fe1b989c7b09127"> 192</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#acb99b47a514fc9d10fe1b989c7b09127">SrcSnkDDA::FWProcessOutgoingEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtDPItem.html">DPIm</a>&amp; <a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>, <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge)</div>
253
+ <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;{</div>
254
+ <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;\n##processing source: &quot;</span> &lt;&lt; getCurSlice()-&gt;getSource()-&gt;getId() &lt;&lt;<span class="stringliteral">&quot; forward propagate from (&quot;</span> &lt;&lt; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>());</div>
255
+ <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; </div>
256
+ <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="comment">// for indirect SVFGEdge, the propagation should follow the def-use chains</span></div>
257
+ <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="comment">// points-to on the edge indicate whether the object of source node can be propagated</span></div>
258
+ <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; </div>
259
+ <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div>
260
+ <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <a class="code" href="classSVF_1_1CxtDPItem.html">DPIm</a> newItem(dstNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),<a class="code" href="cJSON_8h.html#ac76cea59d438ba893d2f82aabb367d14">item</a>.getContexts());</div>
261
+ <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; </div>
262
+ <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">if</span>(isGlobalSVFGNode(dstNode) || getCurSlice()-&gt;isReachGlobal())</div>
263
+ <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; {</div>
264
+ <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; getCurSlice()-&gt;setReachGlobal();</div>
265
+ <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span>;</div>
266
+ <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div>
267
267
  <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; </div>
268
- <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="comment">// push context for calling</span></div>
269
- <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1VFGEdge.html#a4352297ef44c4eff1efe2f348cce6fe9">isCallVFGEdge</a>())</div>
270
- <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; {</div>
271
- <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = 0;</div>
272
- <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallDirSVFGEdge.html">CallDirSVFGEdge</a>* callEdge = SVFUtil::dyn_cast&lt;CallDirSVFGEdge&gt;(edge))</div>
273
- <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; csId = callEdge-&gt;getCallSiteId();</div>
274
- <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">else</span></div>
275
- <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; csId = SVFUtil::cast&lt;CallIndSVFGEdge&gt;(edge)-&gt;getCallSiteId();</div>
276
- <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; </div>
277
- <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; newItem.<a class="code" href="classSVF_1_1CxtDPItem.html#a31a33a291b4bb688f54572c986c0b845">pushContext</a>(csId);</div>
278
- <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; push cxt [&quot;</span> &lt;&lt; csId &lt;&lt; <span class="stringliteral">&quot;] &quot;</span>);</div>
279
- <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; }</div>
280
- <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="comment">// match context for return</span></div>
281
- <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1VFGEdge.html#a3937eef974c3953f1d1e7d64c5a24ff3">isRetVFGEdge</a>())</div>
282
- <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; {</div>
283
- <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = 0;</div>
284
- <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetDirSVFGEdge.html">RetDirSVFGEdge</a>* callEdge = SVFUtil::dyn_cast&lt;RetDirSVFGEdge&gt;(edge))</div>
285
- <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; csId = callEdge-&gt;getCallSiteId();</div>
286
- <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">else</span></div>
287
- <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; csId = SVFUtil::cast&lt;RetIndSVFGEdge&gt;(edge)-&gt;getCallSiteId();</div>
288
- <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; </div>
289
- <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">if</span> (newItem.<a class="code" href="classSVF_1_1CxtDPItem.html#ad386861998e54ec754ca62f358f03e6a">matchContext</a>(csId) == <span class="keyword">false</span>)</div>
290
- <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; {</div>
291
- <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;-|-\n&quot;</span>);</div>
292
- <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">return</span>;</div>
293
- <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; }</div>
294
- <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; pop cxt [&quot;</span> &lt;&lt; csId &lt;&lt; <span class="stringliteral">&quot;] &quot;</span>);</div>
295
- <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div>
296
- <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; </div>
297
- <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">if</span>(forwardVisited(dstNode,newItem))</div>
298
- <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; {</div>
299
- <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; node &quot;</span>&lt;&lt; dstNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt;<span class="stringliteral">&quot; has been visited\n&quot;</span>);</div>
300
- <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">return</span>;</div>
301
- <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div>
302
- <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">else</span></div>
303
- <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; addForwardVisited(dstNode, newItem);</div>
304
- <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; </div>
305
- <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">if</span>(pushIntoWorklist(newItem))</div>
306
- <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; --&gt; &quot;</span> &lt;&lt; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>() &lt;&lt; <span class="stringliteral">&quot;, cxt size: &quot;</span> &lt;&lt; newItem.<a class="code" href="classSVF_1_1CxtDPItem.html#a1dea25cd5d72c52cef1cff23b832a196">getContexts</a>().<a class="code" href="classSVF_1_1ContextCond.html#a20f15a1661f928ab80bacaf8f5c497b1">cxtSize</a>() &lt;&lt;<span class="stringliteral">&quot;)\n&quot;</span>);</div>
307
- <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; </div>
308
- <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;}</div>
309
- <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; </div>
310
- <div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a3a097517e85b9ea4c92d5e213b04e1f0"> 256</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a3a097517e85b9ea4c92d5e213b04e1f0">SrcSnkDDA::BWProcessIncomingEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtDPItem.html">DPIm</a>&amp;, <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge)</div>
311
- <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;{</div>
312
- <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;backward propagate from (&quot;</span> &lt;&lt; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>() &lt;&lt; <span class="stringliteral">&quot; --&gt; &quot;</span> &lt;&lt; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>() &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>);</div>
313
- <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>();</div>
314
- <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">if</span>(backwardVisited(srcNode))</div>
315
- <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">return</span>;</div>
316
- <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">else</span></div>
317
- <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; addBackwardVisited(srcNode);</div>
318
- <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; </div>
319
- <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="classSVF_1_1ContextCond.html">ContextCond</a> cxt;</div>
320
- <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <a class="code" href="classSVF_1_1CxtDPItem.html">DPIm</a> newItem(srcNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), cxt);</div>
321
- <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; pushIntoWorklist(newItem);</div>
322
- <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;}</div>
323
- <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; </div>
324
- <div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ab35c0d1f02c83a2c10717905f1abf5cd"> 271</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ab35c0d1f02c83a2c10717905f1abf5cd">SrcSnkDDA::setCurSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src)</div>
325
- <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;{</div>
326
- <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">if</span>(_curSlice!=<span class="keyword">nullptr</span>)</div>
327
- <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; {</div>
328
- <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">delete</span> _curSlice;</div>
329
- <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; _curSlice = <span class="keyword">nullptr</span>;</div>
330
- <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; clearVisitedMap();</div>
331
- <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div>
332
- <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; </div>
333
- <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; _curSlice = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>(src,getSaberCondAllocator(), getSVFG());</div>
334
- <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;}</div>
335
- <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; </div>
336
- <div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a8817604b20724703121e9466e5cdb4cd"> 283</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a8817604b20724703121e9466e5cdb4cd">SrcSnkDDA::annotateSlice</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice)</div>
337
- <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;{</div>
338
- <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; getSVFG()-&gt;getStat()-&gt;addToSources(slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>());</div>
339
- <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVFGNodeSetIter</a> it = slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2">sinksBegin</a>(), eit = slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31">sinksEnd</a>(); it!=eit; ++it )</div>
340
- <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; getSVFG()-&gt;getStat()-&gt;addToSinks(*it);</div>
341
- <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVFGNodeSetIter</a> it = slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ae482fcb138aaf345586a39daa34ff895">forwardSliceBegin</a>(), eit = slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#add10d8fd041ac7e6eb611df8a6b1384b">forwardSliceEnd</a>(); it!=eit; ++it )</div>
342
- <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; getSVFG()-&gt;getStat()-&gt;addToForwardSlice(*it);</div>
343
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVFGNodeSetIter</a> it = slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ab5810f8a7a994f0637c54b94d0367a89">backwardSliceBegin</a>(), eit = slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#aed4bedc716a3e252e44a6f28e677d61c">backwardSliceEnd</a>(); it!=eit; ++it )</div>
344
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; getSVFG()-&gt;getStat()-&gt;addToBackwardSlice(*it);</div>
345
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;}</div>
346
- <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; </div>
347
- <div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#acae985068ff1c20fb81c4c9ba730aaba"> 294</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#acae985068ff1c20fb81c4c9ba730aaba">SrcSnkDDA::dumpSlices</a>()</div>
348
- <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;{</div>
349
- <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; </div>
350
- <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ab9443e23bdcb60f118a7aab835f974db">Options::DumpSlice</a>())</div>
351
- <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1SVFG.html">SVFG</a>*<span class="keyword">&gt;</span>(getSVFG())-&gt;<a class="code" href="namespaceSVF.html#aae350f79ebcb9efd22ec9efa6678cd13">dump</a>(<span class="stringliteral">&quot;Slice&quot;</span>,<span class="keyword">true</span>);</div>
352
- <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;}</div>
353
- <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; </div>
354
- <div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a8aa11629166b76a7b6555dee85e512b2"> 301</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a8aa11629166b76a7b6555dee85e512b2">SrcSnkDDA::printZ3Stat</a>()</div>
355
- <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;{</div>
356
- <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; </div>
357
- <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Z3 Mem usage: &quot;</span> &lt;&lt; getSaberCondAllocator()-&gt;getMemUsage() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
358
- <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Z3 Number: &quot;</span> &lt;&lt; getSaberCondAllocator()-&gt;getCondNum() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
359
- <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;}</div>
268
+ <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; </div>
269
+ <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="comment">// push context for calling</span></div>
270
+ <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1VFGEdge.html#a4352297ef44c4eff1efe2f348cce6fe9">isCallVFGEdge</a>())</div>
271
+ <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div>
272
+ <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = 0;</div>
273
+ <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallDirSVFGEdge.html">CallDirSVFGEdge</a>* callEdge = SVFUtil::dyn_cast&lt;CallDirSVFGEdge&gt;(edge))</div>
274
+ <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; csId = callEdge-&gt;getCallSiteId();</div>
275
+ <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">else</span></div>
276
+ <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; csId = SVFUtil::cast&lt;CallIndSVFGEdge&gt;(edge)-&gt;getCallSiteId();</div>
277
+ <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; </div>
278
+ <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; newItem.<a class="code" href="classSVF_1_1CxtDPItem.html#a31a33a291b4bb688f54572c986c0b845">pushContext</a>(csId);</div>
279
+ <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; push cxt [&quot;</span> &lt;&lt; csId &lt;&lt; <span class="stringliteral">&quot;] &quot;</span>);</div>
280
+ <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div>
281
+ <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="comment">// match context for return</span></div>
282
+ <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1VFGEdge.html#a3937eef974c3953f1d1e7d64c5a24ff3">isRetVFGEdge</a>())</div>
283
+ <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; {</div>
284
+ <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = 0;</div>
285
+ <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetDirSVFGEdge.html">RetDirSVFGEdge</a>* callEdge = SVFUtil::dyn_cast&lt;RetDirSVFGEdge&gt;(edge))</div>
286
+ <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; csId = callEdge-&gt;getCallSiteId();</div>
287
+ <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">else</span></div>
288
+ <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; csId = SVFUtil::cast&lt;RetIndSVFGEdge&gt;(edge)-&gt;getCallSiteId();</div>
289
+ <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; </div>
290
+ <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">if</span> (newItem.<a class="code" href="classSVF_1_1CxtDPItem.html#ad386861998e54ec754ca62f358f03e6a">matchContext</a>(csId) == <span class="keyword">false</span>)</div>
291
+ <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; {</div>
292
+ <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;-|-\n&quot;</span>);</div>
293
+ <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">return</span>;</div>
294
+ <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div>
295
+ <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; pop cxt [&quot;</span> &lt;&lt; csId &lt;&lt; <span class="stringliteral">&quot;] &quot;</span>);</div>
296
+ <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div>
297
+ <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; </div>
298
+ <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">if</span>(forwardVisited(dstNode,newItem))</div>
299
+ <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; {</div>
300
+ <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; node &quot;</span>&lt;&lt; dstNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt;<span class="stringliteral">&quot; has been visited\n&quot;</span>);</div>
301
+ <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span>;</div>
302
+ <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div>
303
+ <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">else</span></div>
304
+ <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; addForwardVisited(dstNode, newItem);</div>
305
+ <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; </div>
306
+ <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span>(pushIntoWorklist(newItem))</div>
307
+ <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; --&gt; &quot;</span> &lt;&lt; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>() &lt;&lt; <span class="stringliteral">&quot;, cxt size: &quot;</span> &lt;&lt; newItem.<a class="code" href="classSVF_1_1CxtDPItem.html#a1dea25cd5d72c52cef1cff23b832a196">getContexts</a>().<a class="code" href="classSVF_1_1ContextCond.html#a20f15a1661f928ab80bacaf8f5c497b1">cxtSize</a>() &lt;&lt;<span class="stringliteral">&quot;)\n&quot;</span>);</div>
308
+ <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; </div>
309
+ <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;}</div>
310
+ <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; </div>
311
+ <div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a3a097517e85b9ea4c92d5e213b04e1f0"> 257</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a3a097517e85b9ea4c92d5e213b04e1f0">SrcSnkDDA::BWProcessIncomingEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtDPItem.html">DPIm</a>&amp;, <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge)</div>
312
+ <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;{</div>
313
+ <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;backward propagate from (&quot;</span> &lt;&lt; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>() &lt;&lt; <span class="stringliteral">&quot; --&gt; &quot;</span> &lt;&lt; edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>() &lt;&lt; <span class="stringliteral">&quot;)\n&quot;</span>);</div>
314
+ <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>();</div>
315
+ <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">if</span>(backwardVisited(srcNode))</div>
316
+ <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">return</span>;</div>
317
+ <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">else</span></div>
318
+ <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; addBackwardVisited(srcNode);</div>
319
+ <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; </div>
320
+ <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <a class="code" href="classSVF_1_1ContextCond.html">ContextCond</a> cxt;</div>
321
+ <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="classSVF_1_1CxtDPItem.html">DPIm</a> newItem(srcNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), cxt);</div>
322
+ <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; pushIntoWorklist(newItem);</div>
323
+ <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;}</div>
324
+ <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; </div>
325
+ <div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ab35c0d1f02c83a2c10717905f1abf5cd"> 272</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ab35c0d1f02c83a2c10717905f1abf5cd">SrcSnkDDA::setCurSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src)</div>
326
+ <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;{</div>
327
+ <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">if</span>(_curSlice!=<span class="keyword">nullptr</span>)</div>
328
+ <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; {</div>
329
+ <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">delete</span> _curSlice;</div>
330
+ <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; _curSlice = <span class="keyword">nullptr</span>;</div>
331
+ <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; clearVisitedMap();</div>
332
+ <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div>
333
+ <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; </div>
334
+ <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; _curSlice = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>(src,getSaberCondAllocator(), getSVFG());</div>
335
+ <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;}</div>
336
+ <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; </div>
337
+ <div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a8817604b20724703121e9466e5cdb4cd"> 284</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a8817604b20724703121e9466e5cdb4cd">SrcSnkDDA::annotateSlice</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice)</div>
338
+ <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;{</div>
339
+ <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; getSVFG()-&gt;getStat()-&gt;addToSources(slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>());</div>
340
+ <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVFGNodeSetIter</a> it = slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2">sinksBegin</a>(), eit = slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31">sinksEnd</a>(); it!=eit; ++it )</div>
341
+ <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; getSVFG()-&gt;getStat()-&gt;addToSinks(*it);</div>
342
+ <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVFGNodeSetIter</a> it = slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ae482fcb138aaf345586a39daa34ff895">forwardSliceBegin</a>(), eit = slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#add10d8fd041ac7e6eb611df8a6b1384b">forwardSliceEnd</a>(); it!=eit; ++it )</div>
343
+ <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; getSVFG()-&gt;getStat()-&gt;addToForwardSlice(*it);</div>
344
+ <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVFGNodeSetIter</a> it = slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ab5810f8a7a994f0637c54b94d0367a89">backwardSliceBegin</a>(), eit = slice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#aed4bedc716a3e252e44a6f28e677d61c">backwardSliceEnd</a>(); it!=eit; ++it )</div>
345
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; getSVFG()-&gt;getStat()-&gt;addToBackwardSlice(*it);</div>
346
+ <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;}</div>
347
+ <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; </div>
348
+ <div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#acae985068ff1c20fb81c4c9ba730aaba"> 295</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#acae985068ff1c20fb81c4c9ba730aaba">SrcSnkDDA::dumpSlices</a>()</div>
349
+ <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;{</div>
350
+ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; </div>
351
+ <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ab9443e23bdcb60f118a7aab835f974db">Options::DumpSlice</a>())</div>
352
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1SVFG.html">SVFG</a>*<span class="keyword">&gt;</span>(getSVFG())-&gt;<a class="code" href="namespaceSVF.html#aae350f79ebcb9efd22ec9efa6678cd13">dump</a>(<span class="stringliteral">&quot;Slice&quot;</span>,<span class="keyword">true</span>);</div>
353
+ <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;}</div>
354
+ <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; </div>
355
+ <div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a8aa11629166b76a7b6555dee85e512b2"> 302</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a8aa11629166b76a7b6555dee85e512b2">SrcSnkDDA::printZ3Stat</a>()</div>
356
+ <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;{</div>
357
+ <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; </div>
358
+ <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Z3 Mem usage: &quot;</span> &lt;&lt; getSaberCondAllocator()-&gt;getMemUsage() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
359
+ <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;Z3 Number: &quot;</span> &lt;&lt; getSaberCondAllocator()-&gt;getCondNum() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
360
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;}</div>
360
361
  </div><!-- fragment --></div><!-- contents -->
361
362
  <div class="ttc" id="aclassSVF_1_1FIFOWorkList_html_a0df409a67428e528321869d201f2a474"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(const Data &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00165">WorkList.h:165</a></div></div>
362
363
  <div class="ttc" id="aclassSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00200">WorkList.h:200</a></div></div>
363
364
  <div class="ttc" id="aclassSVF_1_1RetDirSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1RetDirSVFGEdge.html">SVF::RetDirSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00254">VFGEdge.h:254</a></div></div>
364
365
  <div class="ttc" id="aclassSVF_1_1CxtDPItem_html"><div class="ttname"><a href="classSVF_1_1CxtDPItem.html">SVF::CxtDPItem</a></div><div class="ttdef"><b>Definition:</b> <a href="DPItem_8h_source.html#l00477">DPItem.h:477</a></div></div>
365
366
  <div class="ttc" id="aclassSVF_1_1SVFG_html"><div class="ttname"><a href="classSVF_1_1SVFG.html">SVF::SVFG</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00065">SVFG.h:65</a></div></div>
366
- <div class="ttc" id="aclassSVF_1_1SrcSnkDDA_html_ac12d813bcba4ec70de5e9048bbe16afc"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ac12d813bcba4ec70de5e9048bbe16afc">SVF::SrcSnkDDA::analyze</a></div><div class="ttdeci">virtual void analyze(SVFModule *module)</div><div class="ttdoc">Start analysis here.</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00060">SrcSnkDDA.cpp:60</a></div></div>
367
+ <div class="ttc" id="aclassSVF_1_1SrcSnkDDA_html_ac12d813bcba4ec70de5e9048bbe16afc"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ac12d813bcba4ec70de5e9048bbe16afc">SVF::SrcSnkDDA::analyze</a></div><div class="ttdeci">virtual void analyze(SVFModule *module)</div><div class="ttdoc">Start analysis here.</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00061">SrcSnkDDA.cpp:61</a></div></div>
367
368
  <div class="ttc" id="aclassSVF_1_1GenericEdge_html_ab47ca533c415841ef75456cbad439589"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVF::GenericEdge::getSrcNode</a></div><div class="ttdeci">NodeType * getSrcNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00097">GenericGraph.h:97</a></div></div>
368
369
  <div class="ttc" id="aclassSVF_1_1Options_html_a93970b0b5e0a6148a86ab192a812f34b"><div class="ttname"><a href="classSVF_1_1Options.html#a93970b0b5e0a6148a86ab192a812f34b">SVF::Options::SABERFULLSVFG</a></div><div class="ttdeci">static const Option&lt; bool &gt; SABERFULLSVFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00240">Options.h:240</a></div></div>
369
370
  <div class="ttc" id="anamespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
370
- <div class="ttc" id="aclassSVF_1_1SrcSnkDDA_html_afc75e55af839ef535d80555fd422342c"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#afc75e55af839ef535d80555fd422342c">SVF::SrcSnkDDA::isInAWrapper</a></div><div class="ttdeci">bool isInAWrapper(const SVFGNode *src, CallSiteSet &amp;csIdSet)</div><div class="ttdoc">Identify allocation wrappers.</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00117">SrcSnkDDA.cpp:117</a></div></div>
371
+ <div class="ttc" id="aclassSVF_1_1SrcSnkDDA_html_afc75e55af839ef535d80555fd422342c"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#afc75e55af839ef535d80555fd422342c">SVF::SrcSnkDDA::isInAWrapper</a></div><div class="ttdeci">bool isInAWrapper(const SVFGNode *src, CallSiteSet &amp;csIdSet)</div><div class="ttdoc">Identify allocation wrappers.</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00118">SrcSnkDDA.cpp:118</a></div></div>
371
372
  <div class="ttc" id="aclassSVF_1_1ProgSlice_html"><div class="ttname"><a href="classSVF_1_1ProgSlice.html">SVF::ProgSlice</a></div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00049">ProgSlice.h:49</a></div></div>
372
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_adf620c97daed49735d21b485c448b4a2"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2">SVF::ProgSlice::sinksBegin</a></div><div class="ttdeci">SVFGNodeSetIter sinksBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00132">ProgSlice.h:132</a></div></div>
373
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_adf620c97daed49735d21b485c448b4a2"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2">SVF::ProgSlice::sinksBegin</a></div><div class="ttdeci">SVFGNodeSetIter sinksBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00135">ProgSlice.h:135</a></div></div>
373
374
  <div class="ttc" id="aSVFGStat_8h_html"><div class="ttname"><a href="SVFGStat_8h.html">SVFGStat.h</a></div></div>
374
375
  <div class="ttc" id="aclassSVF_1_1ActualRetVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualRetVFGNode.html">SVF::ActualRetVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00967">VFGNode.h:967</a></div></div>
375
376
  <div class="ttc" id="aclassSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00747">SparseBitVector.h:747</a></div></div>
@@ -379,36 +380,36 @@ $(function() {
379
380
  <div class="ttc" id="aSVFType_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFType_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00582">SVFType.h:582</a></div></div>
380
381
  <div class="ttc" id="aclassSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00459">SparseBitVector.h:459</a></div></div>
381
382
  <div class="ttc" id="aclassSVF_1_1VFGEdge_html_a3937eef974c3953f1d1e7d64c5a24ff3"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a3937eef974c3953f1d1e7d64c5a24ff3">SVF::VFGEdge::isRetVFGEdge</a></div><div class="ttdeci">bool isRetVFGEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00088">VFGEdge.h:88</a></div></div>
382
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab5810f8a7a994f0637c54b94d0367a89"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab5810f8a7a994f0637c54b94d0367a89">SVF::ProgSlice::backwardSliceBegin</a></div><div class="ttdeci">SVFGNodeSetIter backwardSliceBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00108">ProgSlice.h:108</a></div></div>
383
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab5810f8a7a994f0637c54b94d0367a89"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab5810f8a7a994f0637c54b94d0367a89">SVF::ProgSlice::backwardSliceBegin</a></div><div class="ttdeci">SVFGNodeSetIter backwardSliceBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00111">ProgSlice.h:111</a></div></div>
383
384
  <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>
384
385
  <div class="ttc" id="aclassSVF_1_1CopyVFGNode_html"><div class="ttname"><a href="classSVF_1_1CopyVFGNode.html">SVF::CopyVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00281">VFGNode.h:281</a></div></div>
385
386
  <div class="ttc" id="aclassSVF_1_1GenericEdge_html_ad9edb45e74ae675d9da82f5acf02d56e"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">SVF::GenericEdge::getDstID</a></div><div class="ttdeci">NodeID getDstID() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00085">GenericGraph.h:85</a></div></div>
386
- <div class="ttc" id="aclassSVF_1_1SrcSnkDDA_html_acb99b47a514fc9d10fe1b989c7b09127"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#acb99b47a514fc9d10fe1b989c7b09127">SVF::SrcSnkDDA::FWProcessOutgoingEdge</a></div><div class="ttdeci">void FWProcessOutgoingEdge(const DPIm &amp;item, SVFGEdge *edge) override</div><div class="ttdoc">Propagate information forward by matching context.</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00191">SrcSnkDDA.cpp:191</a></div></div>
387
+ <div class="ttc" id="aclassSVF_1_1SrcSnkDDA_html_acb99b47a514fc9d10fe1b989c7b09127"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#acb99b47a514fc9d10fe1b989c7b09127">SVF::SrcSnkDDA::FWProcessOutgoingEdge</a></div><div class="ttdeci">void FWProcessOutgoingEdge(const DPIm &amp;item, SVFGEdge *edge) override</div><div class="ttdoc">Propagate information forward by matching context.</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00192">SrcSnkDDA.cpp:192</a></div></div>
387
388
  <div class="ttc" id="aOptions_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
388
389
  <div class="ttc" id="aclassSVF_1_1GenericEdge_html_ae6792506a0150a9400d635eceab7f9e7"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">SVF::GenericEdge::getSrcID</a></div><div class="ttdeci">NodeID getSrcID() const</div><div class="ttdoc">get methods of the components</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00081">GenericGraph.h:81</a></div></div>
389
390
  <div class="ttc" id="aclassSVF_1_1FormalRetVFGNode_html"><div class="ttname"><a href="classSVF_1_1FormalRetVFGNode.html">SVF::FormalRetVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l01025">VFGNode.h:1025</a></div></div>
390
- <div class="ttc" id="aclassSVF_1_1SrcSnkDDA_html_a8aa11629166b76a7b6555dee85e512b2"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a8aa11629166b76a7b6555dee85e512b2">SVF::SrcSnkDDA::printZ3Stat</a></div><div class="ttdeci">void printZ3Stat()</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00301">SrcSnkDDA.cpp:301</a></div></div>
391
+ <div class="ttc" id="aclassSVF_1_1SrcSnkDDA_html_a8aa11629166b76a7b6555dee85e512b2"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a8aa11629166b76a7b6555dee85e512b2">SVF::SrcSnkDDA::printZ3Stat</a></div><div class="ttdeci">void printZ3Stat()</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00302">SrcSnkDDA.cpp:302</a></div></div>
391
392
  <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>
392
393
  <div class="ttc" id="aSVFType_8h_html_a817abc424f7cfcdec5954c7807970f36"><div class="ttname"><a href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a></div><div class="ttdeci">#define DSaber</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00596">SVFType.h:596</a></div></div>
393
394
  <div class="ttc" id="aclassSVF_1_1Options_html_ab9443e23bdcb60f118a7aab835f974db"><div class="ttname"><a href="classSVF_1_1Options.html#ab9443e23bdcb60f118a7aab835f974db">SVF::Options::DumpSlice</a></div><div class="ttdeci">static const Option&lt; bool &gt; DumpSlice</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00190">Options.h:190</a></div></div>
394
395
  <div class="ttc" id="aclassSVF_1_1ContextCond_html"><div class="ttname"><a href="classSVF_1_1ContextCond.html">SVF::ContextCond</a></div><div class="ttdef"><b>Definition:</b> <a href="DPItem_8h_source.html#l00206">DPItem.h:206</a></div></div>
395
396
  <div class="ttc" id="aclassSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00221">GenericGraph.h:221</a></div></div>
396
- <div class="ttc" id="aclassSVF_1_1SrcSnkDDA_html_ab35c0d1f02c83a2c10717905f1abf5cd"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ab35c0d1f02c83a2c10717905f1abf5cd">SVF::SrcSnkDDA::setCurSlice</a></div><div class="ttdeci">virtual void setCurSlice(const SVFGNode *src)</div><div class="ttdoc">Slice operations.</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00271">SrcSnkDDA.cpp:271</a></div></div>
397
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ac1dc48ea64a89ce37394a22e609a0cd0"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">SVF::ProgSlice::getSource</a></div><div class="ttdeci">const SVFGNode * getSource() const</div><div class="ttdoc">root and sink operations</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00120">ProgSlice.h:120</a></div></div>
397
+ <div class="ttc" id="aclassSVF_1_1SrcSnkDDA_html_ab35c0d1f02c83a2c10717905f1abf5cd"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ab35c0d1f02c83a2c10717905f1abf5cd">SVF::SrcSnkDDA::setCurSlice</a></div><div class="ttdeci">virtual void setCurSlice(const SVFGNode *src)</div><div class="ttdoc">Slice operations.</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00272">SrcSnkDDA.cpp:272</a></div></div>
398
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ac1dc48ea64a89ce37394a22e609a0cd0"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">SVF::ProgSlice::getSource</a></div><div class="ttdeci">const SVFGNode * getSource() const</div><div class="ttdoc">root and sink operations</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00123">ProgSlice.h:123</a></div></div>
398
399
  <div class="ttc" id="aclassSVF_1_1CallDirSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1CallDirSVFGEdge.html">SVF::CallDirSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00211">VFGEdge.h:211</a></div></div>
399
400
  <div class="ttc" id="aclassSVF_1_1PHIVFGNode_html"><div class="ttname"><a href="classSVF_1_1PHIVFGNode.html">SVF::PHIVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00635">VFGNode.h:635</a></div></div>
400
401
  <div class="ttc" id="aclassSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
401
402
  <div class="ttc" id="aclassSVF_1_1CxtDPItem_html_ad386861998e54ec754ca62f358f03e6a"><div class="ttname"><a href="classSVF_1_1CxtDPItem.html#ad386861998e54ec754ca62f358f03e6a">SVF::CxtDPItem::matchContext</a></div><div class="ttdeci">virtual bool matchContext(NodeID cxt)</div><div class="ttdoc">Match context.</div><div class="ttdef"><b>Definition:</b> <a href="DPItem_8h_source.html#l00526">DPItem.h:526</a></div></div>
402
403
  <div class="ttc" id="aclassSVF_1_1ContextCond_html_a20f15a1661f928ab80bacaf8f5c497b1"><div class="ttname"><a href="classSVF_1_1ContextCond.html#a20f15a1661f928ab80bacaf8f5c497b1">SVF::ContextCond::cxtSize</a></div><div class="ttdeci">u32_t cxtSize() const</div><div class="ttdoc">Get context size.</div><div class="ttdef"><b>Definition:</b> <a href="DPItem_8h_source.html#l00260">DPItem.h:260</a></div></div>
403
404
  <div class="ttc" id="aclassSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00217">GenericGraph.h:217</a></div></div>
404
- <div class="ttc" id="aclassSVF_1_1SrcSnkDDA_html_a8817604b20724703121e9466e5cdb4cd"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a8817604b20724703121e9466e5cdb4cd">SVF::SrcSnkDDA::annotateSlice</a></div><div class="ttdeci">void annotateSlice(ProgSlice *slice)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00283">SrcSnkDDA.cpp:283</a></div></div>
405
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ae482fcb138aaf345586a39daa34ff895"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ae482fcb138aaf345586a39daa34ff895">SVF::ProgSlice::forwardSliceBegin</a></div><div class="ttdeci">SVFGNodeSetIter forwardSliceBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00100">ProgSlice.h:100</a></div></div>
405
+ <div class="ttc" id="aclassSVF_1_1SrcSnkDDA_html_a8817604b20724703121e9466e5cdb4cd"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a8817604b20724703121e9466e5cdb4cd">SVF::SrcSnkDDA::annotateSlice</a></div><div class="ttdeci">void annotateSlice(ProgSlice *slice)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00284">SrcSnkDDA.cpp:284</a></div></div>
406
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ae482fcb138aaf345586a39daa34ff895"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ae482fcb138aaf345586a39daa34ff895">SVF::ProgSlice::forwardSliceBegin</a></div><div class="ttdeci">SVFGNodeSetIter forwardSliceBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00103">ProgSlice.h:103</a></div></div>
406
407
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a5c8cbc986cccb9d84f87aae162df3737"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a5c8cbc986cccb9d84f87aae162df3737">SVF::SVFUtil::isa</a></div><div class="ttdeci">LLVM_NODISCARD bool isa(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00241">Casting.h:241</a></div></div>
407
408
  <div class="ttc" id="aclassSVF_1_1SparseBitVector_html_a112f2ede1240c95f9fe810f2882fab80"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">SVF::SparseBitVector::test</a></div><div class="ttdeci">bool test(unsigned Idx) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00708">SparseBitVector.h:708</a></div></div>
408
409
  <div class="ttc" id="aclassSVF_1_1CxtDPItem_html_a1dea25cd5d72c52cef1cff23b832a196"><div class="ttname"><a href="classSVF_1_1CxtDPItem.html#a1dea25cd5d72c52cef1cff23b832a196">SVF::CxtDPItem::getContexts</a></div><div class="ttdeci">const ContextCond &amp; getContexts() const</div><div class="ttdoc">Get context.</div><div class="ttdef"><b>Definition:</b> <a href="DPItem_8h_source.html#l00515">DPItem.h:515</a></div></div>
409
410
  <div class="ttc" id="aSrcSnkDDA_8h_html"><div class="ttname"><a href="SrcSnkDDA_8h.html">SrcSnkDDA.h</a></div></div>
410
411
  <div class="ttc" id="aclassSVF_1_1VFGEdge_html_a4352297ef44c4eff1efe2f348cce6fe9"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a4352297ef44c4eff1efe2f348cce6fe9">SVF::VFGEdge::isCallVFGEdge</a></div><div class="ttdeci">bool isCallVFGEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00084">VFGEdge.h:84</a></div></div>
411
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a27636f096ec825c4d5cb1dca608afb31"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31">SVF::ProgSlice::sinksEnd</a></div><div class="ttdeci">SVFGNodeSetIter sinksEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00136">ProgSlice.h:136</a></div></div>
412
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a27636f096ec825c4d5cb1dca608afb31"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31">SVF::ProgSlice::sinksEnd</a></div><div class="ttdeci">SVFGNodeSetIter sinksEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00139">ProgSlice.h:139</a></div></div>
412
413
  <div class="ttc" id="aclassSVF_1_1SrcSnkDDA_html_ad6935e27bbd95d26a01b22b879efed58"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVF::SrcSnkDDA::SVFGNodeSetIter</a></div><div class="ttdeci">SVFGNodeSet::const_iterator SVFGNodeSetIter</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00060">SrcSnkDDA.h:60</a></div></div>
413
414
  <div class="ttc" id="aclassSVF_1_1AndersenWaveDiff_html"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html">SVF::AndersenWaveDiff</a></div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00384">Andersen.h:384</a></div></div>
414
415
  <div class="ttc" id="aclassSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00040">SVFModule.h:40</a></div></div>
@@ -427,17 +428,17 @@ $(function() {
427
428
  <div class="ttc" id="aSVFType_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DBUG model of each pass.</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00576">SVFType.h:576</a></div></div>
428
429
  <div class="ttc" id="aclassSVF_1_1ContextCond_html_a92e89bbae0f31bb9eb971ab3edcc8071"><div class="ttname"><a href="classSVF_1_1ContextCond.html#a92e89bbae0f31bb9eb971ab3edcc8071">SVF::ContextCond::setMaxCxtLen</a></div><div class="ttdeci">static void setMaxCxtLen(u32_t max)</div><div class="ttdoc">set max context limit</div><div class="ttdef"><b>Definition:</b> <a href="DPItem_8h_source.html#l00265">DPItem.h:265</a></div></div>
429
430
  <div class="ttc" id="aclassSVF_1_1SrcSnkDDA_html_a47a4be28c625bf4d079a04ac24132165"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a47a4be28c625bf4d079a04ac24132165">SVF::SrcSnkDDA::CallSiteSet</a></div><div class="ttdeci">Set&lt; const CallICFGNode * &gt; CallSiteSet</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00064">SrcSnkDDA.h:64</a></div></div>
430
- <div class="ttc" id="aclassSVF_1_1SrcSnkDDA_html_acae985068ff1c20fb81c4c9ba730aaba"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#acae985068ff1c20fb81c4c9ba730aaba">SVF::SrcSnkDDA::dumpSlices</a></div><div class="ttdeci">void dumpSlices()</div><div class="ttdoc">Dump SVFG with annotated slice information.</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00294">SrcSnkDDA.cpp:294</a></div></div>
431
+ <div class="ttc" id="aclassSVF_1_1SrcSnkDDA_html_acae985068ff1c20fb81c4c9ba730aaba"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#acae985068ff1c20fb81c4c9ba730aaba">SVF::SrcSnkDDA::dumpSlices</a></div><div class="ttdeci">void dumpSlices()</div><div class="ttdoc">Dump SVFG with annotated slice information.</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00295">SrcSnkDDA.cpp:295</a></div></div>
431
432
  <div class="ttc" id="aclassSVF_1_1StoreVFGNode_html"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html">SVF::StoreVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00240">VFGNode.h:240</a></div></div>
432
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_aed4bedc716a3e252e44a6f28e677d61c"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aed4bedc716a3e252e44a6f28e677d61c">SVF::ProgSlice::backwardSliceEnd</a></div><div class="ttdeci">SVFGNodeSetIter backwardSliceEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00112">ProgSlice.h:112</a></div></div>
433
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_aed4bedc716a3e252e44a6f28e677d61c"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aed4bedc716a3e252e44a6f28e677d61c">SVF::ProgSlice::backwardSliceEnd</a></div><div class="ttdeci">SVFGNodeSetIter backwardSliceEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00115">ProgSlice.h:115</a></div></div>
433
434
  <div class="ttc" id="aclassSVF_1_1CxtDPItem_html_a31a33a291b4bb688f54572c986c0b845"><div class="ttname"><a href="classSVF_1_1CxtDPItem.html#a31a33a291b4bb688f54572c986c0b845">SVF::CxtDPItem::pushContext</a></div><div class="ttdeci">void pushContext(NodeID cxt)</div><div class="ttdoc">Push context.</div><div class="ttdef"><b>Definition:</b> <a href="DPItem_8h_source.html#l00520">DPItem.h:520</a></div></div>
434
435
  <div class="ttc" id="aclassSVF_1_1SrcSnkDDA_html_a8883b9a42106ed8c55835d2ba9a579cd"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a8883b9a42106ed8c55835d2ba9a579cd">SVF::SrcSnkDDA::initialize</a></div><div class="ttdeci">virtual void initialize(SVFModule *module)</div><div class="ttdoc">Initialize analysis.</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00041">SrcSnkDDA.cpp:41</a></div></div>
435
- <div class="ttc" id="aclassSVF_1_1SrcSnkDDA_html_a3a097517e85b9ea4c92d5e213b04e1f0"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a3a097517e85b9ea4c92d5e213b04e1f0">SVF::SrcSnkDDA::BWProcessIncomingEdge</a></div><div class="ttdeci">void BWProcessIncomingEdge(const DPIm &amp;item, SVFGEdge *edge) override</div><div class="ttdoc">Propagate information backward without matching context, as forward analysis already did it.</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00256">SrcSnkDDA.cpp:256</a></div></div>
436
+ <div class="ttc" id="aclassSVF_1_1SrcSnkDDA_html_a3a097517e85b9ea4c92d5e213b04e1f0"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a3a097517e85b9ea4c92d5e213b04e1f0">SVF::SrcSnkDDA::BWProcessIncomingEdge</a></div><div class="ttdeci">void BWProcessIncomingEdge(const DPIm &amp;item, SVFGEdge *edge) override</div><div class="ttdoc">Propagate information backward without matching context, as forward analysis already did it.</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00257">SrcSnkDDA.cpp:257</a></div></div>
436
437
  <div class="ttc" id="aclassSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00101">GenericGraph.h:101</a></div></div>
437
438
  <div class="ttc" id="anamespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
438
439
  <div class="ttc" id="aclassSVF_1_1VFGEdge_html_a92e3da59f7f5a693945b9a93f169da04"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a92e3da59f7f5a693945b9a93f169da04">SVF::VFGEdge::isCallDirectVFGEdge</a></div><div class="ttdeci">bool isCallDirectVFGEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00092">VFGEdge.h:92</a></div></div>
439
440
  <div class="ttc" id="aAndersen_8h_html"><div class="ttname"><a href="Andersen_8h.html">Andersen.h</a></div></div>
440
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_add10d8fd041ac7e6eb611df8a6b1384b"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#add10d8fd041ac7e6eb611df8a6b1384b">SVF::ProgSlice::forwardSliceEnd</a></div><div class="ttdeci">SVFGNodeSetIter forwardSliceEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00104">ProgSlice.h:104</a></div></div>
441
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_add10d8fd041ac7e6eb611df8a6b1384b"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#add10d8fd041ac7e6eb611df8a6b1384b">SVF::ProgSlice::forwardSliceEnd</a></div><div class="ttdeci">SVFGNodeSetIter forwardSliceEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00107">ProgSlice.h:107</a></div></div>
441
442
  <!-- start footer part -->
442
443
  <hr class="footer"/><address class="footer"><small>
443
444
  Generated by &#160;<a href="http://www.doxygen.org/index.html">