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
@@ -114,136 +114,169 @@ $(function() {
114
114
  <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div>
115
115
  <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.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div>
116
116
  <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; setCurSVFGNode(node);</div>
117
- <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Condition</a> cond = getVFCond(node);</div>
118
- <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>
119
- <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div>
120
- <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>
121
- <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>
122
- <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span>(inBackwardSlice(succ))</div>
123
- <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div>
124
- <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Condition</a> vfCond;</div>
125
- <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 = getSVFGNodeBB(node);</div>
126
- <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 = getSVFGNodeBB(succ);</div>
127
- <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; clearCFCond();</div>
128
- <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; </div>
129
- <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>
130
- <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div>
131
- <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; vfCond = ComputeInterCallVFGGuard(nodeBB,succBB, getCallSite(edge)-&gt;getParent());</div>
132
- <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div>
133
- <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>
134
- <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div>
135
- <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; vfCond = ComputeInterRetVFGGuard(nodeBB,succBB, getRetSite(edge)-&gt;getParent());</div>
136
- <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div>
137
- <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">else</span></div>
138
- <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; vfCond = ComputeIntraVFGGuard(nodeBB,succBB);</div>
139
- <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
140
- <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Condition</a> succPathCond = condAnd(cond, vfCond);</div>
141
- <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span>(setVFCond(succ, condOr(getVFCond(succ), succPathCond) ))</div>
142
- <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(succ);</div>
143
- <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div>
144
- <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
145
- <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>
146
- <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; getVFCond(succ) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
147
- <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div>
148
- <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div>
149
- <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; </div>
150
- <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> isSatisfiableForAll();</div>
151
- <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;}</div>
152
- <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; </div>
153
- <div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a62a9f2c107f27d6c04c30ef153ffb8ed"> 95</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a62a9f2c107f27d6c04c30ef153ffb8ed">ProgSlice::isSatisfiableForAll</a>()</div>
154
- <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;{</div>
155
- <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; </div>
156
- <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Condition</a> guard = getFalseCond();</div>
157
- <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 = sinksBegin(), eit = sinksEnd(); it!=eit; ++it)</div>
158
- <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div>
159
- <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; guard = condOr(guard,getVFCond(*it));</div>
160
- <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div>
161
- <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; setFinalCond(guard);</div>
162
- <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
163
- <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> pathAllocator-&gt;isAllPathReachable(guard);</div>
164
- <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;}</div>
165
- <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; </div>
166
- <div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a45fb7711498bcba60e931c9c2a9ccec4"> 111</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a45fb7711498bcba60e931c9c2a9ccec4">ProgSlice::isSatisfiableForPairs</a>()</div>
167
- <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;{</div>
168
- <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; </div>
169
- <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 = sinksBegin(), eit = sinksEnd(); it!=eit; ++it)</div>
170
- <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div>
171
- <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 = sinksEnd(); sit!=esit; ++sit)</div>
172
- <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div>
173
- <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">if</span>(*it == *sit)</div>
174
- <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">continue</span>;</div>
175
- <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Condition</a> guard = condAnd(getVFCond(*sit),getVFCond(*it));</div>
176
- <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span>(!isEquivalentBranchCond(guard, getFalseCond()))</div>
177
- <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div>
178
- <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; setFinalCond(guard);</div>
179
- <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
180
- <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div>
181
- <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div>
182
- <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div>
183
- <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; </div>
184
- <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
185
- <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;}</div>
186
- <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; </div>
187
- <div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a8ae327bc7bf72f892d87730edfc67d0d"> 132</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1ProgSlice.html#a8ae327bc7bf72f892d87730edfc67d0d">ProgSlice::getCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge)<span class="keyword"> const</span></div>
188
- <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="keyword"></span>{</div>
189
- <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>
190
- <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>
191
- <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> getSVFG()-&gt;getCallSite(callEdge-&gt;getCallSiteId());</div>
192
- <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">else</span></div>
193
- <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> getSVFG()-&gt;getCallSite(SVFUtil::cast&lt;CallIndSVFGEdge&gt;(edge)-&gt;getCallSiteId());</div>
194
- <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;}</div>
195
- <div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a07ce77afbf69d5e2a47afaa39eaea886"> 140</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1ProgSlice.html#a07ce77afbf69d5e2a47afaa39eaea886">ProgSlice::getRetSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge)<span class="keyword"> const</span></div>
196
- <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="keyword"></span>{</div>
197
- <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>
198
- <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>
199
- <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">return</span> getSVFG()-&gt;getCallSite(callEdge-&gt;getCallSiteId());</div>
200
- <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">else</span></div>
201
- <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">return</span> getSVFG()-&gt;getCallSite(SVFUtil::cast&lt;RetIndSVFGEdge&gt;(edge)-&gt;getCallSiteId());</div>
202
- <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;}</div>
203
- <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; </div>
204
- <div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a215c9142830814ae838d15d9b7b40af9"> 149</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#a215c9142830814ae838d15d9b7b40af9">ProgSlice::evalFinalCond2Event</a>(<a class="code" href="classSVF_1_1GenericBug.html#acc65b033bfd61257d5b6fdbf932dfafe">GenericBug::EventStack</a> &amp;eventStack)<span class="keyword"> const</span></div>
205
- <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="keyword"></span>{</div>
206
- <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> elems = pathAllocator-&gt;exactCondElem(finalCond);</div>
207
- <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>
208
- <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {</div>
209
- <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 = pathAllocator-&gt;getCondInst(*it);</div>
210
- <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span>(pathAllocator-&gt;isNegCond(*it))</div>
211
- <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>
212
- <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>
213
- <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">else</span></div>
214
- <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>
215
- <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>
216
- <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div>
217
- <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;}</div>
218
- <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; </div>
219
- <div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#afac06b0be2b04cb8a65af21fd697b756"> 173</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1ProgSlice.html#afac06b0be2b04cb8a65af21fd697b756">ProgSlice::evalFinalCond</a>()<span class="keyword"> const</span></div>
220
- <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="keyword"></span>{</div>
221
- <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>
222
- <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; std::stringstream rawstr(str);</div>
223
- <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>
224
- <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> elems = pathAllocator-&gt;exactCondElem(finalCond);</div>
225
- <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; </div>
226
- <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>
227
- <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; {</div>
228
- <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 = pathAllocator-&gt;getCondInst(*it);</div>
229
- <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span>(pathAllocator-&gt;isNegCond(*it))</div>
230
- <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>
231
- <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">else</span></div>
232
- <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>
233
- <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div>
234
- <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; </div>
235
- <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>
236
- <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; iter!=eiter; ++iter)</div>
237
- <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; {</div>
238
- <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>
239
- <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div>
117
+ <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; </div>
118
+ <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Condition</a> invalidCond = computeInvalidCondFromRemovedSUVFEdge(node);</div>
119
+ <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Condition</a> cond = getVFCond(node);</div>
120
+ <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>
121
+ <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div>
122
+ <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>
123
+ <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>
124
+ <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span>(inBackwardSlice(succ))</div>
125
+ <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div>
126
+ <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Condition</a> vfCond;</div>
127
+ <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 = getSVFGNodeBB(node);</div>
128
+ <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 = getSVFGNodeBB(succ);</div>
129
+ <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; clearCFCond();</div>
130
+ <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; </div>
131
+ <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>
132
+ <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div>
133
+ <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; vfCond = ComputeInterCallVFGGuard(nodeBB,succBB, getCallSite(edge)-&gt;getParent());</div>
134
+ <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div>
135
+ <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>
136
+ <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div>
137
+ <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; vfCond = ComputeInterRetVFGGuard(nodeBB,succBB, getRetSite(edge)-&gt;getParent());</div>
138
+ <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div>
139
+ <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">else</span></div>
140
+ <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; vfCond = ComputeIntraVFGGuard(nodeBB,succBB);</div>
141
+ <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; vfCond = condAnd(vfCond, condNeg(invalidCond));</div>
142
+ <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Condition</a> succPathCond = condAnd(cond, vfCond);</div>
143
+ <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">if</span>(setVFCond(succ, condOr(getVFCond(succ), succPathCond) ))</div>
144
+ <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(succ);</div>
145
+ <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div>
146
+ <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; </div>
147
+ <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>
148
+ <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; getVFCond(succ) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div>
149
+ <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div>
150
+ <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div>
151
+ <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
152
+ <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">return</span> isSatisfiableForAll();</div>
153
+ <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;}</div>
154
+ <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; </div>
155
+ <div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#abe0cc350db350bd4e9a9973c9052fc41"> 108</a></span>&#160;<a class="code" href="classSVF_1_1Z3Expr.html">ProgSlice::Condition</a> <a class="code" href="classSVF_1_1ProgSlice.html#abe0cc350db350bd4e9a9973c9052fc41">ProgSlice::computeInvalidCondFromRemovedSUVFEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a> * cur)</div>
156
+ <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;{</div>
157
+ <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>
158
+ <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>
159
+ <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div>
160
+ <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>
161
+ <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>
162
+ <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">if</span>(inBackwardSlice(succ))</div>
163
+ <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div>
164
+ <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; validOutBBs.insert(getSVFGNodeBB(succ));</div>
165
+ <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div>
166
+ <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div>
167
+ <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Condition</a> invalidCond = getFalseCond();</div>
168
+ <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">auto</span> suVFEdgesIt = getRemovedSUVFEdges().find(cur);</div>
169
+ <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span> (suVFEdgesIt != getRemovedSUVFEdges().end())</div>
170
+ <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div>
171
+ <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>
172
+ <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div>
173
+ <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">if</span> (!validOutBBs.count(getSVFGNodeBB(succ)))</div>
174
+ <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div>
175
+ <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>
176
+ <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 = getSVFGNodeBB(cur);</div>
177
+ <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 = getSVFGNodeBB(succ);</div>
178
+ <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; clearCFCond();</div>
179
+ <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; invalidCond = condOr(invalidCond, ComputeIntraVFGGuard(nodeBB, succBB));</div>
180
+ <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div>
181
+ <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div>
182
+ <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div>
183
+ <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> invalidCond;</div>
184
+ <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;}</div>
185
+ <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; </div>
186
+ <div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a62a9f2c107f27d6c04c30ef153ffb8ed"> 142</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a62a9f2c107f27d6c04c30ef153ffb8ed">ProgSlice::isSatisfiableForAll</a>()</div>
187
+ <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;{</div>
188
+ <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; </div>
189
+ <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Condition</a> guard = getFalseCond();</div>
190
+ <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 = sinksBegin(), eit = sinksEnd(); it!=eit; ++it)</div>
191
+ <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div>
192
+ <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; guard = condOr(guard,getVFCond(*it));</div>
193
+ <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div>
194
+ <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; setFinalCond(guard);</div>
195
+ <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; </div>
196
+ <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> pathAllocator-&gt;isAllPathReachable(guard);</div>
197
+ <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;}</div>
198
+ <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; </div>
199
+ <div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a45fb7711498bcba60e931c9c2a9ccec4"> 158</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a45fb7711498bcba60e931c9c2a9ccec4">ProgSlice::isSatisfiableForPairs</a>()</div>
200
+ <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;{</div>
201
+ <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; </div>
202
+ <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 = sinksBegin(), eit = sinksEnd(); it!=eit; ++it)</div>
203
+ <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; {</div>
204
+ <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 = sinksEnd(); sit!=esit; ++sit)</div>
205
+ <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div>
206
+ <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">if</span>(*it == *sit)</div>
207
+ <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">continue</span>;</div>
208
+ <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="classSVF_1_1Z3Expr.html">Condition</a> guard = condAnd(getVFCond(*sit),getVFCond(*it));</div>
209
+ <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">if</span>(!isEquivalentBranchCond(guard, getFalseCond()))</div>
210
+ <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; {</div>
211
+ <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; setFinalCond(guard);</div>
212
+ <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
213
+ <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div>
214
+ <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div>
215
+ <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div>
216
+ <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; </div>
217
+ <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
218
+ <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;}</div>
219
+ <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; </div>
220
+ <div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a8ae327bc7bf72f892d87730edfc67d0d"> 179</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1ProgSlice.html#a8ae327bc7bf72f892d87730edfc67d0d">ProgSlice::getCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge)<span class="keyword"> const</span></div>
221
+ <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="keyword"></span>{</div>
222
+ <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>
223
+ <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>
224
+ <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> getSVFG()-&gt;getCallSite(callEdge-&gt;getCallSiteId());</div>
225
+ <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">else</span></div>
226
+ <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">return</span> getSVFG()-&gt;getCallSite(SVFUtil::cast&lt;CallIndSVFGEdge&gt;(edge)-&gt;getCallSiteId());</div>
227
+ <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;}</div>
228
+ <div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a07ce77afbf69d5e2a47afaa39eaea886"> 187</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1ProgSlice.html#a07ce77afbf69d5e2a47afaa39eaea886">ProgSlice::getRetSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge)<span class="keyword"> const</span></div>
229
+ <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="keyword"></span>{</div>
230
+ <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>
231
+ <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>
232
+ <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">return</span> getSVFG()-&gt;getCallSite(callEdge-&gt;getCallSiteId());</div>
233
+ <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">else</span></div>
234
+ <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> getSVFG()-&gt;getCallSite(SVFUtil::cast&lt;RetIndSVFGEdge&gt;(edge)-&gt;getCallSiteId());</div>
235
+ <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;}</div>
240
236
  <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; </div>
