svf-tools 1.0.837 → 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 (401) hide show
  1. package/SVF-doxygen/html/AndersenSCD_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/Andersen_8cpp_source.html +20 -16
  3. package/SVF-doxygen/html/Andersen_8h_source.html +2 -2
  4. package/SVF-doxygen/html/BoundedZ3Expr_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/CFLAlias_8cpp_source.html +2 -2
  6. package/SVF-doxygen/html/CFLBase_8cpp_source.html +4 -4
  7. package/SVF-doxygen/html/CFLGraphBuilder_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/CFLSVFGBuilder_8cpp.html +86 -0
  9. package/SVF-doxygen/html/CFLSVFGBuilder_8cpp_source.html +195 -0
  10. package/SVF-doxygen/html/CFLSVFGBuilder_8h.html +98 -0
  11. package/SVF-doxygen/html/CFLSVFGBuilder_8h_source.html +148 -0
  12. package/SVF-doxygen/html/CFLVF_8cpp_source.html +4 -4
  13. package/SVF-doxygen/html/CFLVF_8h.html +1 -1
  14. package/SVF-doxygen/html/CFLVF_8h_source.html +5 -5
  15. package/SVF-doxygen/html/CHGBuilder_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/ConsG_8cpp_source.html +3 -3
  17. package/SVF-doxygen/html/DCHG_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/DDAPass_8cpp_source.html +9 -9
  19. package/SVF-doxygen/html/DDAStat_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/DDAVFSolver_8h_source.html +1 -1
  21. package/SVF-doxygen/html/DoubleFreeChecker_8cpp_source.html +5 -5
  22. package/SVF-doxygen/html/DoubleFreeChecker_8h_source.html +1 -1
  23. package/SVF-doxygen/html/ExtAPI_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/FSMPTA_8cpp_source.html +3 -3
  25. package/SVF-doxygen/html/FileChecker_8cpp_source.html +2 -2
  26. package/SVF-doxygen/html/FileChecker_8h_source.html +1 -1
  27. package/SVF-doxygen/html/FlowSensitive_8cpp_source.html +3 -3
  28. package/SVF-doxygen/html/ICFG_8cpp_source.html +1 -1
  29. package/SVF-doxygen/html/IRGraph_8cpp_source.html +1 -1
  30. package/SVF-doxygen/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/LLVMModule_8cpp_source.html +2 -2
  32. package/SVF-doxygen/html/LeakChecker_8cpp_source.html +3 -3
  33. package/SVF-doxygen/html/LeakChecker_8h_source.html +1 -1
  34. package/SVF-doxygen/html/LockResultValidator_8cpp_source.html +1 -1
  35. package/SVF-doxygen/html/MHP_8cpp_source.html +1 -1
  36. package/SVF-doxygen/html/MTAAnnotator_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/MTAResultValidator_8cpp_source.html +1 -1
  38. package/SVF-doxygen/html/MTAStat_8cpp_source.html +1 -1
  39. package/SVF-doxygen/html/MemRegion_8cpp_source.html +1 -1
  40. package/SVF-doxygen/html/MemSSA_8cpp_source.html +2 -2
  41. package/SVF-doxygen/html/Options_8cpp_source.html +825 -892
  42. package/SVF-doxygen/html/Options_8h_source.html +275 -297
  43. package/SVF-doxygen/html/PointerAnalysisImpl_8cpp_source.html +1 -1
  44. package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +12 -12
  45. package/SVF-doxygen/html/ProgSlice_8cpp_source.html +170 -136
  46. package/SVF-doxygen/html/ProgSlice_8h_source.html +314 -298
  47. package/SVF-doxygen/html/SVFGBuilder_8cpp_source.html +4 -4
  48. package/SVF-doxygen/html/SVFGOPT_8cpp_source.html +4 -4
  49. package/SVF-doxygen/html/SVFGOPT_8h_source.html +5 -5
  50. package/SVF-doxygen/html/SVFGReadWrite_8cpp_source.html +2 -2
  51. package/SVF-doxygen/html/SVFG_8cpp_source.html +32 -32
  52. package/SVF-doxygen/html/SVFG_8h_source.html +446 -444
  53. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +1 -1
  54. package/SVF-doxygen/html/SVFIR_8cpp_source.html +2 -2
  55. package/SVF-doxygen/html/SVFStatements_8cpp_source.html +1 -1
  56. package/SVF-doxygen/html/SVFUtil_8cpp_source.html +1 -1
  57. package/SVF-doxygen/html/SVFVariables_8cpp_source.html +1 -1
  58. package/SVF-doxygen/html/SaberCondAllocator_8cpp_source.html +2 -2
  59. package/SVF-doxygen/html/SaberCondAllocator_8h_source.html +246 -235
  60. package/SVF-doxygen/html/SaberSVFGBuilder_8cpp.html +1 -0
  61. package/SVF-doxygen/html/SaberSVFGBuilder_8cpp_source.html +272 -266
  62. package/SVF-doxygen/html/SaberSVFGBuilder_8h_source.html +75 -62
  63. package/SVF-doxygen/html/SrcSnkDDA_8cpp_source.html +261 -260
  64. package/SVF-doxygen/html/SrcSnkDDA_8h_source.html +18 -18
  65. package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +3 -3
  66. package/SVF-doxygen/html/SymbolTableInfo_8cpp_source.html +3 -3
  67. package/SVF-doxygen/html/TCT_8cpp_source.html +1 -1
  68. package/SVF-doxygen/html/TypeAnalysis_8cpp_source.html +1 -1
  69. package/SVF-doxygen/html/VFG_8cpp_source.html +1 -1
  70. package/SVF-doxygen/html/VersionedFlowSensitive_8cpp_source.html +4 -4
  71. package/SVF-doxygen/html/WPAPass_8cpp_source.html +5 -5
  72. package/SVF-doxygen/html/Z3Expr_8cpp_source.html +1 -1
  73. package/SVF-doxygen/html/annotated.html +377 -376
  74. package/SVF-doxygen/html/classSVF_1_1AddrStmt.html +1 -1
  75. package/SVF-doxygen/html/classSVF_1_1Andersen.html +18 -14
  76. package/SVF-doxygen/html/classSVF_1_1AndersenBase.html +4 -4
  77. package/SVF-doxygen/html/classSVF_1_1AndersenSCD.html +1 -1
  78. package/SVF-doxygen/html/classSVF_1_1BVDataPTAImpl.html +1 -1
  79. package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +1 -1
  80. package/SVF-doxygen/html/classSVF_1_1BoundedZ3Expr.html +1 -1
  81. package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +1 -1
  82. package/SVF-doxygen/html/classSVF_1_1CFLAlias.html +2 -2
  83. package/SVF-doxygen/html/classSVF_1_1CFLBase.html +4 -4
  84. package/SVF-doxygen/html/classSVF_1_1CFLGraphBuilder.html +1 -1
  85. package/SVF-doxygen/html/classSVF_1_1CFLSVFGBuilder-members.html +121 -0
  86. package/SVF-doxygen/html/classSVF_1_1CFLSVFGBuilder.html +473 -0
  87. package/SVF-doxygen/html/classSVF_1_1CFLSVFGBuilder.png +0 -0
  88. package/SVF-doxygen/html/classSVF_1_1CFLVF-members.html +1 -1
  89. package/SVF-doxygen/html/classSVF_1_1CFLVF.html +11 -11
  90. package/SVF-doxygen/html/classSVF_1_1CHGBuilder.html +1 -1
  91. package/SVF-doxygen/html/classSVF_1_1CallPE.html +1 -1
  92. package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +1 -1
  93. package/SVF-doxygen/html/classSVF_1_1ConstraintNode.html +1 -1
  94. package/SVF-doxygen/html/classSVF_1_1CopyStmt.html +1 -1
  95. package/SVF-doxygen/html/classSVF_1_1DCHGraph.html +1 -1
  96. package/SVF-doxygen/html/classSVF_1_1DDAPass.html +9 -9
  97. package/SVF-doxygen/html/classSVF_1_1DDAStat.html +1 -1
  98. package/SVF-doxygen/html/classSVF_1_1DDAVFSolver.html +1 -1
  99. package/SVF-doxygen/html/classSVF_1_1DoubleFreeChecker.html +6 -6
  100. package/SVF-doxygen/html/classSVF_1_1ExtAPI.html +1 -1
  101. package/SVF-doxygen/html/classSVF_1_1FIObjVar.html +1 -1
  102. package/SVF-doxygen/html/classSVF_1_1FileChecker.html +3 -3
  103. package/SVF-doxygen/html/classSVF_1_1FlowDDA.html +1 -1
  104. package/SVF-doxygen/html/classSVF_1_1FlowSensitive.html +4 -4
  105. package/SVF-doxygen/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  106. package/SVF-doxygen/html/classSVF_1_1GepObjVar.html +1 -1
  107. package/SVF-doxygen/html/classSVF_1_1GepStmt.html +1 -1
  108. package/SVF-doxygen/html/classSVF_1_1GepValVar.html +1 -1
  109. package/SVF-doxygen/html/classSVF_1_1ICFG.html +1 -1
  110. package/SVF-doxygen/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
  111. package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +2 -2
  112. package/SVF-doxygen/html/classSVF_1_1LeakChecker.html +6 -6
  113. package/SVF-doxygen/html/classSVF_1_1LoadStmt.html +1 -1
  114. package/SVF-doxygen/html/classSVF_1_1LockResultValidator.html +1 -1
  115. package/SVF-doxygen/html/classSVF_1_1MHP.html +1 -1
  116. package/SVF-doxygen/html/classSVF_1_1MRGenerator.html +1 -1
  117. package/SVF-doxygen/html/classSVF_1_1MTAAnnotator.html +1 -1
  118. package/SVF-doxygen/html/classSVF_1_1MTAResultValidator.html +1 -1
  119. package/SVF-doxygen/html/classSVF_1_1MTASVFGBuilder.html +3 -3
  120. package/SVF-doxygen/html/classSVF_1_1MTAStat.html +1 -1
  121. package/SVF-doxygen/html/classSVF_1_1MemSSA.html +2 -2
  122. package/SVF-doxygen/html/classSVF_1_1ObjTypeInfo.html +1 -1
  123. package/SVF-doxygen/html/classSVF_1_1ObjVar.html +1 -1
  124. package/SVF-doxygen/html/classSVF_1_1Options-members.html +64 -73
  125. package/SVF-doxygen/html/classSVF_1_1Options.html +128 -362
  126. package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +1 -1
  127. package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +12 -12
  128. package/SVF-doxygen/html/classSVF_1_1ProgSlice-members.html +25 -22
  129. package/SVF-doxygen/html/classSVF_1_1ProgSlice.html +493 -366
  130. package/SVF-doxygen/html/classSVF_1_1RetPE.html +1 -1
  131. package/SVF-doxygen/html/classSVF_1_1SVFG-members.html +182 -181
  132. package/SVF-doxygen/html/classSVF_1_1SVFG.html +326 -300
  133. package/SVF-doxygen/html/classSVF_1_1SVFGBuilder.html +6 -5
  134. package/SVF-doxygen/html/classSVF_1_1SVFGBuilder.png +0 -0
  135. package/SVF-doxygen/html/classSVF_1_1SVFGOPT.html +11 -11
  136. package/SVF-doxygen/html/classSVF_1_1SVFIR.html +2 -2
  137. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +1 -1
  138. package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +7 -7
  139. package/SVF-doxygen/html/classSVF_1_1SaberCondAllocator-members.html +22 -19
  140. package/SVF-doxygen/html/classSVF_1_1SaberCondAllocator.html +239 -160
  141. package/SVF-doxygen/html/classSVF_1_1SaberSVFGBuilder-members.html +11 -9
  142. package/SVF-doxygen/html/classSVF_1_1SaberSVFGBuilder.html +348 -286
  143. package/SVF-doxygen/html/classSVF_1_1SaberSVFGBuilder.png +0 -0
  144. package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +1 -1
  145. package/SVF-doxygen/html/classSVF_1_1SrcSnkDDA.html +263 -261
  146. package/SVF-doxygen/html/classSVF_1_1StoreStmt.html +1 -1
  147. package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +3 -3
  148. package/SVF-doxygen/html/classSVF_1_1SymbolTableInfo.html +3 -3
  149. package/SVF-doxygen/html/classSVF_1_1TCT.html +1 -1
  150. package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +1 -1
  151. package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +1 -1
  152. package/SVF-doxygen/html/classSVF_1_1TypeAnalysis.html +1 -1
  153. package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +1 -1
  154. package/SVF-doxygen/html/classSVF_1_1VFG.html +1 -1
  155. package/SVF-doxygen/html/classSVF_1_1ValVar.html +1 -1
  156. package/SVF-doxygen/html/classSVF_1_1VersionedFlowSensitive.html +4 -4
  157. package/SVF-doxygen/html/classSVF_1_1WPAPass.html +5 -5
  158. package/SVF-doxygen/html/classSVF_1_1Z3Expr.html +1 -1
  159. package/SVF-doxygen/html/classes.html +95 -94
  160. package/SVF-doxygen/html/dir_1b8e404556d3e8597ae60437f0a084bf.html +2 -0
  161. package/SVF-doxygen/html/dir_8a9c8659eb68b9cbd3fead4690588a47.html +2 -0
  162. package/SVF-doxygen/html/files.html +6 -4
  163. package/SVF-doxygen/html/functions_b.html +7 -6
  164. package/SVF-doxygen/html/functions_c.html +38 -29
  165. package/SVF-doxygen/html/functions_d.html +0 -15
  166. package/SVF-doxygen/html/functions_f.html +9 -9
  167. package/SVF-doxygen/html/functions_func_b.html +3 -2
  168. package/SVF-doxygen/html/functions_func_c.html +29 -23
  169. package/SVF-doxygen/html/functions_func_g.html +14 -10
  170. package/SVF-doxygen/html/functions_func_r.html +6 -5
  171. package/SVF-doxygen/html/functions_func_s.html +20 -17
  172. package/SVF-doxygen/html/functions_func_~.html +3 -0
  173. package/SVF-doxygen/html/functions_g.html +10 -6
  174. package/SVF-doxygen/html/functions_m.html +4 -7
  175. package/SVF-doxygen/html/functions_n.html +6 -5
  176. package/SVF-doxygen/html/functions_p.html +15 -14
  177. package/SVF-doxygen/html/functions_r.html +10 -6
  178. package/SVF-doxygen/html/functions_rela_c.html +3 -0
  179. package/SVF-doxygen/html/functions_s.html +24 -21
  180. package/SVF-doxygen/html/functions_t.html +5 -11
  181. package/SVF-doxygen/html/functions_type_n.html +2 -1
  182. package/SVF-doxygen/html/functions_type_s.html +6 -1
  183. package/SVF-doxygen/html/functions_type_w.html +1 -0
  184. package/SVF-doxygen/html/functions_v.html +4 -6
  185. package/SVF-doxygen/html/functions_vars_d.html +0 -15
  186. package/SVF-doxygen/html/functions_vars_m.html +1 -4
  187. package/SVF-doxygen/html/functions_vars_p.html +3 -0
  188. package/SVF-doxygen/html/functions_vars_r.html +3 -0
  189. package/SVF-doxygen/html/functions_vars_s.html +2 -7
  190. package/SVF-doxygen/html/functions_vars_t.html +0 -6
  191. package/SVF-doxygen/html/functions_w.html +3 -2
  192. package/SVF-doxygen/html/functions_~.html +3 -0
  193. package/SVF-doxygen/html/hierarchy.html +2 -1
  194. package/SVF-doxygen/html/namespaceSVF.html +2 -0
  195. package/SVF-doxygen/html/search/all_10.js +207 -206
  196. package/SVF-doxygen/html/search/all_11.js +115 -114
  197. package/SVF-doxygen/html/search/all_12.js +335 -335
  198. package/SVF-doxygen/html/search/all_13.js +190 -192
  199. package/SVF-doxygen/html/search/all_14.js +67 -67
  200. package/SVF-doxygen/html/search/all_15.js +167 -167
  201. package/SVF-doxygen/html/search/all_16.js +63 -63
  202. package/SVF-doxygen/html/search/all_17.js +1 -1
  203. package/SVF-doxygen/html/search/all_18.js +1 -1
  204. package/SVF-doxygen/html/search/all_19.js +11 -11
  205. package/SVF-doxygen/html/search/all_1a.js +26 -25
  206. package/SVF-doxygen/html/search/all_2.js +2 -2
  207. package/SVF-doxygen/html/search/all_3.js +466 -462
  208. package/SVF-doxygen/html/search/all_4.js +230 -235
  209. package/SVF-doxygen/html/search/all_5.js +119 -119
  210. package/SVF-doxygen/html/search/all_6.js +226 -226
  211. package/SVF-doxygen/html/search/all_7.js +804 -803
  212. package/SVF-doxygen/html/search/all_9.js +3 -3
  213. package/SVF-doxygen/html/search/all_b.js +1 -1
  214. package/SVF-doxygen/html/search/all_c.js +1 -1
  215. package/SVF-doxygen/html/search/all_d.js +184 -185
  216. package/SVF-doxygen/html/search/all_e.js +207 -207
  217. package/SVF-doxygen/html/search/all_f.js +116 -116
  218. package/SVF-doxygen/html/search/classes_10.js +73 -73
  219. package/SVF-doxygen/html/search/classes_11.js +15 -15
  220. package/SVF-doxygen/html/search/classes_12.js +2 -2
  221. package/SVF-doxygen/html/search/classes_13.js +10 -10
  222. package/SVF-doxygen/html/search/classes_14.js +14 -14
  223. package/SVF-doxygen/html/search/classes_15.js +1 -1
  224. package/SVF-doxygen/html/search/classes_2.js +37 -36
  225. package/SVF-doxygen/html/search/classes_3.js +37 -37
  226. package/SVF-doxygen/html/search/classes_4.js +9 -9
  227. package/SVF-doxygen/html/search/classes_5.js +28 -28
  228. package/SVF-doxygen/html/search/classes_6.js +104 -104
  229. package/SVF-doxygen/html/search/classes_7.js +34 -34
  230. package/SVF-doxygen/html/search/classes_8.js +56 -56
  231. package/SVF-doxygen/html/search/classes_9.js +1 -1
  232. package/SVF-doxygen/html/search/classes_a.js +12 -12
  233. package/SVF-doxygen/html/search/classes_b.js +29 -29
  234. package/SVF-doxygen/html/search/classes_c.js +6 -6
  235. package/SVF-doxygen/html/search/classes_d.js +18 -18
  236. package/SVF-doxygen/html/search/classes_e.js +36 -36
  237. package/SVF-doxygen/html/search/classes_f.js +25 -25
  238. package/SVF-doxygen/html/search/defines_0.js +3 -3
  239. package/SVF-doxygen/html/search/defines_1.js +2 -2
  240. package/SVF-doxygen/html/search/defines_2.js +30 -30
  241. package/SVF-doxygen/html/search/defines_3.js +20 -20
  242. package/SVF-doxygen/html/search/defines_4.js +2 -2
  243. package/SVF-doxygen/html/search/defines_5.js +4 -4
  244. package/SVF-doxygen/html/search/defines_6.js +2 -2
  245. package/SVF-doxygen/html/search/defines_7.js +5 -5
  246. package/SVF-doxygen/html/search/defines_8.js +11 -11
  247. package/SVF-doxygen/html/search/defines_9.js +9 -9
  248. package/SVF-doxygen/html/search/defines_a.js +2 -2
  249. package/SVF-doxygen/html/search/defines_b.js +1 -1
  250. package/SVF-doxygen/html/search/defines_c.js +3 -3
  251. package/SVF-doxygen/html/search/defines_d.js +2 -2
  252. package/SVF-doxygen/html/search/defines_e.js +7 -7
  253. package/SVF-doxygen/html/search/defines_f.js +3 -3
  254. package/SVF-doxygen/html/search/enums_0.js +3 -3
  255. package/SVF-doxygen/html/search/enums_1.js +2 -2
  256. package/SVF-doxygen/html/search/enums_10.js +1 -1
  257. package/SVF-doxygen/html/search/enums_11.js +1 -1
  258. package/SVF-doxygen/html/search/enums_2.js +8 -8
  259. package/SVF-doxygen/html/search/enums_3.js +1 -1
  260. package/SVF-doxygen/html/search/enums_4.js +3 -3
  261. package/SVF-doxygen/html/search/enums_5.js +1 -1
  262. package/SVF-doxygen/html/search/enums_6.js +2 -2
  263. package/SVF-doxygen/html/search/enums_7.js +2 -2
  264. package/SVF-doxygen/html/search/enums_8.js +4 -4
  265. package/SVF-doxygen/html/search/enums_9.js +1 -1
  266. package/SVF-doxygen/html/search/enums_a.js +1 -1
  267. package/SVF-doxygen/html/search/enums_b.js +7 -7
  268. package/SVF-doxygen/html/search/enums_c.js +1 -1
  269. package/SVF-doxygen/html/search/enums_d.js +4 -4
  270. package/SVF-doxygen/html/search/enums_e.js +2 -2
  271. package/SVF-doxygen/html/search/enums_f.js +4 -4
  272. package/SVF-doxygen/html/search/enumvalues_0.js +14 -14
  273. package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
  274. package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
  275. package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
  276. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  277. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  278. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  279. package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
  280. package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
  281. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  282. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  283. package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
  284. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  285. package/SVF-doxygen/html/search/enumvalues_7.js +9 -9
  286. package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
  287. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  288. package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
  289. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  290. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  291. package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
  292. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  293. package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
  294. package/SVF-doxygen/html/search/files_0.js +13 -13
  295. package/SVF-doxygen/html/search/files_1.js +7 -7
  296. package/SVF-doxygen/html/search/files_10.js +8 -8
  297. package/SVF-doxygen/html/search/files_11.js +8 -8
  298. package/SVF-doxygen/html/search/files_12.js +2 -2
  299. package/SVF-doxygen/html/search/files_2.js +57 -55
  300. package/SVF-doxygen/html/search/files_3.js +14 -14
  301. package/SVF-doxygen/html/search/files_4.js +5 -5
  302. package/SVF-doxygen/html/search/files_5.js +13 -13
  303. package/SVF-doxygen/html/search/files_6.js +9 -9
  304. package/SVF-doxygen/html/search/files_7.js +14 -14
  305. package/SVF-doxygen/html/search/files_8.js +13 -13
  306. package/SVF-doxygen/html/search/files_9.js +18 -18
  307. package/SVF-doxygen/html/search/files_a.js +3 -3
  308. package/SVF-doxygen/html/search/files_b.js +2 -2
  309. package/SVF-doxygen/html/search/files_c.js +20 -20
  310. package/SVF-doxygen/html/search/files_d.js +4 -4
  311. package/SVF-doxygen/html/search/files_e.js +62 -62
  312. package/SVF-doxygen/html/search/files_f.js +8 -8
  313. package/SVF-doxygen/html/search/functions_0.js +13 -13
  314. package/SVF-doxygen/html/search/functions_1.js +362 -362
  315. package/SVF-doxygen/html/search/functions_10.js +140 -140
  316. package/SVF-doxygen/html/search/functions_11.js +139 -139
  317. package/SVF-doxygen/html/search/functions_12.js +289 -288
  318. package/SVF-doxygen/html/search/functions_13.js +59 -59
  319. package/SVF-doxygen/html/search/functions_14.js +39 -39
  320. package/SVF-doxygen/html/search/functions_15.js +71 -71
  321. package/SVF-doxygen/html/search/functions_16.js +32 -32
  322. package/SVF-doxygen/html/search/functions_17.js +3 -3
  323. package/SVF-doxygen/html/search/functions_18.js +173 -172
  324. package/SVF-doxygen/html/search/functions_2.js +89 -89
  325. package/SVF-doxygen/html/search/functions_3.js +260 -258
  326. package/SVF-doxygen/html/search/functions_4.js +78 -78
  327. package/SVF-doxygen/html/search/functions_5.js +53 -53
  328. package/SVF-doxygen/html/search/functions_6.js +60 -60
  329. package/SVF-doxygen/html/search/functions_7.js +856 -855
  330. package/SVF-doxygen/html/search/functions_8.js +149 -149
  331. package/SVF-doxygen/html/search/functions_9.js +424 -424
  332. package/SVF-doxygen/html/search/functions_a.js +30 -30
  333. package/SVF-doxygen/html/search/functions_b.js +2 -2
  334. package/SVF-doxygen/html/search/functions_c.js +25 -25
  335. package/SVF-doxygen/html/search/functions_d.js +79 -79
  336. package/SVF-doxygen/html/search/functions_e.js +35 -35
  337. package/SVF-doxygen/html/search/functions_f.js +56 -56
  338. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  339. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  340. package/SVF-doxygen/html/search/related_0.js +2 -2
  341. package/SVF-doxygen/html/search/related_1.js +2 -2
  342. package/SVF-doxygen/html/search/related_2.js +3 -2
  343. package/SVF-doxygen/html/search/related_3.js +2 -2
  344. package/SVF-doxygen/html/search/related_4.js +2 -2
  345. package/SVF-doxygen/html/search/related_5.js +1 -1
  346. package/SVF-doxygen/html/search/related_6.js +2 -2
  347. package/SVF-doxygen/html/search/related_7.js +4 -4
  348. package/SVF-doxygen/html/search/related_8.js +2 -2
  349. package/SVF-doxygen/html/search/related_9.js +4 -4
  350. package/SVF-doxygen/html/search/related_a.js +19 -19
  351. package/SVF-doxygen/html/search/related_b.js +4 -4
  352. package/SVF-doxygen/html/search/related_c.js +2 -2
  353. package/SVF-doxygen/html/search/related_d.js +12 -12
  354. package/SVF-doxygen/html/search/related_e.js +2 -2
  355. package/SVF-doxygen/html/search/related_f.js +2 -2
  356. package/SVF-doxygen/html/search/typedefs_10.js +17 -16
  357. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  358. package/SVF-doxygen/html/search/typedefs_12.js +11 -11
  359. package/SVF-doxygen/html/search/typedefs_13.js +33 -33
  360. package/SVF-doxygen/html/search/typedefs_14.js +8 -8
  361. package/SVF-doxygen/html/search/typedefs_c.js +1 -1
  362. package/SVF-doxygen/html/search/variables_0.js +151 -151
  363. package/SVF-doxygen/html/search/variables_1.js +75 -75
  364. package/SVF-doxygen/html/search/variables_10.js +98 -97
  365. package/SVF-doxygen/html/search/variables_11.js +45 -44
  366. package/SVF-doxygen/html/search/variables_12.js +90 -92
  367. package/SVF-doxygen/html/search/variables_13.js +4 -6
  368. package/SVF-doxygen/html/search/variables_2.js +38 -38
  369. package/SVF-doxygen/html/search/variables_3.js +142 -142
  370. package/SVF-doxygen/html/search/variables_4.js +50 -55
  371. package/SVF-doxygen/html/search/variables_5.js +37 -37
  372. package/SVF-doxygen/html/search/variables_6.js +66 -66
  373. package/SVF-doxygen/html/search/variables_7.js +34 -34
  374. package/SVF-doxygen/html/search/variables_8.js +7 -7
  375. package/SVF-doxygen/html/search/variables_9.js +78 -78
  376. package/SVF-doxygen/html/search/variables_a.js +4 -4
  377. package/SVF-doxygen/html/search/variables_b.js +10 -10
  378. package/SVF-doxygen/html/search/variables_c.js +45 -45
  379. package/SVF-doxygen/html/search/variables_d.js +55 -56
  380. package/SVF-doxygen/html/search/variables_e.js +123 -123
  381. package/SVF-doxygen/html/search/variables_f.js +30 -30
  382. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +2 -2
  383. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
  384. package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +2 -2
  385. package/SVF-doxygen/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +2 -2
  386. package/SVF-doxygen/html/svf-ex_8cpp.html +1 -1
  387. package/SVF-doxygen/html/svf-ex_8cpp_source.html +1 -1
  388. package/package.json +1 -1
  389. package/svf/include/CFL/CFLSVFGBuilder.h +58 -0
  390. package/svf/include/CFL/CFLVF.h +2 -2
  391. package/svf/include/Graphs/SVFG.h +1 -0
  392. package/svf/include/SABER/ProgSlice.h +11 -0
  393. package/svf/include/SABER/SaberCondAllocator.h +8 -0
  394. package/svf/include/SABER/SaberSVFGBuilder.h +12 -2
  395. package/svf/include/Util/Options.h +1 -14
  396. package/svf/lib/CFL/CFLSVFGBuilder.cpp +100 -0
  397. package/svf/lib/SABER/ProgSlice.cpp +48 -1
  398. package/svf/lib/SABER/SaberSVFGBuilder.cpp +5 -0
  399. package/svf/lib/SABER/SrcSnkDDA.cpp +1 -0
  400. package/svf/lib/Util/Options.cpp +6 -64
  401. package/svf/lib/WPA/Andersen.cpp +5 -2