241
- <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
242
- <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;}</div>
243
- <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; </div>
244
- <div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a899332b210414ac991b57e83851ee5be"> 199</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#a899332b210414ac991b57e83851ee5be">ProgSlice::destroy</a>()</div>
245
- <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;{</div>
246
- <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;}</div>
237
+ <div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a215c9142830814ae838d15d9b7b40af9"> 196</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#a215c9142830814ae838d15d9b7b40af9">ProgSlice::evalFinalCond2Event</a>(<a class="code" href="classSVF_1_1GenericBug.html#acc65b033bfd61257d5b6fdbf932dfafe">GenericBug::EventStack</a> &amp;eventStack)<span class="keyword"> const</span></div>
238
+ <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="keyword"></span>{</div>
239
+ <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> elems = pathAllocator-&gt;exactCondElem(finalCond);</div>
240
+ <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>
241
+ <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div>
242
+ <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 = pathAllocator-&gt;getCondInst(*it);</div>
243
+ <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span>(pathAllocator-&gt;isNegCond(*it))</div>
244
+ <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>
245
+ <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>
246
+ <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">else</span></div>
247
+ <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>
248
+ <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>
249
+ <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; }</div>
250
+ <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;}</div>
251
+ <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; </div>
252
+ <div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#afac06b0be2b04cb8a65af21fd697b756"> 220</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1ProgSlice.html#afac06b0be2b04cb8a65af21fd697b756">ProgSlice::evalFinalCond</a>()<span class="keyword"> const</span></div>
253
+ <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="keyword"></span>{</div>
254
+ <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>
255
+ <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; std::stringstream rawstr(str);</div>
256
+ <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>
257
+ <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> elems = pathAllocator-&gt;exactCondElem(finalCond);</div>
258
+ <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; </div>
259
+ <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>
260
+ <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; {</div>
261
+ <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 = pathAllocator-&gt;getCondInst(*it);</div>
262
+ <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span>(pathAllocator-&gt;isNegCond(*it))</div>
263
+ <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>
264
+ <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">else</span></div>
265
+ <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>
266
+ <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div>
267
+ <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; </div>
268
+ <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>
269
+ <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; iter!=eiter; ++iter)</div>
270
+ <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; {</div>
271
+ <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>
272
+ <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div>
273
+ <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; </div>
274
+ <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div>
275
+ <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;}</div>
276
+ <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; </div>
277
+ <div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a899332b210414ac991b57e83851ee5be"> 246</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#a899332b210414ac991b57e83851ee5be">ProgSlice::destroy</a>()</div>
278
+ <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;{</div>
279
+ <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;}</div>
247
280
  </div><!-- fragment --></div><!-- contents -->
248
281
  <div class="ttc" id="aclassSVF_1_1FIFOWorkList_html_a0df409a67428e528321869d201f2a474"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(const Data &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00165">WorkList.h:165</a></div></div>
249
282
  <div class="ttc" id="aclassSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00200">WorkList.h:200</a></div></div>
@@ -251,7 +284,7 @@ $(function() {
251
284
  <div class="ttc" id="aclassSVF_1_1ProgSlice_html_aa7979418bed24fcecfc6fa04532cd586"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aa7979418bed24fcecfc6fa04532cd586">SVF::ProgSlice::AllPathReachableSolve</a></div><div class="ttdeci">bool AllPathReachableSolve()</div><div class="ttdoc">Guarded reachability solve.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00043">ProgSlice.cpp:43</a></div></div>
252
285
  <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>
253
286
  <div class="ttc" id="anamespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
254
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a45fb7711498bcba60e931c9c2a9ccec4"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a45fb7711498bcba60e931c9c2a9ccec4">SVF::ProgSlice::isSatisfiableForPairs</a></div><div class="ttdeci">bool isSatisfiableForPairs()</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00111">ProgSlice.cpp:111</a></div></div>
287
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a45fb7711498bcba60e931c9c2a9ccec4"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a45fb7711498bcba60e931c9c2a9ccec4">SVF::ProgSlice::isSatisfiableForPairs</a></div><div class="ttdeci">bool isSatisfiableForPairs()</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00158">ProgSlice.cpp:158</a></div></div>
255
288
  <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>
256
289
  <div class="ttc" id="aclassSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
257
290
  <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>
@@ -259,9 +292,9 @@ $(function() {
259
292
  <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>
260
293
  <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>
261
294
  <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>
262
- <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>
295
+ <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>
263
296
  <div class="ttc" id="aclassSVF_1_1Z3Expr_html"><div class="ttname"><a href="classSVF_1_1Z3Expr.html">SVF::Z3Expr</a></div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00038">Z3Expr.h:38</a></div></div>
264
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a215c9142830814ae838d15d9b7b40af9"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a215c9142830814ae838d15d9b7b40af9">SVF::ProgSlice::evalFinalCond2Event</a></div><div class="ttdeci">void evalFinalCond2Event(GenericBug::EventStack &amp;eventStack) const</div><div class="ttdoc">Add final condition to eventStack.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00149">ProgSlice.cpp:149</a></div></div>
297
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_a215c9142830814ae838d15d9b7b40af9"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a215c9142830814ae838d15d9b7b40af9">SVF::ProgSlice::evalFinalCond2Event</a></div><div class="ttdeci">void evalFinalCond2Event(GenericBug::EventStack &amp;eventStack) const</div><div class="ttdoc">Add final condition to eventStack.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00196">ProgSlice.cpp:196</a></div></div>
265
298
  <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>
266
299
  <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>
267
300
  <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>
@@ -270,26 +303,27 @@ $(function() {
270
303
  <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>
271
304
  <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>
272
305
  <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>
306
+ <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>
273
307
  <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>
274
- <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>
308
+ <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>
275
309
  <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>
276
310
  <div class="ttc" id="aProgSlice_8h_html"><div class="ttname"><a href="ProgSlice_8h.html">ProgSlice.h</a></div></div>
277
311
  <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>
278
312
  <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>
279
313
  <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>
280
314
  <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>
281
- <div class="ttc" id="aclassSVF_1_1ProgSlice_html_afac06b0be2b04cb8a65af21fd697b756"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#afac06b0be2b04cb8a65af21fd697b756">SVF::ProgSlice::evalFinalCond</a></div><div class="ttdeci">std::string evalFinalCond() const</div><div class="ttdoc">Evaluate final condition.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00173">ProgSlice.cpp:173</a></div></div>
315
+ <div class="ttc" id="aclassSVF_1_1ProgSlice_html_afac06b0be2b04cb8a65af21fd697b756"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#afac06b0be2b04cb8a65af21fd697b756">SVF::ProgSlice::evalFinalCond</a></div><div class="ttdeci">std::string evalFinalCond() const</div><div class="ttdoc">Evaluate final condition.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00220">ProgSlice.cpp:220</a></div></div>
282
316
  <div class="ttc" id="aclassSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00137">WorkList.h:137</a></div></div>
283
317
  <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>
284
318
  <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>
285
319
  <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>
286
320
  <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>
287
321
  <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>
288
- <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>
322
+ <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>
289
323
  <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>
290
324
  <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>
291
325
  <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>
292
- <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>
326
+ <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>
293
327
  <!-- start footer part -->
294
328
  <hr class="footer"/><address class="footer"><small>
295
329
  Generated by &#160;<a href="http://www.doxygen.org/index.html">