@@ -95,6 +95,8 @@ Public Types</h2></td></tr>
95
95
  <tr class="memitem:a7076e2b7e187a295824189f30ca894e5"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList</a>&lt; const <a class="el" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ProgSlice.html#a7076e2b7e187a295824189f30ca894e5">CFWorkList</a></td></tr>
96
96
  <tr class="memdesc:a7076e2b7e187a295824189f30ca894e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">worklist for control-flow guard computation <a href="classSVF_1_1ProgSlice.html#a7076e2b7e187a295824189f30ca894e5">More...</a><br /></td></tr>
97
97
  <tr class="separator:a7076e2b7e187a295824189f30ca894e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
98
+ <tr class="memitem:a256122a6455854a99131b807f7eb8335"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classSVF_1_1SaberCondAllocator.html#a1e5ab069ebb4d17f04788a37fa616cab">SaberCondAllocator::SVFGNodeToSVFGNodeSetMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ProgSlice.html#a256122a6455854a99131b807f7eb8335">SVFGNodeToSVFGNodeSetMap</a></td></tr>
99
+ <tr class="separator:a256122a6455854a99131b807f7eb8335"><td class="memSeparator" colspan="2">&#160;</td></tr>
98
100
  </table><table class="memberdecls">
99
101
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
100
102
  Public Member Functions</h2></td></tr>
@@ -214,6 +216,11 @@ Protected Member Functions</h2></td></tr>
214
216
  <tr class="memitem:af55830503ef47b4b1c15c0e5b3cd6a3f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ProgSlice.html#af55830503ef47b4b1c15c0e5b3cd6a3f">setFinalCond</a> (const <a class="el" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> &amp;cond)</td></tr>
215
217
  <tr class="memdesc:af55830503ef47b4b1c15c0e5b3cd6a3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set final condition after all path reachability analysis. <a href="classSVF_1_1ProgSlice.html#af55830503ef47b4b1c15c0e5b3cd6a3f">More...</a><br /></td></tr>
216
218
  <tr class="separator:af55830503ef47b4b1c15c0e5b3cd6a3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
219
+ <tr class="memitem:abe0cc350db350bd4e9a9973c9052fc41"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ProgSlice.html#abe0cc350db350bd4e9a9973c9052fc41">computeInvalidCondFromRemovedSUVFEdge</a> (const <a class="el" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVFGNode</a> *cur)</td></tr>
220
+ <tr class="memdesc:abe0cc350db350bd4e9a9973c9052fc41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute invalid branch condition stemming from removed strong update value-flow edges. <a href="classSVF_1_1ProgSlice.html#abe0cc350db350bd4e9a9973c9052fc41">More...</a><br /></td></tr>
221
+ <tr class="separator:abe0cc350db350bd4e9a9973c9052fc41"><td class="memSeparator" colspan="2">&#160;</td></tr>
222
+ <tr class="memitem:a174a74103c69afbbff58d30f5a41404c"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classSVF_1_1ProgSlice.html#a256122a6455854a99131b807f7eb8335">SVFGNodeToSVFGNodeSetMap</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ProgSlice.html#a174a74103c69afbbff58d30f5a41404c">getRemovedSUVFEdges</a> () const</td></tr>
223
+ <tr class="separator:a174a74103c69afbbff58d30f5a41404c"><td class="memSeparator" colspan="2">&#160;</td></tr>
217
224
  </table><table class="memberdecls">
218
225
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
219
226
  Private Attributes</h2></td></tr>
@@ -340,6 +347,22 @@ Private Attributes</h2></td></tr>
340
347
 
341
348
  <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00056">56</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
342
349
 
350
+ </div>
351
+ </div>
352
+ <a id="a256122a6455854a99131b807f7eb8335"></a>
353
+ <h2 class="memtitle"><span class="permalink"><a href="#a256122a6455854a99131b807f7eb8335">&#9670;&nbsp;</a></span>SVFGNodeToSVFGNodeSetMap</h2>
354
+
355
+ <div class="memitem">
356
+ <div class="memproto">
357
+ <table class="memname">
358
+ <tr>
359
+ <td class="memname">typedef <a class="el" href="classSVF_1_1SaberCondAllocator.html#a1e5ab069ebb4d17f04788a37fa616cab">SaberCondAllocator::SVFGNodeToSVFGNodeSetMap</a> <a class="el" href="classSVF_1_1ProgSlice.html#a256122a6455854a99131b807f7eb8335">SVF::ProgSlice::SVFGNodeToSVFGNodeSetMap</a></td>
360
+ </tr>
361
+ </table>
362
+ </div><div class="memdoc">
363
+
364
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00061">61</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
365
+
343
366
  </div>
344
367
  </div>
345
368
  <a id="a684e44ade783439c6f77a8d84eed282c"></a>
@@ -403,12 +426,12 @@ Private Attributes</h2></td></tr>
403
426
 
404
427
  <p>Constructor. </p>
405
428
 
406
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00062">62</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
407
- <div class="fragment"><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; :</div>
408
- <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087">root</a>(src), <a class="code" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">partialReachable</a>(<span class="keyword">false</span>), <a class="code" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">fullReachable</a>(<span class="keyword">false</span>), <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>(<span class="keyword">false</span>),</div>
409
- <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>(pa), <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a>(<span class="keyword">nullptr</span>), <a class="code" href="classSVF_1_1ProgSlice.html#a011fcd4f081926e808e15630cb2d4b47">finalCond</a>(pa-&gt;getFalseCond()), <a class="code" href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde">svfg</a>(graph)</div>
410
- <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; {</div>
411
- <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div>
429
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00065">65</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
430
+ <div class="fragment"><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; :</div>
431
+ <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087">root</a>(src), <a class="code" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">partialReachable</a>(<span class="keyword">false</span>), <a class="code" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">fullReachable</a>(<span class="keyword">false</span>), <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>(<span class="keyword">false</span>),</div>
432
+ <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>(pa), <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a>(<span class="keyword">nullptr</span>), <a class="code" href="classSVF_1_1ProgSlice.html#a011fcd4f081926e808e15630cb2d4b47">finalCond</a>(pa-&gt;getFalseCond()), <a class="code" href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde">svfg</a>(graph)</div>
433
+ <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div>
434
+ <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div>
412
435
  </div><!-- fragment -->
413
436
  </div>
414
437
  </div>
@@ -437,10 +460,10 @@ Private Attributes</h2></td></tr>
437
460
 
438
461
  <p>Destructor. </p>
439
462
 
440
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00069">69</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
441
- <div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div>
442
- <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#a899332b210414ac991b57e83851ee5be">destroy</a>();</div>
443
- <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div>
463
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00072">72</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
464
+ <div class="fragment"><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div>
465
+ <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#a899332b210414ac991b57e83851ee5be">destroy</a>();</div>
466
+ <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div>
444
467
  </div><!-- fragment -->
445
468
  </div>
446
469
  </div>
@@ -469,10 +492,10 @@ Private Attributes</h2></td></tr>
469
492
  </table>
470
493
  </div><div class="memdoc">
471
494
 
472
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00088">88</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
473
- <div class="fragment"><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div>
474
- <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.insert(node);</div>
475
- <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div>
495
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00091">91</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
496
+ <div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div>
497
+ <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.insert(node);</div>
498
+ <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div>
476
499
  </div><!-- fragment -->
477
500
  </div>
478
501
  </div>
@@ -502,10 +525,10 @@ Private Attributes</h2></td></tr>
502
525
 
503
526
  <p>Forward and backward slice operations. </p>
504
527
 
505
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00084">84</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
506
- <div class="fragment"><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div>
507
- <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.insert(node);</div>
508
- <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div>
528
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00087">87</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
529
+ <div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div>
530
+ <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.insert(node);</div>
531
+ <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div>
509
532
  </div><!-- fragment -->
510
533
  </div>
511
534
  </div>
@@ -533,10 +556,10 @@ Private Attributes</h2></td></tr>
533
556
  </table>
534
557
  </div><div class="memdoc">
535
558
 
536
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00124">124</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
537
- <div class="fragment"><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div>
538
- <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>.insert(node);</div>
539
- <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div>
559
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00127">127</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
560
+ <div class="fragment"><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div>
561
+ <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>.insert(node);</div>
562
+ <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div>
540
563
  </div><!-- fragment -->
541
564
  </div>
542
565
  </div>
@@ -572,41 +595,43 @@ Private Attributes</h2></td></tr>
572
595
  <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div>
573
596
  <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = worklist.pop();</div>
574
597
  <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aee72d029c185c24b2bf01cdc0dcb25d8">setCurSVFGNode</a>(node);</div>
575
- <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> cond = <a class="code" href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">getVFCond</a>(node);</div>
576
- <div class="line"><a name="l00056"></a><span class="lineno"> 56</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 = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); it!=eit; ++it)</div>
577
- <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div>
578
- <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = (*it);</div>
579
- <div class="line"><a name="l00059"></a><span class="lineno"> 59</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>
580
- <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ProgSlice.html#a066430ffa98a3fa0a5ad48d26e0450f7">inBackwardSlice</a>(succ))</div>
581
- <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div>
582
- <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> vfCond;</div>
583
- <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* nodeBB = <a class="code" href="classSVF_1_1ProgSlice.html#abca08cad9cadc72caf6743df3ff934e7">getSVFGNodeBB</a>(node);</div>
584
- <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* succBB = <a class="code" href="classSVF_1_1ProgSlice.html#abca08cad9cadc72caf6743df3ff934e7">getSVFGNodeBB</a>(succ);</div>
585
- <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#ab514f387ae2122e919030c5006f1bbce">clearCFCond</a>();</div>
586
- <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; </div>
587
- <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span>(edge-&gt;<a class="code" href="classSVF_1_1VFGEdge.html#a4352297ef44c4eff1efe2f348cce6fe9">isCallVFGEdge</a>())</div>
588
- <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div>
589
- <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; vfCond = <a class="code" href="classSVF_1_1ProgSlice.html#a7a3ba7e6c08d84f82690a594e286205f">ComputeInterCallVFGGuard</a>(nodeBB,succBB, <a class="code" href="classSVF_1_1ProgSlice.html#a8ae327bc7bf72f892d87730edfc67d0d">getCallSite</a>(edge)-&gt;getParent());</div>
590
- <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div>
591
- <div class="line"><a name="l00072"></a><span class="lineno"> 72</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>
592
- <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div>
593
- <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; vfCond = <a class="code" href="classSVF_1_1ProgSlice.html#ab7311a806f1c3899b5a4de106eac24b7">ComputeInterRetVFGGuard</a>(nodeBB,succBB, <a class="code" href="classSVF_1_1ProgSlice.html#a07ce77afbf69d5e2a47afaa39eaea886">getRetSite</a>(edge)-&gt;getParent());</div>
594
- <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div>
595
- <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">else</span></div>
596
- <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; vfCond = <a class="code" href="classSVF_1_1ProgSlice.html#ae7f6f66b7e70cf872dc572b073f6d67b">ComputeIntraVFGGuard</a>(nodeBB,succBB);</div>
597
- <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
598
- <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> succPathCond = <a class="code" href="classSVF_1_1ProgSlice.html#aceb26d08f0d12367e4726e1ff0e25953">condAnd</a>(cond, vfCond);</div>
599
- <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ProgSlice.html#ab5de7bf99935818ef1b0962e36b8624c">setVFCond</a>(succ, <a class="code" href="classSVF_1_1ProgSlice.html#a3e729aba81cd64e8628df630f5a0f416">condOr</a>(<a class="code" href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">getVFCond</a>(succ), succPathCond) ))</div>
600
- <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; worklist.push(succ);</div>
601
- <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div>
602
- <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
603
- <div class="line"><a name="l00084"></a><span class="lineno"> 84</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; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt;</div>
604
- <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="stringliteral">&quot;) --&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;succ (&quot;</span> &lt;&lt; succ-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;) condition: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">getVFCond</a>(succ) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
605
- <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div>
606
- <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div>
607
- <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; </div>
608
- <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a62a9f2c107f27d6c04c30ef153ffb8ed">isSatisfiableForAll</a>();</div>
609
- <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;}</div>
598
+ <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; </div>
599
+ <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> invalidCond = <a class="code" href="classSVF_1_1ProgSlice.html#abe0cc350db350bd4e9a9973c9052fc41">computeInvalidCondFromRemovedSUVFEdge</a>(node);</div>
600
+ <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> cond = <a class="code" href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">getVFCond</a>(node);</div>
601
+ <div class="line"><a name="l00058"></a><span class="lineno"> 58</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 = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); it!=eit; ++it)</div>
602
+ <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div>
603
+ <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = (*it);</div>
604
+ <div class="line"><a name="l00061"></a><span class="lineno"> 61</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>
605
+ <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ProgSlice.html#a066430ffa98a3fa0a5ad48d26e0450f7">inBackwardSlice</a>(succ))</div>
606
+ <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div>
607
+ <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> vfCond;</div>
608
+ <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* nodeBB = <a class="code" href="classSVF_1_1ProgSlice.html#abca08cad9cadc72caf6743df3ff934e7">getSVFGNodeBB</a>(node);</div>
609
+ <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* succBB = <a class="code" href="classSVF_1_1ProgSlice.html#abca08cad9cadc72caf6743df3ff934e7">getSVFGNodeBB</a>(succ);</div>
610
+ <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#ab514f387ae2122e919030c5006f1bbce">clearCFCond</a>();</div>
611
+ <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; </div>
612
+ <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">if</span>(edge-&gt;<a class="code" href="classSVF_1_1VFGEdge.html#a4352297ef44c4eff1efe2f348cce6fe9">isCallVFGEdge</a>())</div>
613
+ <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div>
614
+ <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; vfCond = <a class="code" href="classSVF_1_1ProgSlice.html#a7a3ba7e6c08d84f82690a594e286205f">ComputeInterCallVFGGuard</a>(nodeBB,succBB, <a class="code" href="classSVF_1_1ProgSlice.html#a8ae327bc7bf72f892d87730edfc67d0d">getCallSite</a>(edge)-&gt;getParent());</div>
615
+ <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div>
616
+ <div class="line"><a name="l00074"></a><span class="lineno"> 74</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>
617
+ <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div>
618
+ <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; vfCond = <a class="code" href="classSVF_1_1ProgSlice.html#ab7311a806f1c3899b5a4de106eac24b7">ComputeInterRetVFGGuard</a>(nodeBB,succBB, <a class="code" href="classSVF_1_1ProgSlice.html#a07ce77afbf69d5e2a47afaa39eaea886">getRetSite</a>(edge)-&gt;getParent());</div>
619
+ <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div>
620
+ <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">else</span></div>
621
+ <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; vfCond = <a class="code" href="classSVF_1_1ProgSlice.html#ae7f6f66b7e70cf872dc572b073f6d67b">ComputeIntraVFGGuard</a>(nodeBB,succBB);</div>
622
+ <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; vfCond = <a class="code" href="classSVF_1_1ProgSlice.html#aceb26d08f0d12367e4726e1ff0e25953">condAnd</a>(vfCond, <a class="code" href="classSVF_1_1ProgSlice.html#a0dfd466a758dd0be4c2bc5832c50fbd8">condNeg</a>(invalidCond));</div>
623
+ <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> succPathCond = <a class="code" href="classSVF_1_1ProgSlice.html#aceb26d08f0d12367e4726e1ff0e25953">condAnd</a>(cond, vfCond);</div>
624
+ <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ProgSlice.html#ab5de7bf99935818ef1b0962e36b8624c">setVFCond</a>(succ, <a class="code" href="classSVF_1_1ProgSlice.html#a3e729aba81cd64e8628df630f5a0f416">condOr</a>(<a class="code" href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">getVFCond</a>(succ), succPathCond) ))</div>
625
+ <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; worklist.push(succ);</div>
626
+ <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div>
627
+ <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; </div>
628
+ <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; node (&quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt;</div>
629
+ <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="stringliteral">&quot;) --&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;succ (&quot;</span> &lt;&lt; succ-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;) condition: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">getVFCond</a>(succ) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
630
+ <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div>
631
+ <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div>
632
+ <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
633
+ <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a62a9f2c107f27d6c04c30ef153ffb8ed">isSatisfiableForAll</a>();</div>
634
+ <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;}</div>
610
635
  </div><!-- fragment -->
611
636
  </div>
612
637
  </div>
@@ -633,10 +658,10 @@ Private Attributes</h2></td></tr>
633
658
  </table>
634
659
  </div><div class="memdoc">
635
660
 
636
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00108">108</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
637
- <div class="fragment"><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div>
638
- <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.begin();</div>
639
- <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div>
661
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00111">111</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
662
+ <div class="fragment"><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div>
663
+ <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.begin();</div>
664
+ <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div>
640
665
  </div><!-- fragment -->
641
666
  </div>
642
667
  </div>
@@ -663,10 +688,10 @@ Private Attributes</h2></td></tr>
663
688
  </table>
664
689
  </div><div class="memdoc">
665
690
 
666
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00112">112</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
667
- <div class="fragment"><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; {</div>
668
- <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.end();</div>
669
- <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div>
691
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00115">115</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
692
+ <div class="fragment"><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div>
693
+ <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.end();</div>
694
+ <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div>
670
695
  </div><!-- fragment -->
671
696
  </div>
672
697
  </div>
@@ -696,10 +721,10 @@ Private Attributes</h2></td></tr>
696
721
  <p>Clear Control flow conditions before each VF computation. </p>
697
722
  <p>TODO: how to clean z3 memory</p>
698
723
 
699
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00218">218</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
700
- <div class="fragment"><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; {</div>
701
- <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a5406e73b860c419143035ee3774e7c1c">clearCFCond</a>();</div>
702
- <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div>
724
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00221">221</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
725
+ <div class="fragment"><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; {</div>
726
+ <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a5406e73b860c419143035ee3774e7c1c">clearCFCond</a>();</div>
727
+ <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div>
703
728
  </div><!-- fragment -->
704
729
  </div>
705
730
  </div>
@@ -743,10 +768,10 @@ Private Attributes</h2></td></tr>
743
768
  </table>
744
769
  </div><div class="memdoc">
745
770
 
746
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00253">253</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
747
- <div class="fragment"><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; {</div>
748
- <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#aedb63308f8980bbaf2b6c1bd2826a710">ComputeInterCallVFGGuard</a>(src,dst,callBB);</div>
749
- <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div>
771
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00256">256</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
772
+ <div class="fragment"><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div>
773
+ <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#aedb63308f8980bbaf2b6c1bd2826a710">ComputeInterCallVFGGuard</a>(src,dst,callBB);</div>
774
+ <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; }</div>
750
775
  </div><!-- fragment -->
751
776
  </div>
752
777
  </div>
@@ -790,10 +815,10 @@ Private Attributes</h2></td></tr>
790
815
  </table>
791
816
  </div><div class="memdoc">
792
817
 
793
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00257">257</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
794
- <div class="fragment"><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div>
795
- <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a8bb7f9ce20b5a640aa48c32176f429bf">ComputeInterRetVFGGuard</a>(src,dst,retBB);</div>
796
- <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div>
818
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00260">260</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
819
+ <div class="fragment"><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; {</div>
820
+ <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a8bb7f9ce20b5a640aa48c32176f429bf">ComputeInterRetVFGGuard</a>(src,dst,retBB);</div>
821
+ <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</div>
797
822
  </div><!-- fragment -->
798
823
  </div>
799
824
  </div>
@@ -833,10 +858,78 @@ Private Attributes</h2></td></tr>
833
858
 
834
859
  <p>Compute guards for value-flows. </p>
835
860
 
836
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00249">249</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
837
- <div class="fragment"><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div>
838
- <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#af77d3631664b21a16818f54b03b5a832">ComputeIntraVFGGuard</a>(src,dst);</div>
839
- <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; }</div>
861
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00252">252</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
862
+ <div class="fragment"><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; {</div>
863
+ <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#af77d3631664b21a16818f54b03b5a832">ComputeIntraVFGGuard</a>(src,dst);</div>
864
+ <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div>
865
+ </div><!-- fragment -->
866
+ </div>
867
+ </div>
868
+ <a id="abe0cc350db350bd4e9a9973c9052fc41"></a>
869
+ <h2 class="memtitle"><span class="permalink"><a href="#abe0cc350db350bd4e9a9973c9052fc41">&#9670;&nbsp;</a></span>computeInvalidCondFromRemovedSUVFEdge()</h2>
870
+
871
+ <div class="memitem">
872
+ <div class="memproto">
873
+ <table class="mlabels">
874
+ <tr>
875
+ <td class="mlabels-left">
876
+ <table class="memname">
877
+ <tr>
878
+ <td class="memname"><a class="el" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">ProgSlice::Condition</a> ProgSlice::computeInvalidCondFromRemovedSUVFEdge </td>
879
+ <td>(</td>
880
+ <td class="paramtype">const <a class="el" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVFGNode</a> *&#160;</td>
881
+ <td class="paramname"><em>cur</em></td><td>)</td>
882
+ <td></td>
883
+ </tr>
884
+ </table>
885
+ </td>
886
+ <td class="mlabels-right">
887
+ <span class="mlabels"><span class="mlabel">protected</span></span> </td>
888
+ </tr>
889
+ </table>
890
+ </div><div class="memdoc">
891
+
892
+ <p>Compute invalid branch condition stemming from removed strong update value-flow edges. </p>
893
+ <p>Compute invalid branch condition stemming from removed strong update value-flow edges</p>
894
+ <p>Fix issue: <a href="https://github.com/SVF-tools/SVF/issues/1306">https://github.com/SVF-tools/SVF/issues/1306</a> Line 11-&gt;13 is removed due to a strong update at Line 13, which means Line 11 is unreachable to Line 13 on the value flow graph. However on the control flow graph they are still considered as reachable, making the vf guard on Line 11 -&gt; Line 15 a true condition (should consider the infeasible branch Line 11 -&gt; Line 13) Therefore, we collect this infeasible branch condition (condition on Line 11 -&gt; Line 13, <code>a == b</code>) as an invalid condition (invalidCond), and add the negation of invalidCond when computing value flow guard starting from the source of the SU. In this example, we add <code>a != b</code> on Line 11 -&gt; Line 15.</p>
895
+ <dl class="params"><dt>Parameters</dt><dd>
896
+ <table class="params">
897
+ <tr><td class="paramname">cur</td><td>current <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node </td></tr>
898
+ </table>
899
+ </dd>
900
+ </dl>
901
+ <dl class="section return"><dt>Returns</dt><dd>invalid branch condition </dd></dl>
902
+
903
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00108">108</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
904
+ <div class="fragment"><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;{</div>
905
+ <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const SVFBasicBlock*&gt;</a> validOutBBs; <span class="comment">// the BBs of valid successors</span></div>
906
+ <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> it = cur-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), eit = cur-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); it!=eit; ++it)</div>
907
+ <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div>
908
+ <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = (*it);</div>
909
+ <div class="line"><a name="l00114"></a><span class="lineno"> 114</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>
910
+ <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ProgSlice.html#a066430ffa98a3fa0a5ad48d26e0450f7">inBackwardSlice</a>(succ))</div>
911
+ <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div>
912
+ <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; validOutBBs.insert(<a class="code" href="classSVF_1_1ProgSlice.html#abca08cad9cadc72caf6743df3ff934e7">getSVFGNodeBB</a>(succ));</div>
913
+ <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div>
914
+ <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div>
915
+ <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> invalidCond = <a class="code" href="classSVF_1_1ProgSlice.html#a9d81f792b6a8b15395a63d06daf56573">getFalseCond</a>();</div>
916
+ <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">auto</span> suVFEdgesIt = <a class="code" href="classSVF_1_1ProgSlice.html#a174a74103c69afbbff58d30f5a41404c">getRemovedSUVFEdges</a>().find(cur);</div>
917
+ <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span> (suVFEdgesIt != <a class="code" href="classSVF_1_1ProgSlice.html#a174a74103c69afbbff58d30f5a41404c">getRemovedSUVFEdges</a>().end())</div>
918
+ <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div>
919
+ <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;succ: suVFEdgesIt-&gt;second)</div>
920
+ <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div>
921
+ <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">if</span> (!validOutBBs.count(<a class="code" href="classSVF_1_1ProgSlice.html#abca08cad9cadc72caf6743df3ff934e7">getSVFGNodeBB</a>(succ)))</div>
922
+ <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div>
923
+ <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="comment">// removed vfg node does not reside in the BBs of valid successors</span></div>
924
+ <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *nodeBB = <a class="code" href="classSVF_1_1ProgSlice.html#abca08cad9cadc72caf6743df3ff934e7">getSVFGNodeBB</a>(cur);</div>
925
+ <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *succBB = <a class="code" href="classSVF_1_1ProgSlice.html#abca08cad9cadc72caf6743df3ff934e7">getSVFGNodeBB</a>(succ);</div>
926
+ <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#ab514f387ae2122e919030c5006f1bbce">clearCFCond</a>();</div>
927
+ <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; invalidCond = <a class="code" href="classSVF_1_1ProgSlice.html#a3e729aba81cd64e8628df630f5a0f416">condOr</a>(invalidCond, <a class="code" href="classSVF_1_1ProgSlice.html#ae7f6f66b7e70cf872dc572b073f6d67b">ComputeIntraVFGGuard</a>(nodeBB, succBB));</div>
928
+ <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div>
929
+ <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div>
930
+ <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div>
931
+ <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> invalidCond;</div>
932
+ <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;}</div>
840
933
  </div><!-- fragment -->
841
934
  </div>
842
935
  </div>
@@ -876,10 +969,10 @@ Private Attributes</h2></td></tr>
876
969
 
877
970
  <p>Condition operations. </p>
878
971
 
879
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00179">179</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
880
- <div class="fragment"><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; {</div>
881
- <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">condAnd</a>(lhs,rhs);</div>
882
- <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div>
972
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00182">182</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
973
+ <div class="fragment"><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div>
974
+ <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">condAnd</a>(lhs,rhs);</div>
975
+ <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div>
883
976
  </div><!-- fragment -->
884
977
  </div>
885
978
  </div>
@@ -907,10 +1000,10 @@ Private Attributes</h2></td></tr>
907
1000
  </table>
908
1001
  </div><div class="memdoc">
909
1002
 
910
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00187">187</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
911
- <div class="fragment"><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; {</div>
912
- <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a620d53b9af8dd30523c478f4e9655817">condNeg</a>(cond);</div>
913
- <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div>
1003
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00190">190</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1004
+ <div class="fragment"><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; {</div>
1005
+ <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a620d53b9af8dd30523c478f4e9655817">condNeg</a>(cond);</div>
1006
+ <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div>
914
1007
  </div><!-- fragment -->
915
1008
  </div>
916
1009
  </div>
@@ -948,10 +1041,10 @@ Private Attributes</h2></td></tr>
948
1041
  </table>
949
1042
  </div><div class="memdoc">
950
1043
 
951
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00183">183</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
952
- <div class="fragment"><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; {</div>
953
- <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">condOr</a>(lhs,rhs);</div>
954
- <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div>
1044
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00186">186</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1045
+ <div class="fragment"><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; {</div>
1046
+ <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">condOr</a>(lhs,rhs);</div>
1047
+ <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; }</div>
955
1048
  </div><!-- fragment -->
956
1049
  </div>
957
1050
  </div>
@@ -980,9 +1073,9 @@ Private Attributes</h2></td></tr>
980
1073
 
981
1074
  <p>Release memory. </p>
982
1075
 
983
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00199">199</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
984
- <div class="fragment"><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;{</div>
985
- <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;}</div>
1076
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00246">246</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
1077
+ <div class="fragment"><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;{</div>
1078
+ <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;}</div>
986
1079
  </div><!-- fragment -->
987
1080
  </div>
988
1081
  </div>
@@ -1010,10 +1103,10 @@ Private Attributes</h2></td></tr>
1010
1103
  </table>
1011
1104
  </div><div class="memdoc">
1012
1105
 
1013
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00199">199</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1014
- <div class="fragment"><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div>
1015
- <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a100c1962eac6d7af420defc827a025ed">dumpCond</a>(cond);</div>
1016
- <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div>
1106
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00202">202</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1107
+ <div class="fragment"><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; {</div>
1108
+ <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a100c1962eac6d7af420defc827a025ed">dumpCond</a>(cond);</div>
1109
+ <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div>
1017
1110
  </div><!-- fragment -->
1018
1111
  </div>
1019
1112
  </div>
@@ -1037,30 +1130,30 @@ Private Attributes</h2></td></tr>
1037
1130
  <p>Atom &ndash; a propositional variable: a, b, c Literal &ndash; an atom or its negation: a, ~a Clause &ndash; A disjunction of some literals: a \vee b CNF formula &ndash; a conjunction of some clauses: (a \vee b ) \wedge (c \vee d) </p>
1038
1131
  <p>print leak path after eliminating duplicated element</p>
1039
1132
 
1040
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00173">173</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
1041
- <div class="fragment"><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;{</div>
1042
- <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
1043
- <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; std::stringstream rawstr(str);</div>
1044
- <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> locations;</div>
1045
- <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> elems = <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a87205db039579f05214507c48d6befec">exactCondElem</a>(<a class="code" href="classSVF_1_1ProgSlice.html#a011fcd4f081926e808e15630cb2d4b47">finalCond</a>);</div>
1046
- <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; </div>
1047
- <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> it = elems.<a class="code" href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">begin</a>(), eit = elems.<a class="code" href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">end</a>(); it!=eit; ++it)</div>
1048
- <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; {</div>
1049
- <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* tinst = <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a1d8b90edf6ec679a97282ba60c07134d">getCondInst</a>(*it);</div>
1050
- <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#ad5d27f65374025b6a105ea7a92cbdb50">isNegCond</a>(*it))</div>
1051
- <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; locations.insert(tinst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>()+<span class="stringliteral">&quot;|False&quot;</span>);</div>
1052
- <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">else</span></div>
1053
- <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; locations.insert(tinst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>()+<span class="stringliteral">&quot;|True&quot;</span>);</div>
1054
- <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div>
1055
- <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; </div>
1056
- <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;::iterator</a> iter = locations.begin(), eiter = locations.end();</div>
1057
- <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; iter!=eiter; ++iter)</div>
1058
- <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; {</div>
1059
- <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\t\t --&gt; (&quot;</span> &lt;&lt; *iter &lt;&lt; <span class="stringliteral">&quot;) \n&quot;</span>;</div>
1060
- <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div>
1061
- <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; </div>
1062
- <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1063
- <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;}</div>
1133
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00220">220</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
1134
+ <div class="fragment"><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;{</div>
1135
+ <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
1136
+ <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; std::stringstream rawstr(str);</div>
1137
+ <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> locations;</div>
1138
+ <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> elems = <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a87205db039579f05214507c48d6befec">exactCondElem</a>(<a class="code" href="classSVF_1_1ProgSlice.html#a011fcd4f081926e808e15630cb2d4b47">finalCond</a>);</div>
1139
+ <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; </div>
1140
+ <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> it = elems.<a class="code" href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">begin</a>(), eit = elems.<a class="code" href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">end</a>(); it!=eit; ++it)</div>
1141
+ <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; {</div>
1142
+ <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* tinst = <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a1d8b90edf6ec679a97282ba60c07134d">getCondInst</a>(*it);</div>
1143
+ <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#ad5d27f65374025b6a105ea7a92cbdb50">isNegCond</a>(*it))</div>
1144
+ <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; locations.insert(tinst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>()+<span class="stringliteral">&quot;|False&quot;</span>);</div>
1145
+ <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">else</span></div>
1146
+ <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; locations.insert(tinst-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>()+<span class="stringliteral">&quot;|True&quot;</span>);</div>
1147
+ <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div>
1148
+ <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; </div>
1149
+ <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;::iterator</a> iter = locations.begin(), eiter = locations.end();</div>
1150
+ <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; iter!=eiter; ++iter)</div>
1151
+ <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; {</div>
1152
+ <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\t\t --&gt; (&quot;</span> &lt;&lt; *iter &lt;&lt; <span class="stringliteral">&quot;) \n&quot;</span>;</div>
1153
+ <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div>
1154
+ <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; </div>
1155
+ <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
1156
+ <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;}</div>
1064
1157
  </div><!-- fragment -->
1065
1158
  </div>
1066
1159
  </div>
@@ -1082,20 +1175,20 @@ Private Attributes</h2></td></tr>
1082
1175
 
1083
1176
  <p>Add final condition to eventStack. </p>
1084
1177
 
1085
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00149">149</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
1086
- <div class="fragment"><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;{</div>
1087
- <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> elems = <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a87205db039579f05214507c48d6befec">exactCondElem</a>(<a class="code" href="classSVF_1_1ProgSlice.html#a011fcd4f081926e808e15630cb2d4b47">finalCond</a>);</div>
1088
- <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> it = elems.<a class="code" href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">begin</a>(), eit = elems.<a class="code" href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">end</a>(); it!=eit; ++it)</div>
1089
- <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {</div>
1090
- <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* tinst = <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a1d8b90edf6ec679a97282ba60c07134d">getCondInst</a>(*it);</div>
1091
- <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#ad5d27f65374025b6a105ea7a92cbdb50">isNegCond</a>(*it))</div>
1092
- <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; eventStack.push_back(<a class="code" href="classSVF_1_1SVFBugEvent.html">SVFBugEvent</a>(</div>
1093
- <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="classSVF_1_1SVFBugEvent.html#a4d0c0744525bc445a64176c3808377f3a070acf2c72c74cba55b5acea3db9c854">SVFBugEvent::Branch</a>|((((<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)<span class="keyword">false</span>) &lt;&lt; 4) &amp; <a class="code" href="SVFBugReport_8h.html#a6c7cd1f1c2372251f51de3a8392faeec">BRANCHFLAGMASK</a>), tinst));</div>
1094
- <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">else</span></div>
1095
- <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; eventStack.push_back(<a class="code" href="classSVF_1_1SVFBugEvent.html">SVFBugEvent</a>(</div>
1096
- <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="classSVF_1_1SVFBugEvent.html#a4d0c0744525bc445a64176c3808377f3a070acf2c72c74cba55b5acea3db9c854">SVFBugEvent::Branch</a>|((((<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)<span class="keyword">true</span>) &lt;&lt; 4) &amp; <a class="code" href="SVFBugReport_8h.html#a6c7cd1f1c2372251f51de3a8392faeec">BRANCHFLAGMASK</a>), tinst));</div>
1097
- <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div>
1098
- <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;}</div>
1178
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00196">196</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
1179
+ <div class="fragment"><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;{</div>
1180
+ <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> elems = <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a87205db039579f05214507c48d6befec">exactCondElem</a>(<a class="code" href="classSVF_1_1ProgSlice.html#a011fcd4f081926e808e15630cb2d4b47">finalCond</a>);</div>
1181
+ <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> it = elems.<a class="code" href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">begin</a>(), eit = elems.<a class="code" href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">end</a>(); it!=eit; ++it)</div>
1182
+ <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div>
1183
+ <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* tinst = <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a1d8b90edf6ec679a97282ba60c07134d">getCondInst</a>(*it);</div>
1184
+ <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#ad5d27f65374025b6a105ea7a92cbdb50">isNegCond</a>(*it))</div>
1185
+ <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; eventStack.push_back(<a class="code" href="classSVF_1_1SVFBugEvent.html">SVFBugEvent</a>(</div>
1186
+ <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="classSVF_1_1SVFBugEvent.html#a4d0c0744525bc445a64176c3808377f3a070acf2c72c74cba55b5acea3db9c854">SVFBugEvent::Branch</a>|((((<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)<span class="keyword">false</span>) &lt;&lt; 4) &amp; <a class="code" href="SVFBugReport_8h.html#a6c7cd1f1c2372251f51de3a8392faeec">BRANCHFLAGMASK</a>), tinst));</div>
1187
+ <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">else</span></div>
1188
+ <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; eventStack.push_back(<a class="code" href="classSVF_1_1SVFBugEvent.html">SVFBugEvent</a>(</div>
1189
+ <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="classSVF_1_1SVFBugEvent.html#a4d0c0744525bc445a64176c3808377f3a070acf2c72c74cba55b5acea3db9c854">SVFBugEvent::Branch</a>|((((<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)<span class="keyword">true</span>) &lt;&lt; 4) &amp; <a class="code" href="SVFBugReport_8h.html#a6c7cd1f1c2372251f51de3a8392faeec">BRANCHFLAGMASK</a>), tinst));</div>
1190
+ <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; }</div>
1191
+ <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;}</div>
1099
1192
  </div><!-- fragment -->
1100
1193
  </div>
1101
1194
  </div>
@@ -1122,10 +1215,10 @@ Private Attributes</h2></td></tr>
1122
1215
  </table>
1123
1216
  </div><div class="memdoc">
1124
1217
 
1125
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00100">100</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1126
- <div class="fragment"><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div>
1127
- <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.begin();</div>
1128
- <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div>
1218
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00103">103</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1219
+ <div class="fragment"><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div>
1220
+ <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.begin();</div>
1221
+ <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div>
1129
1222
  </div><!-- fragment -->
1130
1223
  </div>
1131
1224
  </div>
@@ -1152,10 +1245,10 @@ Private Attributes</h2></td></tr>
1152
1245
  </table>
1153
1246
  </div><div class="memdoc">
1154
1247
 
1155
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00104">104</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1156
- <div class="fragment"><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div>
1157
- <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.end();</div>
1158
- <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div>
1248
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00107">107</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1249
+ <div class="fragment"><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div>
1250
+ <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.end();</div>
1251
+ <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div>
1159
1252
  </div><!-- fragment -->
1160
1253
  </div>
1161
1254
  </div>
@@ -1182,10 +1275,10 @@ Private Attributes</h2></td></tr>
1182
1275
  </table>
1183
1276
  </div><div class="memdoc">
1184
1277
 
1185
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00078">78</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1186
- <div class="fragment"><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div>
1187
- <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.size();</div>
1188
- <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div>
1278
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00081">81</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1279
+ <div class="fragment"><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div>
1280
+ <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.size();</div>
1281
+ <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div>
1189
1282
  </div><!-- fragment -->
1190
1283
  </div>
1191
1284
  </div>
@@ -1207,14 +1300,14 @@ Private Attributes</h2></td></tr>
1207
1300
 
1208
1301
  <p>Get callsite ID and get returnsiteID from SVFGEdge. </p>
1209
1302
 
1210
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00132">132</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
1211
- <div class="fragment"><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;{</div>
1212
- <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; assert(edge-&gt;<a class="code" href="classSVF_1_1VFGEdge.html#a4352297ef44c4eff1efe2f348cce6fe9">isCallVFGEdge</a>() &amp;&amp; <span class="stringliteral">&quot;not a call svfg edge?&quot;</span>);</div>
1213
- <div class="line"><a name="l00135"></a><span class="lineno"> 135</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>
1214
- <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a32ffd130984483b201c485da91ec467f">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1VFG.html#a246cce511b8e9164a7c1760d1983f492">getCallSite</a>(callEdge-&gt;getCallSiteId());</div>
1215
- <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">else</span></div>
1216
- <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a32ffd130984483b201c485da91ec467f">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1VFG.html#a246cce511b8e9164a7c1760d1983f492">getCallSite</a>(SVFUtil::cast&lt;CallIndSVFGEdge&gt;(edge)-&gt;getCallSiteId());</div>
1217
- <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;}</div>
1303
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00179">179</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
1304
+ <div class="fragment"><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;{</div>
1305
+ <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; assert(edge-&gt;<a class="code" href="classSVF_1_1VFGEdge.html#a4352297ef44c4eff1efe2f348cce6fe9">isCallVFGEdge</a>() &amp;&amp; <span class="stringliteral">&quot;not a call svfg edge?&quot;</span>);</div>
1306
+ <div class="line"><a name="l00182"></a><span class="lineno"> 182</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>
1307
+ <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a32ffd130984483b201c485da91ec467f">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1VFG.html#a246cce511b8e9164a7c1760d1983f492">getCallSite</a>(callEdge-&gt;getCallSiteId());</div>
1308
+ <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">else</span></div>
1309
+ <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a32ffd130984483b201c485da91ec467f">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1VFG.html#a246cce511b8e9164a7c1760d1983f492">getCallSite</a>(SVFUtil::cast&lt;CallIndSVFGEdge&gt;(edge)-&gt;getCallSiteId());</div>
1310
+ <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;}</div>
1218
1311
  </div><!-- fragment -->
1219
1312
  </div>
1220
1313
  </div>
@@ -1243,10 +1336,10 @@ Private Attributes</h2></td></tr>
1243
1336
 
1244
1337
  <p>Get/set current <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node. </p>
1245
1338
 
1246
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00283">283</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1247
- <div class="fragment"><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; {</div>
1248
- <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a>;</div>
1249
- <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; }</div>
1339
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00286">286</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1340
+ <div class="fragment"><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; {</div>
1341
+ <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a>;</div>
1342
+ <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; }</div>
1250
1343
  </div><!-- fragment -->
1251
1344
  </div>
1252
1345
  </div>
@@ -1273,10 +1366,10 @@ Private Attributes</h2></td></tr>
1273
1366
  </table>
1274
1367
  </div><div class="memdoc">
1275
1368
 
1276
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00195">195</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1277
- <div class="fragment"><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div>
1278
- <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div>
1279
- <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div>
1369
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00198">198</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1370
+ <div class="fragment"><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div>
1371
+ <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div>
1372
+ <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div>
1280
1373
  </div><!-- fragment -->
1281
1374
  </div>
1282
1375
  </div>
@@ -1303,10 +1396,40 @@ Private Attributes</h2></td></tr>
1303
1396
  </table>
1304
1397
  </div><div class="memdoc">
1305
1398
 
1306
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00074">74</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1307
- <div class="fragment"><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div>
1308
- <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.size();</div>
1309
- <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div>
1399
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00077">77</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1400
+ <div class="fragment"><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div>
1401
+ <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.size();</div>
1402
+ <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div>
1403
+ </div><!-- fragment -->
1404
+ </div>
1405
+ </div>
1406
+ <a id="a174a74103c69afbbff58d30f5a41404c"></a>
1407
+ <h2 class="memtitle"><span class="permalink"><a href="#a174a74103c69afbbff58d30f5a41404c">&#9670;&nbsp;</a></span>getRemovedSUVFEdges()</h2>
1408
+
1409
+ <div class="memitem">
1410
+ <div class="memproto">
1411
+ <table class="mlabels">
1412
+ <tr>
1413
+ <td class="mlabels-left">
1414
+ <table class="memname">
1415
+ <tr>
1416
+ <td class="memname">const <a class="el" href="classSVF_1_1ProgSlice.html#a256122a6455854a99131b807f7eb8335">SVFGNodeToSVFGNodeSetMap</a>&amp; SVF::ProgSlice::getRemovedSUVFEdges </td>
1417
+ <td>(</td>
1418
+ <td class="paramname"></td><td>)</td>
1419
+ <td> const</td>
1420
+ </tr>
1421
+ </table>
1422
+ </td>
1423
+ <td class="mlabels-right">
1424
+ <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
1425
+ </tr>
1426
+ </table>
1427
+ </div><div class="memdoc">
1428
+
1429
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00305">305</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1430
+ <div class="fragment"><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; {</div>
1431
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#aaac0aab3bb5c3533889779b4f63bd6a4">getRemovedSUVFEdges</a>();</div>
1432
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div>
1310
1433
  </div><!-- fragment -->
1311
1434
  </div>
1312
1435
  </div>
@@ -1326,14 +1449,14 @@ Private Attributes</h2></td></tr>
1326
1449
  </table>
1327
1450
  </div><div class="memdoc">
1328
1451
 
1329
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00140">140</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
1330
- <div class="fragment"><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;{</div>
1331
- <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; assert(edge-&gt;<a class="code" href="classSVF_1_1VFGEdge.html#a3937eef974c3953f1d1e7d64c5a24ff3">isRetVFGEdge</a>() &amp;&amp; <span class="stringliteral">&quot;not a return svfg edge?&quot;</span>);</div>
1332
- <div class="line"><a name="l00143"></a><span class="lineno"> 143</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>
1333
- <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a32ffd130984483b201c485da91ec467f">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1VFG.html#a246cce511b8e9164a7c1760d1983f492">getCallSite</a>(callEdge-&gt;getCallSiteId());</div>
1334
- <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">else</span></div>
1335
- <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a32ffd130984483b201c485da91ec467f">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1VFG.html#a246cce511b8e9164a7c1760d1983f492">getCallSite</a>(SVFUtil::cast&lt;RetIndSVFGEdge&gt;(edge)-&gt;getCallSiteId());</div>
1336
- <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;}</div>
1452
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00187">187</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
1453
+ <div class="fragment"><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;{</div>
1454
+ <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; assert(edge-&gt;<a class="code" href="classSVF_1_1VFGEdge.html#a3937eef974c3953f1d1e7d64c5a24ff3">isRetVFGEdge</a>() &amp;&amp; <span class="stringliteral">&quot;not a return svfg edge?&quot;</span>);</div>
1455
+ <div class="line"><a name="l00190"></a><span class="lineno"> 190</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>
1456
+ <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a32ffd130984483b201c485da91ec467f">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1VFG.html#a246cce511b8e9164a7c1760d1983f492">getCallSite</a>(callEdge-&gt;getCallSiteId());</div>
1457
+ <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">else</span></div>
1458
+ <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a32ffd130984483b201c485da91ec467f">getSVFG</a>()-&gt;<a class="code" href="classSVF_1_1VFG.html#a246cce511b8e9164a7c1760d1983f492">getCallSite</a>(SVFUtil::cast&lt;RetIndSVFGEdge&gt;(edge)-&gt;getCallSiteId());</div>
1459
+ <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;}</div>
1337
1460
  </div><!-- fragment -->
1338
1461
  </div>
1339
1462
  </div>
@@ -1360,10 +1483,10 @@ Private Attributes</h2></td></tr>
1360
1483
  </table>
1361
1484
  </div><div class="memdoc">
1362
1485
 
1363
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00128">128</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1364
- <div class="fragment"><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div>
1365
- <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>;</div>
1366
- <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div>
1486
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00131">131</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1487
+ <div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div>
1488
+ <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>;</div>
1489
+ <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div>
1367
1490
  </div><!-- fragment -->
1368
1491
  </div>
1369
1492
  </div>
@@ -1392,10 +1515,10 @@ Private Attributes</h2></td></tr>
1392
1515
 
1393
1516
  <p>root and sink operations </p>
1394
1517
 
1395
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00120">120</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1396
- <div class="fragment"><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div>
1397
- <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087">root</a>;</div>
1398
- <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div>
1518
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00123">123</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1519
+ <div class="fragment"><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; {</div>
1520
+ <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087">root</a>;</div>
1521
+ <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div>
1399
1522
  </div><!-- fragment -->
1400
1523
  </div>
1401
1524
  </div>
@@ -1422,10 +1545,10 @@ Private Attributes</h2></td></tr>
1422
1545
  </table>
1423
1546
  </div><div class="memdoc">
1424
1547
 
1425
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00210">210</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1426
- <div class="fragment"><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div>
1427
- <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde">svfg</a>;</div>
1428
- <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div>
1548
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00213">213</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1549
+ <div class="fragment"><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; {</div>
1550
+ <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde">svfg</a>;</div>
1551
+ <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div>
1429
1552
  </div><!-- fragment -->
1430
1553
  </div>
1431
1554
  </div>
@@ -1454,15 +1577,15 @@ Private Attributes</h2></td></tr>
1454
1577
  </div><div class="memdoc">
1455
1578
  <p>Return the basic block where a SVFGNode resides in a SVFGNode may not in a basic block if it is not a program statement (e.g. PAGEdge is an global assignment or NullPtrSVFGNode) </p>
1456
1579
 
1457
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00271">271</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1458
- <div class="fragment"><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div>
1459
- <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keyword">const</span> ICFGNode* icfgNode = node-&gt;getICFGNode();</div>
1460
- <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;NullPtrSVFGNode&gt;(node) == <span class="keyword">false</span>)</div>
1461
- <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; {</div>
1462
- <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">return</span> icfgNode-&gt;getBB();</div>
1463
- <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div>
1464
- <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
1465
- <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div>
1580
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00274">274</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1581
+ <div class="fragment"><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; {</div>
1582
+ <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">const</span> ICFGNode* icfgNode = node-&gt;getICFGNode();</div>
1583
+ <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;NullPtrSVFGNode&gt;(node) == <span class="keyword">false</span>)</div>
1584
+ <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; {</div>
1585
+ <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">return</span> icfgNode-&gt;getBB();</div>
1586
+ <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div>
1587
+ <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
1588
+ <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; }</div>
1466
1589
  </div><!-- fragment -->
1467
1590
  </div>
1468
1591
  </div>
@@ -1489,10 +1612,10 @@ Private Attributes</h2></td></tr>
1489
1612
  </table>
1490
1613
  </div><div class="memdoc">
1491
1614
 
1492
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00191">191</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1493
- <div class="fragment"><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; {</div>
1494
- <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div>
1495
- <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div>
1615
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00194">194</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1616
+ <div class="fragment"><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; {</div>
1617
+ <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div>
1618
+ <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div>
1496
1619
  </div><!-- fragment -->
1497
1620
  </div>
1498
1621
  </div>
@@ -1522,15 +1645,15 @@ Private Attributes</h2></td></tr>
1522
1645
 
1523
1646
  <p>Get/set VF (value-flow) and CF (control-flow) conditions. </p>
1524
1647
 
1525
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00226">226</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1526
- <div class="fragment"><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div>
1527
- <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; SVFGNodeToCondMap::const_iterator it = <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.find(node);</div>
1528
- <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">if</span>(it==<a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.end())</div>
1529
- <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; {</div>
1530
- <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a9d81f792b6a8b15395a63d06daf56573">getFalseCond</a>();</div>
1531
- <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div>
1532
- <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
1533
- <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div>
1648
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00229">229</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1649
+ <div class="fragment"><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; {</div>
1650
+ <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; SVFGNodeToCondMap::const_iterator it = <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.find(node);</div>
1651
+ <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">if</span>(it==<a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.end())</div>
1652
+ <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; {</div>
1653
+ <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a9d81f792b6a8b15395a63d06daf56573">getFalseCond</a>();</div>
1654
+ <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; }</div>
1655
+ <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div>
1656
+ <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div>
1534
1657
  </div><!-- fragment -->
1535
1658
  </div>
1536
1659
  </div>
@@ -1558,10 +1681,10 @@ Private Attributes</h2></td></tr>
1558
1681
  </table>
1559
1682
  </div><div class="memdoc">
1560
1683
 
1561
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00096">96</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1562
- <div class="fragment"><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; {</div>
1563
- <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.find(node)!=<a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.end();</div>
1564
- <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div>
1684
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00099">99</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1685
+ <div class="fragment"><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div>
1686
+ <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.find(node)!=<a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.end();</div>
1687
+ <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div>
1565
1688
  </div><!-- fragment -->
1566
1689
  </div>
1567
1690
  </div>
@@ -1589,10 +1712,10 @@ Private Attributes</h2></td></tr>
1589
1712
  </table>
1590
1713
  </div><div class="memdoc">
1591
1714
 
1592
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00092">92</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1593
- <div class="fragment"><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div>
1594
- <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.find(node)!=<a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.end();</div>
1595
- <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div>
1715
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00095">95</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1716
+ <div class="fragment"><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div>
1717
+ <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.find(node)!=<a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.end();</div>
1718
+ <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div>
1596
1719
  </div><!-- fragment -->
1597
1720
  </div>
1598
1721
  </div>
@@ -1619,10 +1742,10 @@ Private Attributes</h2></td></tr>
1619
1742
  </table>
1620
1743
  </div><div class="memdoc">
1621
1744
 
1622
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00156">156</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1623
- <div class="fragment"><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {</div>
1624
- <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">fullReachable</a> || <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>;</div>
1625
- <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div>
1745
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00159">159</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1746
+ <div class="fragment"><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div>
1747
+ <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">fullReachable</a> || <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>;</div>
1748
+ <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div>
1626
1749
  </div><!-- fragment -->
1627
1750
  </div>
1628
1751
  </div>
@@ -1660,10 +1783,10 @@ Private Attributes</h2></td></tr>
1660
1783
  </table>
1661
1784
  </div><div class="memdoc">
1662
1785
 
1663
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00263">263</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1664
- <div class="fragment"><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; {</div>
1665
- <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#aa9027574586fd4fbb12039f595ecec71">isEquivalentBranchCond</a>(lhs, rhs);</div>
1666
- <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; };</div>
1786
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00266">266</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1787
+ <div class="fragment"><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; {</div>
1788
+ <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#aa9027574586fd4fbb12039f595ecec71">isEquivalentBranchCond</a>(lhs, rhs);</div>
1789
+ <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; };</div>
1667
1790
  </div><!-- fragment -->
1668
1791
  </div>
1669
1792
  </div>
@@ -1690,10 +1813,10 @@ Private Attributes</h2></td></tr>
1690
1813
  </table>
1691
1814
  </div><div class="memdoc">
1692
1815
 
1693
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00152">152</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1694
- <div class="fragment"><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {</div>
1695
- <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">partialReachable</a> || <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>;</div>
1696
- <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div>
1816
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00155">155</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1817
+ <div class="fragment"><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div>
1818
+ <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">partialReachable</a> || <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>;</div>
1819
+ <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div>
1697
1820
  </div><!-- fragment -->
1698
1821
  </div>
1699
1822
  </div>
@@ -1720,10 +1843,10 @@ Private Attributes</h2></td></tr>
1720
1843
  </table>
1721
1844
  </div><div class="memdoc">
1722
1845
 
1723
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00160">160</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1724
- <div class="fragment"><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div>
1725
- <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>;</div>
1726
- <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div>
1846
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00163">163</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1847
+ <div class="fragment"><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div>
1848
+ <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>;</div>
1849
+ <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div>
1727
1850
  </div><!-- fragment -->
1728
1851
  </div>
1729
1852
  </div>
@@ -1743,18 +1866,18 @@ Private Attributes</h2></td></tr>
1743
1866
  </div><div class="memdoc">
1744
1867
  <p>Solve by computing disjunction of conditions from all sinks (e.g., memory leak) </p>
1745
1868
 
1746
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00095">95</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
1747
- <div class="fragment"><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;{</div>
1748
- <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; </div>
1749
- <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> guard = <a class="code" href="classSVF_1_1ProgSlice.html#a9d81f792b6a8b15395a63d06daf56573">getFalseCond</a>();</div>
1750
- <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1ProgSlice.html#af41c438baa739406a35bcb2e9ba431dd">SVFGNodeSetIter</a> it = <a class="code" href="classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2">sinksBegin</a>(), eit = <a class="code" href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31">sinksEnd</a>(); it!=eit; ++it)</div>
1751
- <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div>
1752
- <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; guard = <a class="code" href="classSVF_1_1ProgSlice.html#a3e729aba81cd64e8628df630f5a0f416">condOr</a>(guard,<a class="code" href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">getVFCond</a>(*it));</div>
1753
- <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div>
1754
- <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#af55830503ef47b4b1c15c0e5b3cd6a3f">setFinalCond</a>(guard);</div>
1755
- <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
1756
- <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a246da0431273c312800459aa85d80a86">isAllPathReachable</a>(guard);</div>
1757
- <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;}</div>
1869
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00142">142</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
1870
+ <div class="fragment"><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;{</div>
1871
+ <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; </div>
1872
+ <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> guard = <a class="code" href="classSVF_1_1ProgSlice.html#a9d81f792b6a8b15395a63d06daf56573">getFalseCond</a>();</div>
1873
+ <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1ProgSlice.html#af41c438baa739406a35bcb2e9ba431dd">SVFGNodeSetIter</a> it = <a class="code" href="classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2">sinksBegin</a>(), eit = <a class="code" href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31">sinksEnd</a>(); it!=eit; ++it)</div>
1874
+ <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div>
1875
+ <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; guard = <a class="code" href="classSVF_1_1ProgSlice.html#a3e729aba81cd64e8628df630f5a0f416">condOr</a>(guard,<a class="code" href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">getVFCond</a>(*it));</div>
1876
+ <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div>
1877
+ <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#af55830503ef47b4b1c15c0e5b3cd6a3f">setFinalCond</a>(guard);</div>
1878
+ <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; </div>
1879
+ <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#a246da0431273c312800459aa85d80a86">isAllPathReachable</a>(guard);</div>
1880
+ <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;}</div>
1758
1881
  </div><!-- fragment -->
1759
1882
  </div>
1760
1883
  </div>
@@ -1774,26 +1897,26 @@ Private Attributes</h2></td></tr>
1774
1897
  </div><div class="memdoc">
1775
1898
  <p>Solve by analysing each pair of sinks (e.g., double free) </p>
1776
1899
 
1777
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00111">111</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
1778
- <div class="fragment"><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;{</div>
1779
- <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; </div>
1780
- <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1ProgSlice.html#af41c438baa739406a35bcb2e9ba431dd">SVFGNodeSetIter</a> it = <a class="code" href="classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2">sinksBegin</a>(), eit = <a class="code" href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31">sinksEnd</a>(); it!=eit; ++it)</div>
1781
- <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div>
1782
- <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1ProgSlice.html#af41c438baa739406a35bcb2e9ba431dd">SVFGNodeSetIter</a> sit = it, esit = <a class="code" href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31">sinksEnd</a>(); sit!=esit; ++sit)</div>
1783
- <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div>
1784
- <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">if</span>(*it == *sit)</div>
1785
- <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">continue</span>;</div>
1786
- <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> guard = <a class="code" href="classSVF_1_1ProgSlice.html#aceb26d08f0d12367e4726e1ff0e25953">condAnd</a>(<a class="code" href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">getVFCond</a>(*sit),<a class="code" href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">getVFCond</a>(*it));</div>
1787
- <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1ProgSlice.html#a6c63e9641e4d3d3f2f8c4a73bfba7a07">isEquivalentBranchCond</a>(guard, <a class="code" href="classSVF_1_1ProgSlice.html#a9d81f792b6a8b15395a63d06daf56573">getFalseCond</a>()))</div>
1788
- <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div>
1789
- <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#af55830503ef47b4b1c15c0e5b3cd6a3f">setFinalCond</a>(guard);</div>
1790
- <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
1791
- <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div>
1792
- <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div>
1793
- <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div>
1794
- <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; </div>
1795
- <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
1796
- <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;}</div>
1900
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00158">158</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
1901
+ <div class="fragment"><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;{</div>
1902
+ <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; </div>
1903
+ <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1ProgSlice.html#af41c438baa739406a35bcb2e9ba431dd">SVFGNodeSetIter</a> it = <a class="code" href="classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2">sinksBegin</a>(), eit = <a class="code" href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31">sinksEnd</a>(); it!=eit; ++it)</div>
1904
+ <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; {</div>
1905
+ <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1ProgSlice.html#af41c438baa739406a35bcb2e9ba431dd">SVFGNodeSetIter</a> sit = it, esit = <a class="code" href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31">sinksEnd</a>(); sit!=esit; ++sit)</div>
1906
+ <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div>
1907
+ <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">if</span>(*it == *sit)</div>
1908
+ <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">continue</span>;</div>
1909
+ <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> guard = <a class="code" href="classSVF_1_1ProgSlice.html#aceb26d08f0d12367e4726e1ff0e25953">condAnd</a>(<a class="code" href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">getVFCond</a>(*sit),<a class="code" href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">getVFCond</a>(*it));</div>
1910
+ <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1ProgSlice.html#a6c63e9641e4d3d3f2f8c4a73bfba7a07">isEquivalentBranchCond</a>(guard, <a class="code" href="classSVF_1_1ProgSlice.html#a9d81f792b6a8b15395a63d06daf56573">getFalseCond</a>()))</div>
1911
+ <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; {</div>
1912
+ <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#af55830503ef47b4b1c15c0e5b3cd6a3f">setFinalCond</a>(guard);</div>
1913
+ <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
1914
+ <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div>
1915
+ <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div>
1916
+ <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div>
1917
+ <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; </div>
1918
+ <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
1919
+ <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;}</div>
1797
1920
  </div><!-- fragment -->
1798
1921
  </div>
1799
1922
  </div>
@@ -1820,10 +1943,10 @@ Private Attributes</h2></td></tr>
1820
1943
  </table>
1821
1944
  </div><div class="memdoc">
1822
1945
 
1823
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00144">144</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1824
- <div class="fragment"><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; {</div>
1825
- <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">fullReachable</a> = <span class="keyword">true</span>;</div>
1826
- <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div>
1946
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00147">147</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1947
+ <div class="fragment"><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div>
1948
+ <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">fullReachable</a> = <span class="keyword">true</span>;</div>
1949
+ <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div>
1827
1950
  </div><!-- fragment -->
1828
1951
  </div>
1829
1952
  </div>
@@ -1851,11 +1974,11 @@ Private Attributes</h2></td></tr>
1851
1974
  </table>
1852
1975
  </div><div class="memdoc">
1853
1976
 
1854
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00287">287</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1855
- <div class="fragment"><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; {</div>
1856
- <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a> = node;</div>
1857
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#ae717f565b947a72651c0de19bf6bcca0">setCurEvalSVFGNode</a>(node);</div>
1858
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }</div>
1977
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00290">290</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1978
+ <div class="fragment"><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; {</div>
1979
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a> = node;</div>
1980
+ <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-&gt;<a class="code" href="classSVF_1_1SaberCondAllocator.html#ae717f565b947a72651c0de19bf6bcca0">setCurEvalSVFGNode</a>(node);</div>
1981
+ <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }</div>
1859
1982
  </div><!-- fragment -->
1860
1983
  </div>
1861
1984
  </div>
@@ -1885,10 +2008,10 @@ Private Attributes</h2></td></tr>
1885
2008
 
1886
2009
  <p>Set final condition after all path reachability analysis. </p>
1887
2010
 
1888
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00294">294</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1889
- <div class="fragment"><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div>
1890
- <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#a011fcd4f081926e808e15630cb2d4b47">finalCond</a> = cond;</div>
1891
- <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div>
2011
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00297">297</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2012
+ <div class="fragment"><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; {</div>
2013
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#a011fcd4f081926e808e15630cb2d4b47">finalCond</a> = cond;</div>
2014
+ <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div>
1892
2015
  </div><!-- fragment -->
1893
2016
  </div>
1894
2017
  </div>
@@ -1915,10 +2038,10 @@ Private Attributes</h2></td></tr>
1915
2038
  </table>
1916
2039
  </div><div class="memdoc">
1917
2040
 
1918
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00140">140</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1919
- <div class="fragment"><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; {</div>
1920
- <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">partialReachable</a> = <span class="keyword">true</span>;</div>
1921
- <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div>
2041
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00143">143</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2042
+ <div class="fragment"><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; {</div>
2043
+ <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">partialReachable</a> = <span class="keyword">true</span>;</div>
2044
+ <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div>
1922
2045
  </div><!-- fragment -->
1923
2046
  </div>
1924
2047
  </div>
@@ -1945,10 +2068,10 @@ Private Attributes</h2></td></tr>
1945
2068
  </table>
1946
2069
  </div><div class="memdoc">
1947
2070
 
1948
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00148">148</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1949
- <div class="fragment"><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div>
1950
- <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a> = <span class="keyword">true</span>;</div>
1951
- <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div>
2071
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00151">151</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2072
+ <div class="fragment"><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div>
2073
+ <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a> = <span class="keyword">true</span>;</div>
2074
+ <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div>
1952
2075
  </div><!-- fragment -->
1953
2076
  </div>
1954
2077
  </div>
@@ -1986,16 +2109,16 @@ Private Attributes</h2></td></tr>
1986
2109
  </table>
1987
2110
  </div><div class="memdoc">
1988
2111
 
1989
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00235">235</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
1990
- <div class="fragment"><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div>
1991
- <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; SVFGNodeToCondMap::iterator it = <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.find(node);</div>
1992
- <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="comment">// until a fixed-point is reached (condition is not changed)</span></div>
1993
- <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.end() &amp;&amp; <a class="code" href="classSVF_1_1ProgSlice.html#a6c63e9641e4d3d3f2f8c4a73bfba7a07">isEquivalentBranchCond</a>(it-&gt;second, cond))</div>
1994
- <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
1995
- <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; </div>
1996
- <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>[node] = cond;</div>
1997
- <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
1998
- <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div>
2112
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00238">238</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2113
+ <div class="fragment"><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; {</div>
2114
+ <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; SVFGNodeToCondMap::iterator it = <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.find(node);</div>
2115
+ <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="comment">// until a fixed-point is reached (condition is not changed)</span></div>
2116
+ <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.end() &amp;&amp; <a class="code" href="classSVF_1_1ProgSlice.html#a6c63e9641e4d3d3f2f8c4a73bfba7a07">isEquivalentBranchCond</a>(it-&gt;second, cond))</div>
2117
+ <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
2118
+ <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; </div>
2119
+ <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>[node] = cond;</div>
2120
+ <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
2121
+ <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div>
1999
2122
  </div><!-- fragment -->
2000
2123
  </div>
2001
2124
  </div>
@@ -2022,10 +2145,10 @@ Private Attributes</h2></td></tr>
2022
2145
  </table>
2023
2146
  </div><div class="memdoc">
2024
2147
 
2025
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00132">132</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2026
- <div class="fragment"><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; {</div>
2027
- <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>.begin();</div>
2028
- <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div>
2148
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00135">135</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2149
+ <div class="fragment"><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div>
2150
+ <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>.begin();</div>
2151
+ <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div>
2029
2152
  </div><!-- fragment -->
2030
2153
  </div>
2031
2154
  </div>
@@ -2052,10 +2175,10 @@ Private Attributes</h2></td></tr>
2052
2175
  </table>
2053
2176
  </div><div class="memdoc">
2054
2177
 
2055
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00136">136</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2056
- <div class="fragment"><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div>
2057
- <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>.end();</div>
2058
- <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div>
2178
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00139">139</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2179
+ <div class="fragment"><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div>
2180
+ <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>.end();</div>
2181
+ <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div>
2059
2182
  </div><!-- fragment -->
2060
2183
  </div>
2061
2184
  </div>
@@ -2082,7 +2205,7 @@ Private Attributes</h2></td></tr>
2082
2205
 
2083
2206
  <p>current svfg node during guard computation </p>
2084
2207
 
2085
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00309">309</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2208
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00320">320</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2086
2209
 
2087
2210
  </div>
2088
2211
  </div>
@@ -2108,7 +2231,7 @@ Private Attributes</h2></td></tr>
2108
2231
 
2109
2232
  <p>the backward slice </p>
2110
2233
 
2111
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00301">301</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2234
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00312">312</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2112
2235
 
2113
2236
  </div>
2114
2237
  </div>
@@ -2134,7 +2257,7 @@ Private Attributes</h2></td></tr>
2134
2257
 
2135
2258
  <p>final condition </p>
2136
2259
 
2137
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00310">310</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2260
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00321">321</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2138
2261
 
2139
2262
  </div>
2140
2263
  </div>
@@ -2160,7 +2283,7 @@ Private Attributes</h2></td></tr>
2160
2283
 
2161
2284
  <p>the forward slice </p>
2162
2285
 
2163
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00300">300</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2286
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00311">311</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2164
2287
 
2165
2288
  </div>
2166
2289
  </div>
@@ -2186,7 +2309,7 @@ Private Attributes</h2></td></tr>
2186
2309
 
2187
2310
  <p>reachable from all paths </p>
2188
2311
 
2189
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00306">306</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2312
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00317">317</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2190
2313
 
2191
2314
  </div>
2192
2315
  </div>
@@ -2212,7 +2335,7 @@ Private Attributes</h2></td></tr>
2212
2335
 
2213
2336
  <p>reachable from some paths </p>
2214
2337
 
2215
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00305">305</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2338
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00316">316</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2216
2339
 
2217
2340
  </div>
2218
2341
  </div>
@@ -2238,7 +2361,7 @@ Private Attributes</h2></td></tr>
2238
2361
 
2239
2362
  <p>path condition allocator </p>
2240
2363
 
2241
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00308">308</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2364
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00319">319</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2242
2365
 
2243
2366
  </div>
2244
2367
  </div>
@@ -2264,7 +2387,7 @@ Private Attributes</h2></td></tr>
2264
2387
 
2265
2388
  <p>Whether slice reach a global. </p>
2266
2389
 
2267
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00307">307</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2390
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00318">318</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2268
2391
 
2269
2392
  </div>
2270
2393
  </div>
@@ -2290,7 +2413,7 @@ Private Attributes</h2></td></tr>
2290
2413
 
2291
2414
  <p>root node on the slice </p>
2292
2415
 
2293
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00303">303</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2416
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00314">314</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2294
2417
 
2295
2418
  </div>
2296
2419
  </div>
@@ -2316,7 +2439,7 @@ Private Attributes</h2></td></tr>
2316
2439
 
2317
2440
  <p>a set of sink nodes </p>
2318
2441
 
2319
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00302">302</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2442
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00313">313</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2320
2443
 
2321
2444
  </div>
2322
2445
  </div>
@@ -2342,7 +2465,7 @@ Private Attributes</h2></td></tr>
2342
2465
 
2343
2466
  <p><a class="el" href="classSVF_1_1SVFG.html">SVFG</a>. </p>
2344
2467
 
2345
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00311">311</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2468
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00322">322</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2346
2469
 
2347
2470
  </div>
2348
2471
  </div>
@@ -2368,7 +2491,7 @@ Private Attributes</h2></td></tr>
2368
2491
 
2369
2492
  <p>map a SVFGNode to its path condition starting from root </p>
2370
2493
 
2371
- <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00304">304</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2494
+ <p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00315">315</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
2372
2495
 
2373
2496
  </div>
2374
2497
  </div>
@@ -2377,88 +2500,92 @@ Private Attributes</h2></td></tr>
2377
2500
  <li>/home/runner/work/SVF/SVF/svf/lib/SABER/<a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a></li>
2378
2501
  </ul>
2379
2502
  </div><!-- contents -->
2380
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ada13c2389d43973ff7db18b7fca90087"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087">SVF::ProgSlice::root</a></div><div class="ttdeci">const SVFGNode * root</div><div class="ttdoc">root node on the slice</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00303">ProgSlice.h:303</a></div></div>
2381
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a7a3ba7e6c08d84f82690a594e286205f"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a7a3ba7e6c08d84f82690a594e286205f">SVF::ProgSlice::ComputeInterCallVFGGuard</a></div><div class="ttdeci">Condition ComputeInterCallVFGGuard(const SVFBasicBlock *src, const SVFBasicBlock *dst, const SVFBasicBlock *callBB)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00253">ProgSlice.h:253</a></div></div>
2503
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ada13c2389d43973ff7db18b7fca90087"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087">SVF::ProgSlice::root</a></div><div class="ttdeci">const SVFGNode * root</div><div class="ttdoc">root node on the slice</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00314">ProgSlice.h:314</a></div></div>
2504
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a7a3ba7e6c08d84f82690a594e286205f"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a7a3ba7e6c08d84f82690a594e286205f">SVF::ProgSlice::ComputeInterCallVFGGuard</a></div><div class="ttdeci">Condition ComputeInterCallVFGGuard(const SVFBasicBlock *src, const SVFBasicBlock *dst, const SVFBasicBlock *callBB)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00256">ProgSlice.h:256</a></div></div>
2382
2505
  <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>
2383
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a6c63e9641e4d3d3f2f8c4a73bfba7a07"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a6c63e9641e4d3d3f2f8c4a73bfba7a07">SVF::ProgSlice::isEquivalentBranchCond</a></div><div class="ttdeci">bool isEquivalentBranchCond(const Condition &amp;lhs, const Condition &amp;rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00263">ProgSlice.h:263</a></div></div>
2384
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a2a7a3a6dc518fd375f506d43b0ac9fc9"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">SVF::ProgSlice::partialReachable</a></div><div class="ttdeci">bool partialReachable</div><div class="ttdoc">reachable from some paths</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00305">ProgSlice.h:305</a></div></div>
2385
- <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a9b52da69d79746765d0c12a5ce1b08f4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">SVF::SaberCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00102">SaberCondAllocator.h:102</a></div></div>
2506
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a6c63e9641e4d3d3f2f8c4a73bfba7a07"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a6c63e9641e4d3d3f2f8c4a73bfba7a07">SVF::ProgSlice::isEquivalentBranchCond</a></div><div class="ttdeci">bool isEquivalentBranchCond(const Condition &amp;lhs, const Condition &amp;rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00266">ProgSlice.h:266</a></div></div>
2507
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a2a7a3a6dc518fd375f506d43b0ac9fc9"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">SVF::ProgSlice::partialReachable</a></div><div class="ttdeci">bool partialReachable</div><div class="ttdoc">reachable from some paths</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00316">ProgSlice.h:316</a></div></div>
2508
+ <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a9b52da69d79746765d0c12a5ce1b08f4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">SVF::SaberCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00103">SaberCondAllocator.h:103</a></div></div>
2386
2509
  <div class="ttc" id="aclassSVF_1_1VFG_html_a246cce511b8e9164a7c1760d1983f492"><div class="ttname"><a href="classSVF_1_1VFG.html#a246cce511b8e9164a7c1760d1983f492">SVF::VFG::getCallSite</a></div><div class="ttdeci">const CallICFGNode * getCallSite(CallSiteID id) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00182">VFG.h:182</a></div></div>
2387
2510
  <div class="ttc" id="anamespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00097">SVFType.h:97</a></div></div>
2388
- <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>
2389
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab36bc2aa24a2a90555a9714dcbfc83e5"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">SVF::ProgSlice::reachGlob</a></div><div class="ttdeci">bool reachGlob</div><div class="ttdoc">Whether slice reach a global.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00307">ProgSlice.h:307</a></div></div>
2390
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_aeb1924daad67a0b7ed9e5b4974755261"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">SVF::ProgSlice::getVFCond</a></div><div class="ttdeci">Condition getVFCond(const SVFGNode *node) const</div><div class="ttdoc">Get/set VF (value-flow) and CF (control-flow) conditions.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00226">ProgSlice.h:226</a></div></div>
2391
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab4da58e7c4cd2c80b4830efeaa896f80"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">SVF::ProgSlice::sinks</a></div><div class="ttdeci">SVFGNodeSet sinks</div><div class="ttdoc">a set of sink nodes</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00302">ProgSlice.h:302</a></div></div>
2392
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a632db4b2e69848955925746ac721d94f"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">SVF::ProgSlice::fullReachable</a></div><div class="ttdeci">bool fullReachable</div><div class="ttdoc">reachable from all paths</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00306">ProgSlice.h:306</a></div></div>
2511
+ <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>
2512
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab36bc2aa24a2a90555a9714dcbfc83e5"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">SVF::ProgSlice::reachGlob</a></div><div class="ttdeci">bool reachGlob</div><div class="ttdoc">Whether slice reach a global.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00318">ProgSlice.h:318</a></div></div>
2513
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_aeb1924daad67a0b7ed9e5b4974755261"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">SVF::ProgSlice::getVFCond</a></div><div class="ttdeci">Condition getVFCond(const SVFGNode *node) const</div><div class="ttdoc">Get/set VF (value-flow) and CF (control-flow) conditions.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00229">ProgSlice.h:229</a></div></div>
2514
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab4da58e7c4cd2c80b4830efeaa896f80"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">SVF::ProgSlice::sinks</a></div><div class="ttdeci">SVFGNodeSet sinks</div><div class="ttdoc">a set of sink nodes</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00313">ProgSlice.h:313</a></div></div>
2515
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a632db4b2e69848955925746ac721d94f"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">SVF::ProgSlice::fullReachable</a></div><div class="ttdeci">bool fullReachable</div><div class="ttdoc">reachable from all paths</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00317">ProgSlice.h:317</a></div></div>
2393
2516
  <div class="ttc" id="aclassSVF_1_1SparseBitVector_html_a1b5abe09fd0fcd337385653cb47343c1"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">SVF::SparseBitVector::end</a></div><div class="ttdeci">iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01120">SparseBitVector.h:1120</a></div></div>
2394
- <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a1d8b90edf6ec679a97282ba60c07134d"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a1d8b90edf6ec679a97282ba60c07134d">SVF::SaberCondAllocator::getCondInst</a></div><div class="ttdeci">const SVFInstruction * getCondInst(u32_t id) const</div><div class="ttdoc">Get/Set instruction based on Z3 expression id.</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00127">SaberCondAllocator.h:127</a></div></div>
2517
+ <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a1d8b90edf6ec679a97282ba60c07134d"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a1d8b90edf6ec679a97282ba60c07134d">SVF::SaberCondAllocator::getCondInst</a></div><div class="ttdeci">const SVFInstruction * getCondInst(u32_t id) const</div><div class="ttdoc">Get/Set instruction based on Z3 expression id.</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00128">SaberCondAllocator.h:128</a></div></div>
2395
2518
  <div class="ttc" id="aclassSVF_1_1SparseBitVector_html_abf76d8157c49ddba24bdc9dab3655772"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">SVF::SparseBitVector::begin</a></div><div class="ttdeci">iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01115">SparseBitVector.h:1115</a></div></div>
2396
2519
  <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>
2397
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a32ffd130984483b201c485da91ec467f"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a32ffd130984483b201c485da91ec467f">SVF::ProgSlice::getSVFG</a></div><div class="ttdeci">const SVFG * getSVFG() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00210">ProgSlice.h:210</a></div></div>
2520
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a32ffd130984483b201c485da91ec467f"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a32ffd130984483b201c485da91ec467f">SVF::ProgSlice::getSVFG</a></div><div class="ttdeci">const SVFG * getSVFG() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00213">ProgSlice.h:213</a></div></div>
2398
2521
  <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>
2399
2522
  <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>
2400
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a8ae327bc7bf72f892d87730edfc67d0d"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a8ae327bc7bf72f892d87730edfc67d0d">SVF::ProgSlice::getCallSite</a></div><div class="ttdeci">const CallICFGNode * getCallSite(const SVFGEdge *edge) const</div><div class="ttdoc">Get callsite ID and get returnsiteID from SVFGEdge.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00132">ProgSlice.cpp:132</a></div></div>
2401
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab514f387ae2122e919030c5006f1bbce"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab514f387ae2122e919030c5006f1bbce">SVF::ProgSlice::clearCFCond</a></div><div class="ttdeci">void clearCFCond()</div><div class="ttdoc">Clear Control flow conditions before each VF computation.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00218">ProgSlice.h:218</a></div></div>
2523
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a8ae327bc7bf72f892d87730edfc67d0d"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a8ae327bc7bf72f892d87730edfc67d0d">SVF::ProgSlice::getCallSite</a></div><div class="ttdeci">const CallICFGNode * getCallSite(const SVFGEdge *edge) const</div><div class="ttdoc">Get callsite ID and get returnsiteID from SVFGEdge.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00179">ProgSlice.cpp:179</a></div></div>
2524
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab514f387ae2122e919030c5006f1bbce"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab514f387ae2122e919030c5006f1bbce">SVF::ProgSlice::clearCFCond</a></div><div class="ttdeci">void clearCFCond()</div><div class="ttdoc">Clear Control flow conditions before each VF computation.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00221">ProgSlice.h:221</a></div></div>
2402
2525
  <div class="ttc" id="aclassSVF_1_1ProgSlice_html_aadf1128c0006981dff0d64dd1201e0c7"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">SVF::ProgSlice::Condition</a></div><div class="ttdeci">SaberCondAllocator::Condition Condition</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00055">ProgSlice.h:55</a></div></div>
2403
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a011fcd4f081926e808e15630cb2d4b47"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a011fcd4f081926e808e15630cb2d4b47">SVF::ProgSlice::finalCond</a></div><div class="ttdeci">Condition finalCond</div><div class="ttdoc">final condition</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00310">ProgSlice.h:310</a></div></div>
2526
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a011fcd4f081926e808e15630cb2d4b47"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a011fcd4f081926e808e15630cb2d4b47">SVF::ProgSlice::finalCond</a></div><div class="ttdeci">Condition finalCond</div><div class="ttdoc">final condition</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00321">ProgSlice.h:321</a></div></div>
2404
2527
  <div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00522">SVFValue.h:522</a></div></div>
2405
2528
  <div class="ttc" id="acJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
2406
2529
  <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>
2407
- <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a79682a4e4da23d0eaf0066a91c2f7bd4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">SVF::SaberCondAllocator::condAnd</a></div><div class="ttdeci">Condition condAnd(const Condition &amp;lhs, const Condition &amp;rhs)</div><div class="ttdoc">Condition operations.</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00086">SaberCondAllocator.h:86</a></div></div>
2530
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a174a74103c69afbbff58d30f5a41404c"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a174a74103c69afbbff58d30f5a41404c">SVF::ProgSlice::getRemovedSUVFEdges</a></div><div class="ttdeci">const SVFGNodeToSVFGNodeSetMap &amp; getRemovedSUVFEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00305">ProgSlice.h:305</a></div></div>
2531
+ <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a79682a4e4da23d0eaf0066a91c2f7bd4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">SVF::SaberCondAllocator::condAnd</a></div><div class="ttdeci">Condition condAnd(const Condition &amp;lhs, const Condition &amp;rhs)</div><div class="ttdoc">Condition operations.</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00087">SaberCondAllocator.h:87</a></div></div>
2408
2532
  <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>
2409
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_aeda61b2786b128e8c45089de60dcafce"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">SVF::ProgSlice::svfgNodeToCondMap</a></div><div class="ttdeci">SVFGNodeToCondMap svfgNodeToCondMap</div><div class="ttdoc">map a SVFGNode to its path condition starting from root</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00304">ProgSlice.h:304</a></div></div>
2410
- <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a87205db039579f05214507c48d6befec"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a87205db039579f05214507c48d6befec">SVF::SaberCondAllocator::exactCondElem</a></div><div class="ttdeci">NodeBS exactCondElem(const Condition &amp;cond)</div><div class="ttdoc">Iterator every element of the condition.</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00107">SaberCondAllocator.h:107</a></div></div>
2411
- <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>
2533
+ <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_aaac0aab3bb5c3533889779b4f63bd6a4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#aaac0aab3bb5c3533889779b4f63bd6a4">SVF::SaberCondAllocator::getRemovedSUVFEdges</a></div><div class="ttdeci">SVFGNodeToSVFGNodeSetMap &amp; getRemovedSUVFEdges()</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00244">SaberCondAllocator.h:244</a></div></div>
2534
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_aeda61b2786b128e8c45089de60dcafce"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">SVF::ProgSlice::svfgNodeToCondMap</a></div><div class="ttdeci">SVFGNodeToCondMap svfgNodeToCondMap</div><div class="ttdoc">map a SVFGNode to its path condition starting from root</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00315">ProgSlice.h:315</a></div></div>
2535
+ <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a87205db039579f05214507c48d6befec"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a87205db039579f05214507c48d6befec">SVF::SaberCondAllocator::exactCondElem</a></div><div class="ttdeci">NodeBS exactCondElem(const Condition &amp;cond)</div><div class="ttdoc">Iterator every element of the condition.</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00108">SaberCondAllocator.h:108</a></div></div>
2536
+ <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>
2412
2537
  <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_aa9027574586fd4fbb12039f595ecec71"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#aa9027574586fd4fbb12039f595ecec71">SVF::SaberCondAllocator::isEquivalentBranchCond</a></div><div class="ttdeci">bool isEquivalentBranchCond(const Condition &amp;lhs, const Condition &amp;rhs) const</div><div class="ttdoc">Whether lhs and rhs are equivalent branch conditions.</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00610">SaberCondAllocator.cpp:610</a></div></div>
2413
2538
  <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_aedb63308f8980bbaf2b6c1bd2826a710"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#aedb63308f8980bbaf2b6c1bd2826a710">SVF::SaberCondAllocator::ComputeInterCallVFGGuard</a></div><div class="ttdeci">virtual Condition ComputeInterCallVFGGuard(const SVFBasicBlock *src, const SVFBasicBlock *dst, const SVFBasicBlock *callBB)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00485">SaberCondAllocator.cpp:485</a></div></div>
2414
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ac12dc4caa0c764ae69175e787efad2ab"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">SVF::ProgSlice::forwardslice</a></div><div class="ttdeci">SVFGNodeSet forwardslice</div><div class="ttdoc">the forward slice</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00300">ProgSlice.h:300</a></div></div>
2539
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ac12dc4caa0c764ae69175e787efad2ab"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">SVF::ProgSlice::forwardslice</a></div><div class="ttdeci">SVFGNodeSet forwardslice</div><div class="ttdoc">the forward slice</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00311">ProgSlice.h:311</a></div></div>
2540
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a0dfd466a758dd0be4c2bc5832c50fbd8"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a0dfd466a758dd0be4c2bc5832c50fbd8">SVF::ProgSlice::condNeg</a></div><div class="ttdeci">Condition condNeg(const Condition &amp;cond)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00190">ProgSlice.h:190</a></div></div>
2415
2541
  <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>
2416
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_af3095788fc3d7798abfae10e3216968b"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">SVF::ProgSlice::_curSVFGNode</a></div><div class="ttdeci">const SVFGNode * _curSVFGNode</div><div class="ttdoc">current svfg node during guard computation</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00309">ProgSlice.h:309</a></div></div>
2542
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_af3095788fc3d7798abfae10e3216968b"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">SVF::ProgSlice::_curSVFGNode</a></div><div class="ttdeci">const SVFGNode * _curSVFGNode</div><div class="ttdoc">current svfg node during guard computation</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00320">ProgSlice.h:320</a></div></div>
2417
2543
  <div class="ttc" id="aSVFBugReport_8h_html_a6c7cd1f1c2372251f51de3a8392faeec"><div class="ttname"><a href="SVFBugReport_8h.html#a6c7cd1f1c2372251f51de3a8392faeec">BRANCHFLAGMASK</a></div><div class="ttdeci">#define BRANCHFLAGMASK</div><div class="ttdef"><b>Definition:</b> <a href="SVFBugReport_8h_source.html#l00040">SVFBugReport.h:40</a></div></div>
2418
2544
  <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>
2419
- <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a100c1962eac6d7af420defc827a025ed"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a100c1962eac6d7af420defc827a025ed">SVF::SaberCondAllocator::dumpCond</a></div><div class="ttdeci">std::string dumpCond(const Condition &amp;cond) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00114">SaberCondAllocator.h:114</a></div></div>
2420
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a59cbb196069a863830b05904f16a190e"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a59cbb196069a863830b05904f16a190e">SVF::ProgSlice::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00191">ProgSlice.h:191</a></div></div>
2421
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_addb781260db48c0571c0083a45065ca0"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">SVF::ProgSlice::backwardslice</a></div><div class="ttdeci">SVFGNodeSet backwardslice</div><div class="ttdoc">the backward slice</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00301">ProgSlice.h:301</a></div></div>
2545
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_abe0cc350db350bd4e9a9973c9052fc41"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#abe0cc350db350bd4e9a9973c9052fc41">SVF::ProgSlice::computeInvalidCondFromRemovedSUVFEdge</a></div><div class="ttdeci">Condition computeInvalidCondFromRemovedSUVFEdge(const SVFGNode *cur)</div><div class="ttdoc">Compute invalid branch condition stemming from removed strong update value-flow edges.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00108">ProgSlice.cpp:108</a></div></div>
2546
+ <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a100c1962eac6d7af420defc827a025ed"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a100c1962eac6d7af420defc827a025ed">SVF::SaberCondAllocator::dumpCond</a></div><div class="ttdeci">std::string dumpCond(const Condition &amp;cond) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00115">SaberCondAllocator.h:115</a></div></div>
2547
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a59cbb196069a863830b05904f16a190e"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a59cbb196069a863830b05904f16a190e">SVF::ProgSlice::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00194">ProgSlice.h:194</a></div></div>
2548
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_addb781260db48c0571c0083a45065ca0"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">SVF::ProgSlice::backwardslice</a></div><div class="ttdeci">SVFGNodeSet backwardslice</div><div class="ttdoc">the backward slice</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00312">ProgSlice.h:312</a></div></div>
2422
2549
  <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a8bb7f9ce20b5a640aa48c32176f429bf"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a8bb7f9ce20b5a640aa48c32176f429bf">SVF::SaberCondAllocator::ComputeInterRetVFGGuard</a></div><div class="ttdeci">virtual Condition ComputeInterRetVFGGuard(const SVFBasicBlock *src, const SVFBasicBlock *dst, const SVFBasicBlock *retBB)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00502">SaberCondAllocator.cpp:502</a></div></div>
2423
2550
  <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>
2424
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a899332b210414ac991b57e83851ee5be"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a899332b210414ac991b57e83851ee5be">SVF::ProgSlice::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Release memory.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00199">ProgSlice.cpp:199</a></div></div>
2425
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a066430ffa98a3fa0a5ad48d26e0450f7"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a066430ffa98a3fa0a5ad48d26e0450f7">SVF::ProgSlice::inBackwardSlice</a></div><div class="ttdeci">bool inBackwardSlice(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00096">ProgSlice.h:96</a></div></div>
2551
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a899332b210414ac991b57e83851ee5be"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a899332b210414ac991b57e83851ee5be">SVF::ProgSlice::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Release memory.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00246">ProgSlice.cpp:246</a></div></div>
2552
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a066430ffa98a3fa0a5ad48d26e0450f7"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a066430ffa98a3fa0a5ad48d26e0450f7">SVF::ProgSlice::inBackwardSlice</a></div><div class="ttdeci">bool inBackwardSlice(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00099">ProgSlice.h:99</a></div></div>
2426
2553
  <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>
2427
- <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>
2428
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_aee72d029c185c24b2bf01cdc0dcb25d8"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aee72d029c185c24b2bf01cdc0dcb25d8">SVF::ProgSlice::setCurSVFGNode</a></div><div class="ttdeci">void setCurSVFGNode(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00287">ProgSlice.h:287</a></div></div>
2429
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab5de7bf99935818ef1b0962e36b8624c"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab5de7bf99935818ef1b0962e36b8624c">SVF::ProgSlice::setVFCond</a></div><div class="ttdeci">bool setVFCond(const SVFGNode *node, const Condition &amp;cond)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00235">ProgSlice.h:235</a></div></div>
2554
+ <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>
2555
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_aee72d029c185c24b2bf01cdc0dcb25d8"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aee72d029c185c24b2bf01cdc0dcb25d8">SVF::ProgSlice::setCurSVFGNode</a></div><div class="ttdeci">void setCurSVFGNode(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00290">ProgSlice.h:290</a></div></div>
2556
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab5de7bf99935818ef1b0962e36b8624c"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab5de7bf99935818ef1b0962e36b8624c">SVF::ProgSlice::setVFCond</a></div><div class="ttdeci">bool setVFCond(const SVFGNode *node, const Condition &amp;cond)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00238">ProgSlice.h:238</a></div></div>
2430
2557
  <div class="ttc" id="aclassSVF_1_1SparseBitVector_1_1SparseBitVectorIterator_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">SVF::SparseBitVector::SparseBitVectorIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00536">SparseBitVector.h:536</a></div></div>
2431
2558
  <div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00050">SVFUtil.h:50</a></div></div>
2432
2559
  <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a684e44ade783439c6f77a8d84eed282c"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a684e44ade783439c6f77a8d84eed282c">SVF::ProgSlice::VFWorkList</a></div><div class="ttdeci">FIFOWorkList&lt; const SVFGNode * &gt; VFWorkList</div><div class="ttdoc">worklist for value-flow guard computation</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00058">ProgSlice.h:58</a></div></div>
2433
2560
  <div class="ttc" id="aclassSVF_1_1VFGNode_html_a3c558955f60c237c558d8faafed781e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVF::VFGNode::const_iterator</a></div><div class="ttdeci">VFGEdge::VFGEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00060">VFGNode.h:60</a></div></div>
2434
- <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_ad5d27f65374025b6a105ea7a92cbdb50"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad5d27f65374025b6a105ea7a92cbdb50">SVF::SaberCondAllocator::isNegCond</a></div><div class="ttdeci">bool isNegCond(u32_t id) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00141">SaberCondAllocator.h:141</a></div></div>
2561
+ <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_ad5d27f65374025b6a105ea7a92cbdb50"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad5d27f65374025b6a105ea7a92cbdb50">SVF::SaberCondAllocator::isNegCond</a></div><div class="ttdeci">bool isNegCond(u32_t id) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00142">SaberCondAllocator.h:142</a></div></div>
2435
2562
  <div class="ttc" id="aclassSVF_1_1SVFBugEvent_html_a4d0c0744525bc445a64176c3808377f3a070acf2c72c74cba55b5acea3db9c854"><div class="ttname"><a href="classSVF_1_1SVFBugEvent.html#a4d0c0744525bc445a64176c3808377f3a070acf2c72c74cba55b5acea3db9c854">SVF::SVFBugEvent::Branch</a></div><div class="ttdeci">@ Branch</div><div class="ttdef"><b>Definition:</b> <a href="SVFBugReport_8h_source.html#l00056">SVFBugReport.h:56</a></div></div>
2436
2563
  <div class="ttc" id="aclassSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
2437
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ae7f6f66b7e70cf872dc572b073f6d67b"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ae7f6f66b7e70cf872dc572b073f6d67b">SVF::ProgSlice::ComputeIntraVFGGuard</a></div><div class="ttdeci">Condition ComputeIntraVFGGuard(const SVFBasicBlock *src, const SVFBasicBlock *dst)</div><div class="ttdoc">Compute guards for value-flows.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00249">ProgSlice.h:249</a></div></div>
2438
- <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a5406e73b860c419143035ee3774e7c1c"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a5406e73b860c419143035ee3774e7c1c">SVF::SaberCondAllocator::clearCFCond</a></div><div class="ttdeci">void clearCFCond()</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00176">SaberCondAllocator.h:176</a></div></div>
2439
- <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_ae717f565b947a72651c0de19bf6bcca0"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae717f565b947a72651c0de19bf6bcca0">SVF::SaberCondAllocator::setCurEvalSVFGNode</a></div><div class="ttdeci">void setCurEvalSVFGNode(const SVFGNode *node)</div><div class="ttdoc">Set current value for branch condition evaluation.</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00181">SaberCondAllocator.h:181</a></div></div>
2440
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a3e729aba81cd64e8628df630f5a0f416"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a3e729aba81cd64e8628df630f5a0f416">SVF::ProgSlice::condOr</a></div><div class="ttdeci">Condition condOr(const Condition &amp;lhs, const Condition &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00183">ProgSlice.h:183</a></div></div>
2441
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a457a759c552a1418538769d79d7a7dde"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde">SVF::ProgSlice::svfg</a></div><div class="ttdeci">const SVFG * svfg</div><div class="ttdoc">SVFG.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00311">ProgSlice.h:311</a></div></div>
2442
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_af55830503ef47b4b1c15c0e5b3cd6a3f"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#af55830503ef47b4b1c15c0e5b3cd6a3f">SVF::ProgSlice::setFinalCond</a></div><div class="ttdeci">void setFinalCond(const Condition &amp;cond)</div><div class="ttdoc">Set final condition after all path reachability analysis.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00294">ProgSlice.h:294</a></div></div>
2564
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ae7f6f66b7e70cf872dc572b073f6d67b"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ae7f6f66b7e70cf872dc572b073f6d67b">SVF::ProgSlice::ComputeIntraVFGGuard</a></div><div class="ttdeci">Condition ComputeIntraVFGGuard(const SVFBasicBlock *src, const SVFBasicBlock *dst)</div><div class="ttdoc">Compute guards for value-flows.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00252">ProgSlice.h:252</a></div></div>
2565
+ <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a5406e73b860c419143035ee3774e7c1c"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a5406e73b860c419143035ee3774e7c1c">SVF::SaberCondAllocator::clearCFCond</a></div><div class="ttdeci">void clearCFCond()</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00177">SaberCondAllocator.h:177</a></div></div>
2566
+ <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_ae717f565b947a72651c0de19bf6bcca0"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae717f565b947a72651c0de19bf6bcca0">SVF::SaberCondAllocator::setCurEvalSVFGNode</a></div><div class="ttdeci">void setCurEvalSVFGNode(const SVFGNode *node)</div><div class="ttdoc">Set current value for branch condition evaluation.</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00182">SaberCondAllocator.h:182</a></div></div>
2567
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a3e729aba81cd64e8628df630f5a0f416"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a3e729aba81cd64e8628df630f5a0f416">SVF::ProgSlice::condOr</a></div><div class="ttdeci">Condition condOr(const Condition &amp;lhs, const Condition &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00186">ProgSlice.h:186</a></div></div>
2568
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a457a759c552a1418538769d79d7a7dde"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde">SVF::ProgSlice::svfg</a></div><div class="ttdeci">const SVFG * svfg</div><div class="ttdoc">SVFG.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00322">ProgSlice.h:322</a></div></div>
2569
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_af55830503ef47b4b1c15c0e5b3cd6a3f"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#af55830503ef47b4b1c15c0e5b3cd6a3f">SVF::ProgSlice::setFinalCond</a></div><div class="ttdeci">void setFinalCond(const Condition &amp;cond)</div><div class="ttdoc">Set final condition after all path reachability analysis.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00297">ProgSlice.h:297</a></div></div>
2443
2570
  <div class="ttc" id="aclassSVF_1_1SVFBugEvent_html"><div class="ttname"><a href="classSVF_1_1SVFBugEvent.html">SVF::SVFBugEvent</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFBugReport_8h_source.html#l00051">SVFBugReport.h:51</a></div></div>
2444
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_aceb26d08f0d12367e4726e1ff0e25953"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aceb26d08f0d12367e4726e1ff0e25953">SVF::ProgSlice::condAnd</a></div><div class="ttdeci">Condition condAnd(const Condition &amp;lhs, const Condition &amp;rhs)</div><div class="ttdoc">Condition operations.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00179">ProgSlice.h:179</a></div></div>
2445
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_aaf001b6abc4ecb466ab74b26981ea7ef"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">SVF::ProgSlice::pathAllocator</a></div><div class="ttdeci">SaberCondAllocator * pathAllocator</div><div class="ttdoc">path condition allocator</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00308">ProgSlice.h:308</a></div></div>
2446
- <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00098">SaberCondAllocator.h:98</a></div></div>
2571
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_aceb26d08f0d12367e4726e1ff0e25953"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aceb26d08f0d12367e4726e1ff0e25953">SVF::ProgSlice::condAnd</a></div><div class="ttdeci">Condition condAnd(const Condition &amp;lhs, const Condition &amp;rhs)</div><div class="ttdoc">Condition operations.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00182">ProgSlice.h:182</a></div></div>
2572
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_aaf001b6abc4ecb466ab74b26981ea7ef"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">SVF::ProgSlice::pathAllocator</a></div><div class="ttdeci">SaberCondAllocator * pathAllocator</div><div class="ttdoc">path condition allocator</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00319">ProgSlice.h:319</a></div></div>
2573
+ <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00099">SaberCondAllocator.h:99</a></div></div>
2447
2574
  <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>
2448
2575
  <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_af77d3631664b21a16818f54b03b5a832"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#af77d3631664b21a16818f54b03b5a832">SVF::SaberCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition ComputeIntraVFGGuard(const SVFBasicBlock *src, const SVFBasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00516">SaberCondAllocator.cpp:516</a></div></div>
2449
2576
  <div class="ttc" id="aclassSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00626">SVFValue.h:626</a></div></div>
2450
- <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a246da0431273c312800459aa85d80a86"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a246da0431273c312800459aa85d80a86">SVF::SaberCondAllocator::isAllPathReachable</a></div><div class="ttdeci">bool isAllPathReachable(Condition &amp;condition)</div><div class="ttdoc">whether condition is satisfiable for all possible boolean guards</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00199">SaberCondAllocator.h:199</a></div></div>
2451
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a9d81f792b6a8b15395a63d06daf56573"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a9d81f792b6a8b15395a63d06daf56573">SVF::ProgSlice::getFalseCond</a></div><div class="ttdeci">Condition getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00195">ProgSlice.h:195</a></div></div>
2577
+ <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a246da0431273c312800459aa85d80a86"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a246da0431273c312800459aa85d80a86">SVF::SaberCondAllocator::isAllPathReachable</a></div><div class="ttdeci">bool isAllPathReachable(Condition &amp;condition)</div><div class="ttdoc">whether condition is satisfiable for all possible boolean guards</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00200">SaberCondAllocator.h:200</a></div></div>
2578
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a9d81f792b6a8b15395a63d06daf56573"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a9d81f792b6a8b15395a63d06daf56573">SVF::ProgSlice::getFalseCond</a></div><div class="ttdeci">Condition getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00198">ProgSlice.h:198</a></div></div>
2452
2579
  <div class="ttc" id="aclassSVF_1_1SVFValue_html_a7effb0f37f486745e0cdc3ae5e9c732b"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">SVF::SVFValue::getSourceLoc</a></div><div class="ttdeci">virtual const std::string getSourceLoc() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00280">SVFValue.h:280</a></div></div>
2453
- <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a2e4c3f5149a5085a5c8bb7547eae8161"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">SVF::SaberCondAllocator::condOr</a></div><div class="ttdeci">Condition condOr(const Condition &amp;lhs, const Condition &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00090">SaberCondAllocator.h:90</a></div></div>
2454
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_abca08cad9cadc72caf6743df3ff934e7"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#abca08cad9cadc72caf6743df3ff934e7">SVF::ProgSlice::getSVFGNodeBB</a></div><div class="ttdeci">const SVFBasicBlock * getSVFGNodeBB(const SVFGNode *node) const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00271">ProgSlice.h:271</a></div></div>
2455
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a07ce77afbf69d5e2a47afaa39eaea886"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a07ce77afbf69d5e2a47afaa39eaea886">SVF::ProgSlice::getRetSite</a></div><div class="ttdeci">const CallICFGNode * getRetSite(const SVFGEdge *edge) const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00140">ProgSlice.cpp:140</a></div></div>
2580
+ <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a2e4c3f5149a5085a5c8bb7547eae8161"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">SVF::SaberCondAllocator::condOr</a></div><div class="ttdeci">Condition condOr(const Condition &amp;lhs, const Condition &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00091">SaberCondAllocator.h:91</a></div></div>
2581
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_abca08cad9cadc72caf6743df3ff934e7"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#abca08cad9cadc72caf6743df3ff934e7">SVF::ProgSlice::getSVFGNodeBB</a></div><div class="ttdeci">const SVFBasicBlock * getSVFGNodeBB(const SVFGNode *node) const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00274">ProgSlice.h:274</a></div></div>
2582
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a07ce77afbf69d5e2a47afaa39eaea886"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a07ce77afbf69d5e2a47afaa39eaea886">SVF::ProgSlice::getRetSite</a></div><div class="ttdeci">const CallICFGNode * getRetSite(const SVFGEdge *edge) const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00187">ProgSlice.cpp:187</a></div></div>
2456
2583
  <div class="ttc" id="aclassSVF_1_1ProgSlice_html_af41c438baa739406a35bcb2e9ba431dd"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#af41c438baa739406a35bcb2e9ba431dd">SVF::ProgSlice::SVFGNodeSetIter</a></div><div class="ttdeci">SVFGNodeSet::const_iterator SVFGNodeSetIter</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00054">ProgSlice.h:54</a></div></div>
2457
2584
  <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>
2458
2585
  <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>
2459
- <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a620d53b9af8dd30523c478f4e9655817"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a620d53b9af8dd30523c478f4e9655817">SVF::SaberCondAllocator::condNeg</a></div><div class="ttdeci">Condition condNeg(const Condition &amp;cond)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00094">SaberCondAllocator.h:94</a></div></div>
2460
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a62a9f2c107f27d6c04c30ef153ffb8ed"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a62a9f2c107f27d6c04c30ef153ffb8ed">SVF::ProgSlice::isSatisfiableForAll</a></div><div class="ttdeci">bool isSatisfiableForAll()</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00095">ProgSlice.cpp:95</a></div></div>
2461
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab7311a806f1c3899b5a4de106eac24b7"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab7311a806f1c3899b5a4de106eac24b7">SVF::ProgSlice::ComputeInterRetVFGGuard</a></div><div class="ttdeci">Condition ComputeInterRetVFGGuard(const SVFBasicBlock *src, const SVFBasicBlock *dst, const SVFBasicBlock *retBB)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00257">ProgSlice.h:257</a></div></div>
2586
+ <div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a620d53b9af8dd30523c478f4e9655817"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a620d53b9af8dd30523c478f4e9655817">SVF::SaberCondAllocator::condNeg</a></div><div class="ttdeci">Condition condNeg(const Condition &amp;cond)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00095">SaberCondAllocator.h:95</a></div></div>
2587
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a62a9f2c107f27d6c04c30ef153ffb8ed"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a62a9f2c107f27d6c04c30ef153ffb8ed">SVF::ProgSlice::isSatisfiableForAll</a></div><div class="ttdeci">bool isSatisfiableForAll()</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00142">ProgSlice.cpp:142</a></div></div>
2588
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab7311a806f1c3899b5a4de106eac24b7"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab7311a806f1c3899b5a4de106eac24b7">SVF::ProgSlice::ComputeInterRetVFGGuard</a></div><div class="ttdeci">Condition ComputeInterRetVFGGuard(const SVFBasicBlock *src, const SVFBasicBlock *dst, const SVFBasicBlock *retBB)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00260">ProgSlice.h:260</a></div></div>
2462
2589
  <!-- start footer part -->
2463
2590
  <hr class="footer"/><address class="footer"><small>
2464
2591
  Generated by &#160;<a href="http://www.doxygen.org/index.html">