svf-tools 1.0.418 → 1.0.421

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 (260) hide show
  1. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +14 -14
  3. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/Conditions_8cpp.html +0 -1
  5. package/SVF-doxygen/html/html/Conditions_8cpp_source.html +58 -49
  6. package/SVF-doxygen/html/html/Conditions_8h.html +6 -2
  7. package/SVF-doxygen/html/html/Conditions_8h_source.html +68 -60
  8. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
  9. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
  11. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +9 -9
  12. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +3 -3
  13. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
  14. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +7 -7
  15. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
  22. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
  23. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
  26. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +6 -6
  27. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
  28. package/SVF-doxygen/html/html/Options_8cpp_source.html +114 -113
  29. package/SVF-doxygen/html/html/Options_8h.html +1 -0
  30. package/SVF-doxygen/html/html/Options_8h_source.html +117 -115
  31. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +2 -2
  32. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +41 -23
  33. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +74 -74
  34. package/SVF-doxygen/html/html/PathDPItem_8h_source.html +7 -7
  35. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +4 -4
  36. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +12 -12
  37. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
  38. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +1 -1
  39. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +13 -13
  40. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
  41. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +4 -4
  42. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +1 -1
  43. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +3 -3
  44. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  45. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +4 -4
  48. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +3 -3
  49. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +3 -3
  50. package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
  51. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  52. package/SVF-doxygen/html/html/VFG_8cpp_source.html +1 -1
  53. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +3 -3
  54. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -4
  55. package/SVF-doxygen/html/html/annotated.html +7 -5
  56. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  57. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +23 -25
  58. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +6 -6
  59. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +1 -1
  60. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +1 -1
  61. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +4 -0
  62. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +2 -6
  63. package/SVF-doxygen/html/html/classSVF_1_1BDDExpr-members.html +92 -0
  64. package/SVF-doxygen/html/html/classSVF_1_1BDDExpr.html +304 -0
  65. package/SVF-doxygen/html/html/classSVF_1_1BDDExpr.png +0 -0
  66. package/SVF-doxygen/html/html/classSVF_1_1BDDManager-members.html +124 -0
  67. package/SVF-doxygen/html/html/classSVF_1_1BDDManager.html +1139 -0
  68. package/SVF-doxygen/html/html/classSVF_1_1BDDManager.png +0 -0
  69. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +5 -5
  70. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
  71. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
  72. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +1 -1
  73. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  74. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  75. package/SVF-doxygen/html/html/classSVF_1_1CondExpr-members.html +5 -8
  76. package/SVF-doxygen/html/html/classSVF_1_1CondExpr.html +22 -151
  77. package/SVF-doxygen/html/html/classSVF_1_1CondExpr.png +0 -0
  78. package/SVF-doxygen/html/html/classSVF_1_1CondManager-members.html +25 -36
  79. package/SVF-doxygen/html/html/classSVF_1_1CondManager.html +276 -605
  80. package/SVF-doxygen/html/html/classSVF_1_1CondManager.png +0 -0
  81. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
  82. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  83. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +1 -1
  84. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +9 -9
  85. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
  86. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
  87. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +9 -9
  88. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +7 -7
  89. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
  90. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  91. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
  92. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +1 -1
  93. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -2
  94. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
  95. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  96. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +1 -1
  97. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
  98. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +1 -1
  99. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +1 -1
  100. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
  101. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +3 -3
  102. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +6 -6
  103. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +1 -1
  104. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +2 -2
  105. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +1 -1
  106. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +6 -6
  107. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  108. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +1 -1
  109. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +103 -102
  110. package/SVF-doxygen/html/html/classSVF_1_1Options.html +141 -115
  111. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +3 -3
  112. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator-members.html +1 -1
  113. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +189 -196
  114. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
  115. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +13 -13
  116. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +1 -1
  117. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +20 -20
  118. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  119. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +5 -5
  120. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +5 -5
  121. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +4 -4
  122. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +5 -5
  123. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
  124. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +8 -8
  125. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  126. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +3 -3
  127. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +5 -5
  128. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +2 -2
  129. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  130. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  131. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
  132. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
  133. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +1 -1
  134. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
  135. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +3 -3
  136. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +11 -11
  137. package/SVF-doxygen/html/html/classSVF_1_1Z3Expr-members.html +95 -0
  138. package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +396 -0
  139. package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.png +0 -0
  140. package/SVF-doxygen/html/html/classSVF_1_1Z3Manager-members.html +122 -0
  141. package/SVF-doxygen/html/html/classSVF_1_1Z3Manager.html +1066 -0
  142. package/SVF-doxygen/html/html/classSVF_1_1Z3Manager.png +0 -0
  143. package/SVF-doxygen/html/html/classes.html +12 -11
  144. package/SVF-doxygen/html/html/functions_0x7e.html +9 -3
  145. package/SVF-doxygen/html/html/functions_a.html +4 -6
  146. package/SVF-doxygen/html/html/functions_b.html +33 -34
  147. package/SVF-doxygen/html/html/functions_c.html +43 -32
  148. package/SVF-doxygen/html/html/functions_d.html +5 -4
  149. package/SVF-doxygen/html/html/functions_e.html +8 -7
  150. package/SVF-doxygen/html/html/functions_enum.html +3 -0
  151. package/SVF-doxygen/html/html/functions_eval_b.html +6 -3
  152. package/SVF-doxygen/html/html/functions_eval_z.html +79 -0
  153. package/SVF-doxygen/html/html/functions_f.html +3 -3
  154. package/SVF-doxygen/html/html/functions_func.html +8 -7
  155. package/SVF-doxygen/html/html/functions_func_0x7e.html +9 -3
  156. package/SVF-doxygen/html/html/functions_func_b.html +10 -10
  157. package/SVF-doxygen/html/html/functions_func_c.html +23 -20
  158. package/SVF-doxygen/html/html/functions_func_d.html +5 -4
  159. package/SVF-doxygen/html/html/functions_func_e.html +3 -2
  160. package/SVF-doxygen/html/html/functions_func_g.html +33 -24
  161. package/SVF-doxygen/html/html/functions_func_i.html +17 -11
  162. package/SVF-doxygen/html/html/functions_func_n.html +4 -3
  163. package/SVF-doxygen/html/html/functions_func_o.html +4 -3
  164. package/SVF-doxygen/html/html/functions_func_p.html +3 -3
  165. package/SVF-doxygen/html/html/functions_func_s.html +2 -2
  166. package/SVF-doxygen/html/html/functions_func_z.html +79 -0
  167. package/SVF-doxygen/html/html/functions_g.html +35 -26
  168. package/SVF-doxygen/html/html/functions_i.html +30 -15
  169. package/SVF-doxygen/html/html/functions_l.html +8 -8
  170. package/SVF-doxygen/html/html/functions_m.html +1 -1
  171. package/SVF-doxygen/html/html/functions_n.html +4 -3
  172. package/SVF-doxygen/html/html/functions_o.html +9 -14
  173. package/SVF-doxygen/html/html/functions_p.html +10 -10
  174. package/SVF-doxygen/html/html/functions_r.html +7 -7
  175. package/SVF-doxygen/html/html/functions_rela.html +4 -0
  176. package/SVF-doxygen/html/html/functions_s.html +13 -15
  177. package/SVF-doxygen/html/html/functions_t.html +1 -3
  178. package/SVF-doxygen/html/html/functions_type_b.html +5 -6
  179. package/SVF-doxygen/html/html/functions_type_c.html +1 -1
  180. package/SVF-doxygen/html/html/functions_type_i.html +4 -1
  181. package/SVF-doxygen/html/html/functions_type_z.html +77 -0
  182. package/SVF-doxygen/html/html/functions_v.html +3 -3
  183. package/SVF-doxygen/html/html/functions_vars_a.html +0 -3
  184. package/SVF-doxygen/html/html/functions_vars_b.html +6 -9
  185. package/SVF-doxygen/html/html/functions_vars_c.html +5 -2
  186. package/SVF-doxygen/html/html/functions_vars_e.html +1 -1
  187. package/SVF-doxygen/html/html/functions_vars_i.html +6 -0
  188. package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
  189. package/SVF-doxygen/html/html/functions_vars_n.html +1 -1
  190. package/SVF-doxygen/html/html/functions_vars_s.html +1 -1
  191. package/SVF-doxygen/html/html/functions_z.html +16 -0
  192. package/SVF-doxygen/html/html/hierarchy.html +436 -434
  193. package/SVF-doxygen/html/html/menudata.js +5 -2
  194. package/SVF-doxygen/html/html/namespaceSVF.html +8 -4
  195. package/SVF-doxygen/html/html/search/all_1.js +1 -2
  196. package/SVF-doxygen/html/html/search/all_10.js +11 -11
  197. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  198. package/SVF-doxygen/html/html/search/all_13.js +8 -8
  199. package/SVF-doxygen/html/html/search/all_14.js +1 -1
  200. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  201. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  202. package/SVF-doxygen/html/html/search/all_1a.js +5 -0
  203. package/SVF-doxygen/html/html/search/all_1b.js +5 -3
  204. package/SVF-doxygen/html/html/search/all_2.js +10 -9
  205. package/SVF-doxygen/html/html/search/all_3.js +9 -7
  206. package/SVF-doxygen/html/html/search/all_4.js +3 -3
  207. package/SVF-doxygen/html/html/search/all_5.js +2 -2
  208. package/SVF-doxygen/html/html/search/all_6.js +1 -1
  209. package/SVF-doxygen/html/html/search/all_7.js +13 -11
  210. package/SVF-doxygen/html/html/search/all_9.js +8 -6
  211. package/SVF-doxygen/html/html/search/all_c.js +5 -5
  212. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  213. package/SVF-doxygen/html/html/search/all_e.js +4 -4
  214. package/SVF-doxygen/html/html/search/all_f.js +2 -2
  215. package/SVF-doxygen/html/html/search/classes_1.js +2 -2
  216. package/SVF-doxygen/html/html/search/classes_14.html +26 -0
  217. package/SVF-doxygen/html/html/search/classes_14.js +5 -0
  218. package/SVF-doxygen/html/html/search/enums_1.js +1 -0
  219. package/SVF-doxygen/html/html/search/enumvalues_1.js +2 -1
  220. package/SVF-doxygen/html/html/search/enumvalues_14.html +26 -0
  221. package/SVF-doxygen/html/html/search/enumvalues_14.js +5 -0
  222. package/SVF-doxygen/html/html/search/functions_0.js +1 -1
  223. package/SVF-doxygen/html/html/search/functions_1.js +5 -5
  224. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  225. package/SVF-doxygen/html/html/search/functions_15.js +2 -0
  226. package/SVF-doxygen/html/html/search/functions_16.js +5 -3
  227. package/SVF-doxygen/html/html/search/functions_2.js +5 -5
  228. package/SVF-doxygen/html/html/search/functions_3.js +3 -3
  229. package/SVF-doxygen/html/html/search/functions_4.js +1 -1
  230. package/SVF-doxygen/html/html/search/functions_6.js +13 -11
  231. package/SVF-doxygen/html/html/search/functions_8.js +4 -4
  232. package/SVF-doxygen/html/html/search/functions_c.js +1 -1
  233. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  234. package/SVF-doxygen/html/html/search/functions_e.js +4 -4
  235. package/SVF-doxygen/html/html/search/related_0.js +2 -1
  236. package/SVF-doxygen/html/html/search/searchdata.js +3 -3
  237. package/SVF-doxygen/html/html/search/typedefs_1.js +2 -2
  238. package/SVF-doxygen/html/html/search/typedefs_16.html +26 -0
  239. package/SVF-doxygen/html/html/search/typedefs_16.js +4 -0
  240. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
  241. package/SVF-doxygen/html/html/search/typedefs_8.js +2 -1
  242. package/SVF-doxygen/html/html/search/variables_1.js +0 -1
  243. package/SVF-doxygen/html/html/search/variables_13.js +1 -1
  244. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  245. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  246. package/SVF-doxygen/html/html/search/variables_2.js +2 -3
  247. package/SVF-doxygen/html/html/search/variables_3.js +2 -1
  248. package/SVF-doxygen/html/html/search/variables_5.js +1 -1
  249. package/SVF-doxygen/html/html/search/variables_9.js +2 -0
  250. package/SVF-doxygen/html/html/search/variables_d.js +2 -2
  251. package/SVF-doxygen/html/html/search/variables_e.js +3 -3
  252. package/include/SABER/PathCondAllocator.h +2 -3
  253. package/include/Util/Conditions.h +272 -166
  254. package/include/Util/Options.h +4 -0
  255. package/index.html +2 -0
  256. package/lib/SABER/PathCondAllocator.cpp +3 -0
  257. package/lib/Util/Conditions.cpp +245 -209
  258. package/lib/Util/Options.cpp +11 -0
  259. package/lib/WPA/Andersen.cpp +10 -9
  260. package/package.json +1 -1
@@ -99,9 +99,9 @@ Public Types</h2></td></tr>
99
99
  </table><table class="memberdecls">
100
100
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
101
101
  Public Member Functions</h2></td></tr>
102
- <tr class="memitem:ad7ff43210c36654ae775e0542be79da1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PathCondAllocator.html#ad7ff43210c36654ae775e0542be79da1">PathCondAllocator</a> ()</td></tr>
103
- <tr class="memdesc:ad7ff43210c36654ae775e0542be79da1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <a href="#ad7ff43210c36654ae775e0542be79da1">More...</a><br /></td></tr>
104
- <tr class="separator:ad7ff43210c36654ae775e0542be79da1"><td class="memSeparator" colspan="2">&#160;</td></tr>
102
+ <tr class="memitem:a805120d975a4e0981b7045b719fe9de3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PathCondAllocator.html#a805120d975a4e0981b7045b719fe9de3">PathCondAllocator</a> ()</td></tr>
103
+ <tr class="memdesc:a805120d975a4e0981b7045b719fe9de3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <a href="#a805120d975a4e0981b7045b719fe9de3">More...</a><br /></td></tr>
104
+ <tr class="separator:a805120d975a4e0981b7045b719fe9de3"><td class="memSeparator" colspan="2">&#160;</td></tr>
105
105
  <tr class="memitem:ab9215223c463ef43f18f5151d6cd0fe3"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PathCondAllocator.html#ab9215223c463ef43f18f5151d6cd0fe3">~PathCondAllocator</a> ()</td></tr>
106
106
  <tr class="memdesc:ab9215223c463ef43f18f5151d6cd0fe3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <a href="#ab9215223c463ef43f18f5151d6cd0fe3">More...</a><br /></td></tr>
107
107
  <tr class="separator:ab9215223c463ef43f18f5151d6cd0fe3"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -393,34 +393,27 @@ Private Attributes</h2></td></tr>
393
393
  </div>
394
394
  </div>
395
395
  <h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
396
- <a id="ad7ff43210c36654ae775e0542be79da1"></a>
397
- <h2 class="memtitle"><span class="permalink"><a href="#ad7ff43210c36654ae775e0542be79da1">&#9670;&nbsp;</a></span>PathCondAllocator()</h2>
396
+ <a id="a805120d975a4e0981b7045b719fe9de3"></a>
397
+ <h2 class="memtitle"><span class="permalink"><a href="#a805120d975a4e0981b7045b719fe9de3">&#9670;&nbsp;</a></span>PathCondAllocator()</h2>
398
398
 
399
399
  <div class="memitem">
400
400
  <div class="memproto">
401
- <table class="mlabels">
402
- <tr>
403
- <td class="mlabels-left">
404
401
  <table class="memname">
405
402
  <tr>
406
- <td class="memname">SVF::PathCondAllocator::PathCondAllocator </td>
403
+ <td class="memname">PathCondAllocator::PathCondAllocator </td>
407
404
  <td>(</td>
408
405
  <td class="paramname"></td><td>)</td>
409
406
  <td></td>
410
407
  </tr>
411
408
  </table>
412
- </td>
413
- <td class="mlabels-right">
414
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
415
- </tr>
416
- </table>
417
409
  </div><div class="memdoc">
418
410
 
419
411
  <p>Constructor. </p>
420
412
 
421
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00062">62</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
422
- <div class="fragment"><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; : <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>(<a class="code" href="classSVF_1_1CondManager.html#a0128830b629c00d91dc78d348300e7c6">CondManager::getCondMgr</a>())</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_a0128830b629c00d91dc78d348300e7c6"><div class="ttname"><a href="classSVF_1_1CondManager.html#a0128830b629c00d91dc78d348300e7c6">SVF::CondManager::getCondMgr</a></div><div class="ttdeci">static CondManager * getCondMgr()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00195">Conditions.h:195</a></div></div>
423
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
413
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00048">48</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
414
+ <div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; : <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>(<a class="code" href="classSVF_1_1CondManager.html#a08cad78a4ebb31f32b72d5ff9793b83e">CondManager::getCondMgr</a>(<a class="code" href="classSVF_1_1Options.html#a87567aa3e6423fc96e0dfbaff00ed565">Options::ConditionType</a>)) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div><div class="ttc" id="classSVF_1_1Options_html_a87567aa3e6423fc96e0dfbaff00ed565"><div class="ttname"><a href="classSVF_1_1Options.html#a87567aa3e6423fc96e0dfbaff00ed565">SVF::Options::ConditionType</a></div><div class="ttdeci">static const llvm::cl::opt&lt; CondManager::CondMgrKind &gt; ConditionType</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00259">Options.h:259</a></div></div>
415
+ <div class="ttc" id="classSVF_1_1CondManager_html_a08cad78a4ebb31f32b72d5ff9793b83e"><div class="ttname"><a href="classSVF_1_1CondManager.html#a08cad78a4ebb31f32b72d5ff9793b83e">SVF::CondManager::getCondMgr</a></div><div class="ttdeci">static CondManager * getCondMgr(CondMgrKind _condMgrKind)</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8cpp_source.html#l00043">Conditions.cpp:43</a></div></div>
416
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00282">PathCondAllocator.h:282</a></div></div>
424
417
  </div><!-- fragment -->
425
418
  </div>
426
419
  </div>
@@ -449,8 +442,8 @@ Private Attributes</h2></td></tr>
449
442
 
450
443
  <p>Destructor. </p>
451
444
 
452
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00066">66</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
453
- <div class="fragment"><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div></div><!-- fragment -->
445
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00065">65</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
446
+ <div class="fragment"><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div></div><!-- fragment -->
454
447
  </div>
455
448
  </div>
456
449
  <h2 class="groupheader">Member Function Documentation</h2>
@@ -473,17 +466,17 @@ Private Attributes</h2></td></tr>
473
466
  <p>Perform path allocation. </p>
474
467
  <p>Allocate path condition for each branch </p>
475
468
 
476
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00051">51</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
477
- <div class="fragment"><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;path condition allocation starts\n&quot;</span>));</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; func : *M)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(func))</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="comment">// Allocate conditions for a program.</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator bit = func-&gt;getLLVMFun()-&gt;begin(), ebit = func-&gt;getLLVMFun()-&gt;end(); bit != ebit; ++bit)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> &amp; bb = *bit;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#a391cb347cf98f33c261e59975900048e">collectBBCallingProgExit</a>(bb);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#af854f880e76738a13d6cb937a257828f">allocateForBB</a>(bb);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ae6b763ff293381ed5da9b07c2e8ae496">Options::PrintPathCond</a>)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#a2932b15ef74e46b676075ba1b2e82111">printPathCond</a>();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;path condition allocation ends\n&quot;</span>));</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;}</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_af854f880e76738a13d6cb937a257828f"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#af854f880e76738a13d6cb937a257828f">SVF::PathCondAllocator::allocateForBB</a></div><div class="ttdeci">virtual void allocateForBB(const BasicBlock &amp;bb)</div><div class="ttdoc">Allocate path condition for every basic block. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00078">PathCondAllocator.cpp:78</a></div></div>
469
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00054">54</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
470
+ <div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;path condition allocation starts\n&quot;</span>));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; func : *M)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(func))</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="comment">// Allocate conditions for a program.</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">for</span> (Function::const_iterator bit = func-&gt;getLLVMFun()-&gt;begin(), ebit = func-&gt;getLLVMFun()-&gt;end(); bit != ebit; ++bit)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> &amp; bb = *bit;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#a391cb347cf98f33c261e59975900048e">collectBBCallingProgExit</a>(bb);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#af854f880e76738a13d6cb937a257828f">allocateForBB</a>(bb);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ae6b763ff293381ed5da9b07c2e8ae496">Options::PrintPathCond</a>)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#a2932b15ef74e46b676075ba1b2e82111">printPathCond</a>();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;path condition allocation ends\n&quot;</span>));</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;}</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_af854f880e76738a13d6cb937a257828f"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#af854f880e76738a13d6cb937a257828f">SVF::PathCondAllocator::allocateForBB</a></div><div class="ttdeci">virtual void allocateForBB(const BasicBlock &amp;bb)</div><div class="ttdoc">Allocate path condition for every basic block. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00081">PathCondAllocator.cpp:81</a></div></div>
478
471
  <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
479
472
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00101">SVFUtil.cpp:101</a></div></div>
480
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a2932b15ef74e46b676075ba1b2e82111"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a2932b15ef74e46b676075ba1b2e82111">SVF::PathCondAllocator::printPathCond</a></div><div class="ttdeci">void printPathCond()</div><div class="ttdoc">Print out the path condition information. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00534">PathCondAllocator.cpp:534</a></div></div>
473
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a2932b15ef74e46b676075ba1b2e82111"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a2932b15ef74e46b676075ba1b2e82111">SVF::PathCondAllocator::printPathCond</a></div><div class="ttdeci">void printPathCond()</div><div class="ttdoc">Print out the path condition information. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00537">PathCondAllocator.cpp:537</a></div></div>
481
474
  <div class="ttc" id="namespaceSVF_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#l00049">SVFUtil.h:49</a></div></div>
482
475
  <div class="ttc" id="SVFBasicTypes_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00156">SVFBasicTypes.h:156</a></div></div>
483
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a391cb347cf98f33c261e59975900048e"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a391cb347cf98f33c261e59975900048e">SVF::PathCondAllocator::collectBBCallingProgExit</a></div><div class="ttdeci">void collectBBCallingProgExit(const BasicBlock &amp;bb)</div><div class="ttdoc">Collect basic block contains program exit function call. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00391">PathCondAllocator.cpp:391</a></div></div>
476
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a391cb347cf98f33c261e59975900048e"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a391cb347cf98f33c261e59975900048e">SVF::PathCondAllocator::collectBBCallingProgExit</a></div><div class="ttdeci">void collectBBCallingProgExit(const BasicBlock &amp;bb)</div><div class="ttdoc">Collect basic block contains program exit function call. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00394">PathCondAllocator.cpp:394</a></div></div>
484
477
  <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00151">SVFBasicTypes.h:151</a></div></div>
485
478
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00065">LLVMUtil.h:65</a></div></div>
486
- <div class="ttc" id="classSVF_1_1Options_html_ae6b763ff293381ed5da9b07c2e8ae496"><div class="ttname"><a href="classSVF_1_1Options.html#ae6b763ff293381ed5da9b07c2e8ae496">SVF::Options::PrintPathCond</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PrintPathCond</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00221">Options.h:221</a></div></div>
479
+ <div class="ttc" id="classSVF_1_1Options_html_ae6b763ff293381ed5da9b07c2e8ae496"><div class="ttname"><a href="classSVF_1_1Options.html#ae6b763ff293381ed5da9b07c2e8ae496">SVF::Options::PrintPathCond</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PrintPathCond</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00222">Options.h:222</a></div></div>
487
480
  </div><!-- fragment -->
488
481
  </div>
489
482
  </div>
@@ -515,15 +508,15 @@ Private Attributes</h2></td></tr>
515
508
  <p>Allocate conditions for a basic block and propagate its condition to its successors. </p>
516
509
  <p>TODO: handle BranchInst and SwitchInst individually here!! </p>
517
510
 
518
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00078">78</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
519
- <div class="fragment"><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;{</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succ_number = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">getBBSuccessorNum</a>(&amp;bb);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="comment">// if successor number greater than 1, allocate new decision variable for successors</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">if</span>(succ_number &gt; 1)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="comment">//allocate log2(num_succ) decision variables</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">double</span> num = log(succ_number)/log(2);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit_num = (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)ceil(num);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succ_index = 0;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; std::vector&lt;Condition*&gt; condVec;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0 ; i &lt; bit_num; i++)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; condVec.push_back(<a class="code" href="classSVF_1_1PathCondAllocator.html#a3cd08242b82129e6074b2f30a19b5c17">newCond</a>(bb.getTerminator()));</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="comment">// iterate each successor</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> succ_it = succ_begin(&amp;bb);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; succ_it != succ_end(&amp;bb);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; succ_it++, succ_index++)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ = *succ_it;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* path_cond = <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="comment">// for each successor decide its bit representation</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="comment">// decide whether each bit of succ_index is 1 or 0, if (three successor) succ_index is 000 then use C1^C2^C3</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="comment">// if 001 use C1^C2^negC3</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0 ; j &lt; bit_num; j++)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">//test each bit of this successor&#39;s index (binary representation)</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tool = 0x01 &lt;&lt; j;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span>(tool &amp; succ_index)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; path_cond = <a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(path_cond, (<a class="code" href="classSVF_1_1PathCondAllocator.html#ac1ed60a8f59a55811c97c83def3bb739">condNeg</a>(condVec.at(j))));</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; path_cond = <a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(path_cond, condVec.at(j));</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aaec323fc8a3f83da4596ed7d447ab6f1">setBranchCond</a>(&amp;bb,succ,path_cond);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
520
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00095">PathCondAllocator.h:95</a></div></div>
511
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00081">81</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
512
+ <div class="fragment"><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;{</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succ_number = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">getBBSuccessorNum</a>(&amp;bb);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">// if successor number greater than 1, allocate new decision variable for successors</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span>(succ_number &gt; 1)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">//allocate log2(num_succ) decision variables</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">double</span> num = log(succ_number)/log(2);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit_num = (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)ceil(num);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succ_index = 0;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; std::vector&lt;Condition*&gt; condVec;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0 ; i &lt; bit_num; i++)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; condVec.push_back(<a class="code" href="classSVF_1_1PathCondAllocator.html#a3cd08242b82129e6074b2f30a19b5c17">newCond</a>(bb.getTerminator()));</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">// iterate each successor</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> succ_it = succ_begin(&amp;bb);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; succ_it != succ_end(&amp;bb);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; succ_it++, succ_index++)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ = *succ_it;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* path_cond = <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="comment">// for each successor decide its bit representation</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="comment">// decide whether each bit of succ_index is 1 or 0, if (three successor) succ_index is 000 then use C1^C2^C3</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">// if 001 use C1^C2^negC3</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0 ; j &lt; bit_num; j++)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">//test each bit of this successor&#39;s index (binary representation)</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tool = 0x01 &lt;&lt; j;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span>(tool &amp; succ_index)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; path_cond = <a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(path_cond, (<a class="code" href="classSVF_1_1PathCondAllocator.html#ac1ed60a8f59a55811c97c83def3bb739">condNeg</a>(condVec.at(j))));</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; path_cond = <a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(path_cond, condVec.at(j));</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aaec323fc8a3f83da4596ed7d447ab6f1">setBranchCond</a>(&amp;bb,succ,path_cond);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
513
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00094">PathCondAllocator.h:94</a></div></div>
521
514
  <div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00195">BasicTypes.h:195</a></div></div>
522
515
  <div class="ttc" id="namespaceSVF_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="SVFBasicTypes_8h_source.html#l00077">SVFBasicTypes.h:77</a></div></div>
523
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a3cd08242b82129e6074b2f30a19b5c17"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a3cd08242b82129e6074b2f30a19b5c17">SVF::PathCondAllocator::newCond</a></div><div class="ttdeci">Condition * newCond(const Instruction *inst)</div><div class="ttdoc">Allocate a new condition. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00121">PathCondAllocator.h:121</a></div></div>
524
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aaec323fc8a3f83da4596ed7d447ab6f1"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aaec323fc8a3f83da4596ed7d447ab6f1">SVF::PathCondAllocator::setBranchCond</a></div><div class="ttdeci">void setBranchCond(const BasicBlock *bb, const BasicBlock *succ, Condition *cond)</div><div class="ttdoc">Get/Set a branch condition, and its terminator instruction. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00160">PathCondAllocator.cpp:160</a></div></div>
525
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab0e41d1eacfc6ee2cf42a9ce69cdcb61"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">SVF::PathCondAllocator::condAnd</a></div><div class="ttdeci">Condition * condAnd(Condition *lhs, Condition *rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00083">PathCondAllocator.h:83</a></div></div>
526
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac1ed60a8f59a55811c97c83def3bb739"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac1ed60a8f59a55811c97c83def3bb739">SVF::PathCondAllocator::condNeg</a></div><div class="ttdeci">Condition * condNeg(Condition *cond)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00091">PathCondAllocator.h:91</a></div></div>
516
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a3cd08242b82129e6074b2f30a19b5c17"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a3cd08242b82129e6074b2f30a19b5c17">SVF::PathCondAllocator::newCond</a></div><div class="ttdeci">Condition * newCond(const Instruction *inst)</div><div class="ttdoc">Allocate a new condition. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00120">PathCondAllocator.h:120</a></div></div>
517
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aaec323fc8a3f83da4596ed7d447ab6f1"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aaec323fc8a3f83da4596ed7d447ab6f1">SVF::PathCondAllocator::setBranchCond</a></div><div class="ttdeci">void setBranchCond(const BasicBlock *bb, const BasicBlock *succ, Condition *cond)</div><div class="ttdoc">Get/Set a branch condition, and its terminator instruction. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00163">PathCondAllocator.cpp:163</a></div></div>
518
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab0e41d1eacfc6ee2cf42a9ce69cdcb61"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">SVF::PathCondAllocator::condAnd</a></div><div class="ttdeci">Condition * condAnd(Condition *lhs, Condition *rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00082">PathCondAllocator.h:82</a></div></div>
519
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac1ed60a8f59a55811c97c83def3bb739"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac1ed60a8f59a55811c97c83def3bb739">SVF::PathCondAllocator::condNeg</a></div><div class="ttdeci">Condition * condNeg(Condition *cond)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00090">PathCondAllocator.h:90</a></div></div>
527
520
  <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aade2bc55c3882a6cacc3c4a891a1c4a3"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">SVF::PathCondAllocator::Condition</a></div><div class="ttdeci">CondExpr Condition</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00051">PathCondAllocator.h:51</a></div></div>
528
521
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a737684498679dc16a26f2411d88f36aa"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">SVF::SVFUtil::getBBSuccessorNum</a></div><div class="ttdeci">u32_t getBBSuccessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB&amp;#39;s successors. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00349">LLVMUtil.cpp:349</a></div></div>
529
522
  </div><!-- fragment -->
@@ -552,8 +545,8 @@ Private Attributes</h2></td></tr>
552
545
  </table>
553
546
  </div><div class="memdoc">
554
547
 
555
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00172">172</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
556
- <div class="fragment"><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.clear();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac3a0aa27f317d7d9214181b599f19f24"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">SVF::PathCondAllocator::bbToCondMap</a></div><div class="ttdeci">BBToCondMap bbToCondMap</div><div class="ttdoc">map a basic block to its path condition starting from root </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00279">PathCondAllocator.h:279</a></div></div>
548
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00171">171</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
549
+ <div class="fragment"><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.clear();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac3a0aa27f317d7d9214181b599f19f24"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">SVF::PathCondAllocator::bbToCondMap</a></div><div class="ttdeci">BBToCondMap bbToCondMap</div><div class="ttdoc">map a basic block to its path condition starting from root </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00278">PathCondAllocator.h:278</a></div></div>
557
550
  </div><!-- fragment -->
558
551
  </div>
559
552
  </div>
@@ -584,8 +577,8 @@ Private Attributes</h2></td></tr>
584
577
  <p>Collect basic block contains program exit function call. </p>
585
578
  <p>Whether this basic block contains program exit function call </p>
586
579
 
587
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00391">391</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
588
- <div class="fragment"><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;{</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">for</span>(BasicBlock::const_iterator it = bb.begin(), eit = bb.end(); it!=eit; it++)</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &amp;*it;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;CallInst&gt;(inst) || SVFUtil::isa&lt;InvokeInst&gt;(inst))</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a6528edf9a1750df4a84d1a60d4d0bbe4">SVFUtil::isProgExitCall</a>(inst))</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b">funToExitBBsMap</a>[bb.getParent()].insert(&amp;bb);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;}</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_ad35f1bdb406a85c5bfdcbbc15642853b"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b">SVF::PathCondAllocator::funToExitBBsMap</a></div><div class="ttdeci">FunToExitBBsMap funToExitBBsMap</div><div class="ttdoc">map a function to all its basic blocks calling program exit </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00278">PathCondAllocator.h:278</a></div></div>
580
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00394">394</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
581
+ <div class="fragment"><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;{</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">for</span>(BasicBlock::const_iterator it = bb.begin(), eit = bb.end(); it!=eit; it++)</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &amp;*it;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;CallInst&gt;(inst) || SVFUtil::isa&lt;InvokeInst&gt;(inst))</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a6528edf9a1750df4a84d1a60d4d0bbe4">SVFUtil::isProgExitCall</a>(inst))</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b">funToExitBBsMap</a>[bb.getParent()].insert(&amp;bb);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;}</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_ad35f1bdb406a85c5bfdcbbc15642853b"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b">SVF::PathCondAllocator::funToExitBBsMap</a></div><div class="ttdeci">FunToExitBBsMap funToExitBBsMap</div><div class="ttdoc">map a function to all its basic blocks calling program exit </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00277">PathCondAllocator.h:277</a></div></div>
589
582
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6528edf9a1750df4a84d1a60d4d0bbe4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6528edf9a1750df4a84d1a60d4d0bbe4">SVF::SVFUtil::isProgExitCall</a></div><div class="ttdeci">bool isProgExitCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00472">LLVMUtil.h:472</a></div></div>
590
583
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
591
584
  </div><!-- fragment -->
@@ -632,14 +625,14 @@ Private Attributes</h2></td></tr>
632
625
  </div><div class="memdoc">
633
626
  <p>Compute calling inter-procedural guards between two SVFGNodes (from caller to callee) src &ndash;c1&ndash;&gt; callBB &ndash;true&ndash;&gt; funEntryBB &ndash;c2&ndash;&gt; dst the InterCallVFGGuard is c1 ^ c2 </p>
634
627
 
635
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00450">450</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
636
- <div class="fragment"><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;{</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* funEntryBB = &amp;dstBB-&gt;getParent()-&gt;getEntryBlock();</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* c1 = <a class="code" href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">ComputeIntraVFGGuard</a>(srcBB,callBB);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">setCFCond</a>(funEntryBB,<a class="code" href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">condOr</a>(<a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(funEntryBB),<a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(callBB)));</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* c2 = <a class="code" href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">ComputeIntraVFGGuard</a>(funEntryBB,dstBB);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(c1,c2);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
637
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4cb61914dff693e284091e97ab8c8878"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">SVF::PathCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, Condition *cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00251">PathCondAllocator.h:251</a></div></div>
638
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5a8c25d74ffc2a8f8dbd20faab4d9803"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">SVF::PathCondAllocator::condOr</a></div><div class="ttdeci">Condition * condOr(Condition *lhs, Condition *rhs)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00087">PathCondAllocator.h:87</a></div></div>
639
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab0e41d1eacfc6ee2cf42a9ce69cdcb61"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">SVF::PathCondAllocator::condAnd</a></div><div class="ttdeci">Condition * condAnd(Condition *lhs, Condition *rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00083">PathCondAllocator.h:83</a></div></div>
628
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00453">453</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
629
+ <div class="fragment"><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;{</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* funEntryBB = &amp;dstBB-&gt;getParent()-&gt;getEntryBlock();</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* c1 = <a class="code" href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">ComputeIntraVFGGuard</a>(srcBB,callBB);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">setCFCond</a>(funEntryBB,<a class="code" href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">condOr</a>(<a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(funEntryBB),<a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(callBB)));</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* c2 = <a class="code" href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">ComputeIntraVFGGuard</a>(funEntryBB,dstBB);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(c1,c2);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
630
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4cb61914dff693e284091e97ab8c8878"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">SVF::PathCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, Condition *cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00250">PathCondAllocator.h:250</a></div></div>
631
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5a8c25d74ffc2a8f8dbd20faab4d9803"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">SVF::PathCondAllocator::condOr</a></div><div class="ttdeci">Condition * condOr(Condition *lhs, Condition *rhs)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00086">PathCondAllocator.h:86</a></div></div>
632
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab0e41d1eacfc6ee2cf42a9ce69cdcb61"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">SVF::PathCondAllocator::condAnd</a></div><div class="ttdeci">Condition * condAnd(Condition *lhs, Condition *rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00082">PathCondAllocator.h:82</a></div></div>
640
633
  <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aade2bc55c3882a6cacc3c4a891a1c4a3"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">SVF::PathCondAllocator::Condition</a></div><div class="ttdeci">CondExpr Condition</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00051">PathCondAllocator.h:51</a></div></div>
641
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a8c926057571ca14743e106a5a6ce7ae9"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">SVF::PathCondAllocator::getCFCond</a></div><div class="ttdeci">Condition * getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00261">PathCondAllocator.h:261</a></div></div>
642
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5ab573cce84584c44778611ba6f4d99c"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">SVF::PathCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition * ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks) </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00478">PathCondAllocator.cpp:478</a></div></div>
634
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a8c926057571ca14743e106a5a6ce7ae9"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">SVF::PathCondAllocator::getCFCond</a></div><div class="ttdeci">Condition * getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00260">PathCondAllocator.h:260</a></div></div>
635
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5ab573cce84584c44778611ba6f4d99c"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">SVF::PathCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition * ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks) </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00481">PathCondAllocator.cpp:481</a></div></div>
643
636
  </div><!-- fragment -->
644
637
  </div>
645
638
  </div>
@@ -684,15 +677,15 @@ Private Attributes</h2></td></tr>
684
677
  </div><div class="memdoc">
685
678
  <p>Compute return inter-procedural guards between two SVFGNodes (from callee to caller) src &ndash;c1&ndash;&gt; funExitBB &ndash;true&ndash;&gt; retBB &ndash;c2&ndash;&gt; dst the InterRetVFGGuard is c1 ^ c2 </p>
686
679
 
687
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00465">465</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
688
- <div class="fragment"><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;{</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* funExitBB = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a3cb226930eeaf558575e09e5b65e0223">getFunExitBB</a>(srcBB-&gt;getParent());</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* c1 = <a class="code" href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">ComputeIntraVFGGuard</a>(srcBB,funExitBB);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">setCFCond</a>(retBB,<a class="code" href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">condOr</a>(<a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(retBB),<a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(funExitBB)));</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* c2 = <a class="code" href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">ComputeIntraVFGGuard</a>(retBB,dstBB);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(c1,c2);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
689
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4cb61914dff693e284091e97ab8c8878"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">SVF::PathCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, Condition *cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00251">PathCondAllocator.h:251</a></div></div>
690
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5a8c25d74ffc2a8f8dbd20faab4d9803"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">SVF::PathCondAllocator::condOr</a></div><div class="ttdeci">Condition * condOr(Condition *lhs, Condition *rhs)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00087">PathCondAllocator.h:87</a></div></div>
680
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00468">468</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
681
+ <div class="fragment"><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;{</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* funExitBB = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a3cb226930eeaf558575e09e5b65e0223">getFunExitBB</a>(srcBB-&gt;getParent());</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* c1 = <a class="code" href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">ComputeIntraVFGGuard</a>(srcBB,funExitBB);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">setCFCond</a>(retBB,<a class="code" href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">condOr</a>(<a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(retBB),<a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(funExitBB)));</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* c2 = <a class="code" href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">ComputeIntraVFGGuard</a>(retBB,dstBB);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(c1,c2);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
682
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4cb61914dff693e284091e97ab8c8878"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">SVF::PathCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, Condition *cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00250">PathCondAllocator.h:250</a></div></div>
683
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5a8c25d74ffc2a8f8dbd20faab4d9803"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">SVF::PathCondAllocator::condOr</a></div><div class="ttdeci">Condition * condOr(Condition *lhs, Condition *rhs)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00086">PathCondAllocator.h:86</a></div></div>
691
684
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a3cb226930eeaf558575e09e5b65e0223"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a3cb226930eeaf558575e09e5b65e0223">SVF::SVFUtil::getFunExitBB</a></div><div class="ttdeci">const BasicBlock * getFunExitBB(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00507">LLVMUtil.h:507</a></div></div>
692
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab0e41d1eacfc6ee2cf42a9ce69cdcb61"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">SVF::PathCondAllocator::condAnd</a></div><div class="ttdeci">Condition * condAnd(Condition *lhs, Condition *rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00083">PathCondAllocator.h:83</a></div></div>
685
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab0e41d1eacfc6ee2cf42a9ce69cdcb61"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">SVF::PathCondAllocator::condAnd</a></div><div class="ttdeci">Condition * condAnd(Condition *lhs, Condition *rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00082">PathCondAllocator.h:82</a></div></div>
693
686
  <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aade2bc55c3882a6cacc3c4a891a1c4a3"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">SVF::PathCondAllocator::Condition</a></div><div class="ttdeci">CondExpr Condition</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00051">PathCondAllocator.h:51</a></div></div>
694
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a8c926057571ca14743e106a5a6ce7ae9"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">SVF::PathCondAllocator::getCFCond</a></div><div class="ttdeci">Condition * getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00261">PathCondAllocator.h:261</a></div></div>
695
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5ab573cce84584c44778611ba6f4d99c"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">SVF::PathCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition * ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks) </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00478">PathCondAllocator.cpp:478</a></div></div>
687
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a8c926057571ca14743e106a5a6ce7ae9"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">SVF::PathCondAllocator::getCFCond</a></div><div class="ttdeci">Condition * getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00260">PathCondAllocator.h:260</a></div></div>
688
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5ab573cce84584c44778611ba6f4d99c"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">SVF::PathCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition * ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks) </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00481">PathCondAllocator.cpp:481</a></div></div>
696
689
  </div><!-- fragment -->
697
690
  </div>
698
691
  </div>
@@ -735,23 +728,23 @@ Private Attributes</h2></td></tr>
735
728
  <p>if the dstBB is the eligible loop exit of the current basic block we can early terminate the computation</p>
736
729
  <p>calculate the branch condition if succ post dominate bb, then we get brCond quicker by using postDT note that we assume loop exit always post dominate loop bodys which means loops are approximated only once. </p>
737
730
 
738
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00478">478</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
739
- <div class="fragment"><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;{</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(srcBB-&gt;getParent() == dstBB-&gt;getParent() &amp;&amp; <span class="stringliteral">&quot;two basic blocks are not in the same function??&quot;</span>);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>* postDT = <a class="code" href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e">getPostDT</a>(srcBB-&gt;getParent());</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">if</span>(postDT-&gt;dominates(dstBB,srcBB))</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#ac578894f959845164e1343384d60def1">CFWorkList</a> worklist;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; worklist.push(srcBB);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">setCFCond</a>(srcBB,<a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>());</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">while</span>(!worklist.empty())</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = worklist.pop();</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* cond = <a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(bb);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* loopExitCond = <a class="code" href="classSVF_1_1PathCondAllocator.html#a623e6ec670e5f6aeedee26b146ad5a0d">evaluateLoopExitBranch</a>(bb,dstBB))</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(cond, loopExitCond);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> succ_it = succ_begin(bb);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; succ_it != succ_end(bb); succ_it++)</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ = *succ_it;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* brCond;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">if</span>(postDT-&gt;dominates(succ,bb))</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; brCond = <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; brCond = <a class="code" href="classSVF_1_1PathCondAllocator.html#a6d2c5b05f4966522c9310fd3c086adea">getEvalBrCond</a>(bb, succ);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; bb (&quot;</span> &lt;&lt; bb-&gt;getName().str() &lt;&lt;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="stringliteral">&quot;) --&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;succ_bb (&quot;</span> &lt;&lt; succ-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;) condition: &quot;</span> &lt;&lt; brCond &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* succPathCond = <a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(cond, brCond);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">setCFCond</a>(succ, <a class="code" href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">condOr</a>(<a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(succ), succPathCond)))</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; worklist.push(succ);</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; }</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; }</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; src_bb (&quot;</span> &lt;&lt; srcBB-&gt;getName().str() &lt;&lt;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="stringliteral">&quot;) --&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dst_bb (&quot;</span> &lt;&lt; dstBB-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;) condition: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(dstBB) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(dstBB);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
731
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00481">481</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
732
+ <div class="fragment"><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;{</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(srcBB-&gt;getParent() == dstBB-&gt;getParent() &amp;&amp; <span class="stringliteral">&quot;two basic blocks are not in the same function??&quot;</span>);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>* postDT = <a class="code" href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e">getPostDT</a>(srcBB-&gt;getParent());</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">if</span>(postDT-&gt;dominates(dstBB,srcBB))</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#ac578894f959845164e1343384d60def1">CFWorkList</a> worklist;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; worklist.push(srcBB);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">setCFCond</a>(srcBB,<a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>());</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">while</span>(!worklist.empty())</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = worklist.pop();</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* cond = <a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(bb);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* loopExitCond = <a class="code" href="classSVF_1_1PathCondAllocator.html#a623e6ec670e5f6aeedee26b146ad5a0d">evaluateLoopExitBranch</a>(bb,dstBB))</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(cond, loopExitCond);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> succ_it = succ_begin(bb);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; succ_it != succ_end(bb); succ_it++)</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ = *succ_it;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* brCond;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordflow">if</span>(postDT-&gt;dominates(succ,bb))</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; brCond = <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; brCond = <a class="code" href="classSVF_1_1PathCondAllocator.html#a6d2c5b05f4966522c9310fd3c086adea">getEvalBrCond</a>(bb, succ);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; bb (&quot;</span> &lt;&lt; bb-&gt;getName().str() &lt;&lt;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="stringliteral">&quot;) --&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;succ_bb (&quot;</span> &lt;&lt; succ-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;) condition: &quot;</span> &lt;&lt; brCond &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* succPathCond = <a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(cond, brCond);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">setCFCond</a>(succ, <a class="code" href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">condOr</a>(<a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(succ), succPathCond)))</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; worklist.push(succ);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; }</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot; src_bb (&quot;</span> &lt;&lt; srcBB-&gt;getName().str() &lt;&lt;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="stringliteral">&quot;) --&gt; &quot;</span> &lt;&lt; <span class="stringliteral">&quot;dst_bb (&quot;</span> &lt;&lt; dstBB-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;) condition: &quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(dstBB) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(dstBB);</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
740
733
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
741
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00095">PathCondAllocator.h:95</a></div></div>
742
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4cb61914dff693e284091e97ab8c8878"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">SVF::PathCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, Condition *cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00251">PathCondAllocator.h:251</a></div></div>
743
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1295e2c2c0a9c1a3744ba3927b95363e"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e">SVF::PathCondAllocator::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *fun)</div><div class="ttdoc">Get Postdominators. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00151">PathCondAllocator.h:151</a></div></div>
744
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a623e6ec670e5f6aeedee26b146ad5a0d"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a623e6ec670e5f6aeedee26b146ad5a0d">SVF::PathCondAllocator::evaluateLoopExitBranch</a></div><div class="ttdeci">Condition * evaluateLoopExitBranch(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Evaluate loop exit branch. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00251">PathCondAllocator.cpp:251</a></div></div>
745
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a6d2c5b05f4966522c9310fd3c086adea"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a6d2c5b05f4966522c9310fd3c086adea">SVF::PathCondAllocator::getEvalBrCond</a></div><div class="ttdeci">Condition * getEvalBrCond(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Get a condition, evaluate the value for conditions if necessary (e.g., testNull like express) ...</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00149">PathCondAllocator.cpp:149</a></div></div>
746
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5a8c25d74ffc2a8f8dbd20faab4d9803"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">SVF::PathCondAllocator::condOr</a></div><div class="ttdeci">Condition * condOr(Condition *lhs, Condition *rhs)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00087">PathCondAllocator.h:87</a></div></div>
734
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00094">PathCondAllocator.h:94</a></div></div>
735
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4cb61914dff693e284091e97ab8c8878"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">SVF::PathCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, Condition *cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00250">PathCondAllocator.h:250</a></div></div>
736
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1295e2c2c0a9c1a3744ba3927b95363e"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e">SVF::PathCondAllocator::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *fun)</div><div class="ttdoc">Get Postdominators. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00150">PathCondAllocator.h:150</a></div></div>
737
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a623e6ec670e5f6aeedee26b146ad5a0d"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a623e6ec670e5f6aeedee26b146ad5a0d">SVF::PathCondAllocator::evaluateLoopExitBranch</a></div><div class="ttdeci">Condition * evaluateLoopExitBranch(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Evaluate loop exit branch. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00254">PathCondAllocator.cpp:254</a></div></div>
738
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a6d2c5b05f4966522c9310fd3c086adea"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a6d2c5b05f4966522c9310fd3c086adea">SVF::PathCondAllocator::getEvalBrCond</a></div><div class="ttdeci">Condition * getEvalBrCond(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Get a condition, evaluate the value for conditions if necessary (e.g., testNull like express) ...</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00152">PathCondAllocator.cpp:152</a></div></div>
739
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5a8c25d74ffc2a8f8dbd20faab4d9803"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">SVF::PathCondAllocator::condOr</a></div><div class="ttdeci">Condition * condOr(Condition *lhs, Condition *rhs)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00086">PathCondAllocator.h:86</a></div></div>
747
740
  <div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00195">BasicTypes.h:195</a></div></div>
748
741
  <div class="ttc" id="SVFBasicTypes_8h_html_a817abc424f7cfcdec5954c7807970f36"><div class="ttname"><a href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a></div><div class="ttdeci">#define DSaber</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00170">SVFBasicTypes.h:170</a></div></div>
749
742
  <div class="ttc" id="namespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00184">BasicTypes.h:184</a></div></div>
750
743
  <div class="ttc" id="namespaceSVF_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#l00049">SVFUtil.h:49</a></div></div>
751
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab0e41d1eacfc6ee2cf42a9ce69cdcb61"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">SVF::PathCondAllocator::condAnd</a></div><div class="ttdeci">Condition * condAnd(Condition *lhs, Condition *rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00083">PathCondAllocator.h:83</a></div></div>
744
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab0e41d1eacfc6ee2cf42a9ce69cdcb61"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">SVF::PathCondAllocator::condAnd</a></div><div class="ttdeci">Condition * condAnd(Condition *lhs, Condition *rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00082">PathCondAllocator.h:82</a></div></div>
752
745
  <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac578894f959845164e1343384d60def1"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac578894f959845164e1343384d60def1">SVF::PathCondAllocator::CFWorkList</a></div><div class="ttdeci">FIFOWorkList&lt; const BasicBlock * &gt; CFWorkList</div><div class="ttdoc">worklist for control-flow guard computation </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00058">PathCondAllocator.h:58</a></div></div>
753
746
  <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aade2bc55c3882a6cacc3c4a891a1c4a3"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">SVF::PathCondAllocator::Condition</a></div><div class="ttdeci">CondExpr Condition</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00051">PathCondAllocator.h:51</a></div></div>
754
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a8c926057571ca14743e106a5a6ce7ae9"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">SVF::PathCondAllocator::getCFCond</a></div><div class="ttdeci">Condition * getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00261">PathCondAllocator.h:261</a></div></div>
747
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a8c926057571ca14743e106a5a6ce7ae9"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">SVF::PathCondAllocator::getCFCond</a></div><div class="ttdeci">Condition * getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00260">PathCondAllocator.h:260</a></div></div>
755
748
  <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00151">SVFBasicTypes.h:151</a></div></div>
756
749
  </div><!-- fragment -->
757
750
  </div>
@@ -792,9 +785,9 @@ Private Attributes</h2></td></tr>
792
785
 
793
786
  <p>Condition operations. </p>
794
787
 
795
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00083">83</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
796
- <div class="fragment"><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a4b88160366a7c7b2bf7e2ab632ed04c7">AND</a>(lhs,rhs);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_a4b88160366a7c7b2bf7e2ab632ed04c7"><div class="ttname"><a href="classSVF_1_1CondManager.html#a4b88160366a7c7b2bf7e2ab632ed04c7">SVF::CondManager::AND</a></div><div class="ttdeci">CondExpr * AND(CondExpr *lhs, CondExpr *rhs)</div><div class="ttdoc">Operations on conditions. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8cpp_source.html#l00134">Conditions.cpp:134</a></div></div>
797
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
788
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00082">82</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
789
+ <div class="fragment"><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#aedda2ed496d0009d92d44a82af2ce8ae">AND</a>(lhs,rhs);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_aedda2ed496d0009d92d44a82af2ce8ae"><div class="ttname"><a href="classSVF_1_1CondManager.html#aedda2ed496d0009d92d44a82af2ce8ae">SVF::CondManager::AND</a></div><div class="ttdeci">virtual CondExpr * AND(CondExpr *lhs, CondExpr *rhs)=0</div><div class="ttdoc">Operations on conditions. </div></div>
790
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00282">PathCondAllocator.h:282</a></div></div>
798
791
  </div><!-- fragment -->
799
792
  </div>
800
793
  </div>
@@ -822,9 +815,9 @@ Private Attributes</h2></td></tr>
822
815
  </table>
823
816
  </div><div class="memdoc">
824
817
 
825
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00091">91</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
826
- <div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a5751792e45c8abd5ffd3610d94e9f0b7">NEG</a>(cond);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_a5751792e45c8abd5ffd3610d94e9f0b7"><div class="ttname"><a href="classSVF_1_1CondManager.html#a5751792e45c8abd5ffd3610d94e9f0b7">SVF::CondManager::NEG</a></div><div class="ttdeci">CondExpr * NEG(CondExpr *lhs)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8cpp_source.html#l00163">Conditions.cpp:163</a></div></div>
827
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
818
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00090">90</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
819
+ <div class="fragment"><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#aecb97f6eb6ba2943b2eaa7a8212a9ba6">NEG</a>(cond);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_aecb97f6eb6ba2943b2eaa7a8212a9ba6"><div class="ttname"><a href="classSVF_1_1CondManager.html#aecb97f6eb6ba2943b2eaa7a8212a9ba6">SVF::CondManager::NEG</a></div><div class="ttdeci">virtual CondExpr * NEG(CondExpr *lhs)=0</div></div>
820
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00282">PathCondAllocator.h:282</a></div></div>
828
821
  </div><!-- fragment -->
829
822
  </div>
830
823
  </div>
@@ -862,9 +855,9 @@ Private Attributes</h2></td></tr>
862
855
  </table>
863
856
  </div><div class="memdoc">
864
857
 
865
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00087">87</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
866
- <div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a83824b36d6cd073a171df9919aa0c704">OR</a>(lhs,rhs);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
867
- <div class="ttc" id="classSVF_1_1CondManager_html_a83824b36d6cd073a171df9919aa0c704"><div class="ttname"><a href="classSVF_1_1CondManager.html#a83824b36d6cd073a171df9919aa0c704">SVF::CondManager::OR</a></div><div class="ttdeci">CondExpr * OR(CondExpr *lhs, CondExpr *rhs)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8cpp_source.html#l00149">Conditions.cpp:149</a></div></div>
858
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00086">86</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
859
+ <div class="fragment"><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#aa6dcd9cb78deef05b6c4d4e9b6b0a16b">OR</a>(lhs,rhs);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_aa6dcd9cb78deef05b6c4d4e9b6b0a16b"><div class="ttname"><a href="classSVF_1_1CondManager.html#aa6dcd9cb78deef05b6c4d4e9b6b0a16b">SVF::CondManager::OR</a></div><div class="ttdeci">virtual CondExpr * OR(CondExpr *lhs, CondExpr *rhs)=0</div></div>
860
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00282">PathCondAllocator.h:282</a></div></div>
868
861
  </div><!-- fragment -->
869
862
  </div>
870
863
  </div>
@@ -893,8 +886,8 @@ Private Attributes</h2></td></tr>
893
886
 
894
887
  <p>Release memory. </p>
895
888
 
896
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00273">273</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
897
- <div class="fragment"><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</div></div><!-- fragment -->
889
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00272">272</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
890
+ <div class="fragment"><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; }</div></div><!-- fragment -->
898
891
  </div>
899
892
  </div>
900
893
  <a id="aae773a674331bb80cc589835e0b16e4e"></a>
@@ -921,9 +914,9 @@ Private Attributes</h2></td></tr>
921
914
  </table>
922
915
  </div><div class="memdoc">
923
916
 
924
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00111">111</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
925
- <div class="fragment"><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a907afafc19d8faa7a200bf4f1e07bb4f">dumpStr</a>(cond);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
926
- <div class="ttc" id="classSVF_1_1CondManager_html_a907afafc19d8faa7a200bf4f1e07bb4f"><div class="ttname"><a href="classSVF_1_1CondManager.html#a907afafc19d8faa7a200bf4f1e07bb4f">SVF::CondManager::dumpStr</a></div><div class="ttdeci">std::string dumpStr(const CondExpr *e) const</div><div class="ttdoc">Return string format of this expression. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8cpp_source.html#l00250">Conditions.cpp:250</a></div></div>
917
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00110">110</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
918
+ <div class="fragment"><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a19c63783d5d20f363be3641941263a78">dumpStr</a>(cond);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_a19c63783d5d20f363be3641941263a78"><div class="ttname"><a href="classSVF_1_1CondManager.html#a19c63783d5d20f363be3641941263a78">SVF::CondManager::dumpStr</a></div><div class="ttdeci">virtual std::string dumpStr(const CondExpr *e) const =0</div><div class="ttdoc">Return string format of this expression. </div></div>
919
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00282">PathCondAllocator.h:282</a></div></div>
927
920
  </div><!-- fragment -->
928
921
  </div>
929
922
  </div>
@@ -965,15 +958,15 @@ Private Attributes</h2></td></tr>
965
958
  <p>Evaluate the branch condtion</p>
966
959
  <p>(1) Evaluate a branch when it reaches a program exit (2) Evaluate a branch when it is loop exit branch (3) Evaluate a branch when it is a test null like condition </p>
967
960
 
968
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00291">291</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
969
- <div class="fragment"><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;{</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">getBBSuccessorNum</a>(bb) == 1)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(bb-&gt;getTerminator()-&gt;getSuccessor(0) == succ &amp;&amp; <span class="stringliteral">&quot;not the unique successor?&quot;</span>);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a>* brInst = SVFUtil::dyn_cast&lt;BranchInst&gt;(bb-&gt;getTerminator()))</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(brInst-&gt;getNumSuccessors() == 2 &amp;&amp; <span class="stringliteral">&quot;not a two successors branch??&quot;</span>);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ1 = brInst-&gt;getSuccessor(0);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ2 = brInst-&gt;getSuccessor(1);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((succ1 == succ || succ2 == succ) &amp;&amp; <span class="stringliteral">&quot;not a successor??&quot;</span>);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* evalLoopExit = <a class="code" href="classSVF_1_1PathCondAllocator.html#a623e6ec670e5f6aeedee26b146ad5a0d">evaluateLoopExitBranch</a>(bb,succ);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span>(evalLoopExit)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">return</span> evalLoopExit;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* evalProgExit = <a class="code" href="classSVF_1_1PathCondAllocator.html#a9dbca0e012336e20064693f508bc54b8">evaluateProgExit</a>(brInst,succ);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">if</span>(evalProgExit)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">return</span> evalProgExit;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* evalTestNullLike = <a class="code" href="classSVF_1_1PathCondAllocator.html#ab31b523d760d634811ca4d1de7fc4eb2">evaluateTestNullLikeExpr</a>(brInst,succ);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">if</span>(evalTestNullLike)</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span> evalTestNullLike;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4d00c3306b92e59568b54a6a72afdb74">getBranchCond</a>(bb, succ);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;}</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4d00c3306b92e59568b54a6a72afdb74"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4d00c3306b92e59568b54a6a72afdb74">SVF::PathCondAllocator::getBranchCond</a></div><div class="ttdeci">Condition * getBranchCond(const BasicBlock *bb, const BasicBlock *succ) const</div><div class="ttdoc">Get branch condition. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00134">PathCondAllocator.cpp:134</a></div></div>
961
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00294">294</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
962
+ <div class="fragment"><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;{</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">getBBSuccessorNum</a>(bb) == 1)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(bb-&gt;getTerminator()-&gt;getSuccessor(0) == succ &amp;&amp; <span class="stringliteral">&quot;not the unique successor?&quot;</span>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">BranchInst</a>* brInst = SVFUtil::dyn_cast&lt;BranchInst&gt;(bb-&gt;getTerminator()))</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(brInst-&gt;getNumSuccessors() == 2 &amp;&amp; <span class="stringliteral">&quot;not a two successors branch??&quot;</span>);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ1 = brInst-&gt;getSuccessor(0);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ2 = brInst-&gt;getSuccessor(1);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((succ1 == succ || succ2 == succ) &amp;&amp; <span class="stringliteral">&quot;not a successor??&quot;</span>);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* evalLoopExit = <a class="code" href="classSVF_1_1PathCondAllocator.html#a623e6ec670e5f6aeedee26b146ad5a0d">evaluateLoopExitBranch</a>(bb,succ);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">if</span>(evalLoopExit)</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">return</span> evalLoopExit;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* evalProgExit = <a class="code" href="classSVF_1_1PathCondAllocator.html#a9dbca0e012336e20064693f508bc54b8">evaluateProgExit</a>(brInst,succ);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">if</span>(evalProgExit)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> evalProgExit;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* evalTestNullLike = <a class="code" href="classSVF_1_1PathCondAllocator.html#ab31b523d760d634811ca4d1de7fc4eb2">evaluateTestNullLikeExpr</a>(brInst,succ);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">if</span>(evalTestNullLike)</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">return</span> evalTestNullLike;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4d00c3306b92e59568b54a6a72afdb74">getBranchCond</a>(bb, succ);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;}</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4d00c3306b92e59568b54a6a72afdb74"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4d00c3306b92e59568b54a6a72afdb74">SVF::PathCondAllocator::getBranchCond</a></div><div class="ttdeci">Condition * getBranchCond(const BasicBlock *bb, const BasicBlock *succ) const</div><div class="ttdoc">Get branch condition. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00137">PathCondAllocator.cpp:137</a></div></div>
970
963
  <div class="ttc" id="namespaceSVF_html_ac9a05dd7ab16e998625037aa242cd30f"><div class="ttname"><a href="namespaceSVF.html#ac9a05dd7ab16e998625037aa242cd30f">SVF::BranchInst</a></div><div class="ttdeci">llvm::BranchInst BranchInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00149">BasicTypes.h:149</a></div></div>
971
964
  <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
972
965
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
973
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00095">PathCondAllocator.h:95</a></div></div>
974
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a623e6ec670e5f6aeedee26b146ad5a0d"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a623e6ec670e5f6aeedee26b146ad5a0d">SVF::PathCondAllocator::evaluateLoopExitBranch</a></div><div class="ttdeci">Condition * evaluateLoopExitBranch(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Evaluate loop exit branch. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00251">PathCondAllocator.cpp:251</a></div></div>
975
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a9dbca0e012336e20064693f508bc54b8"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a9dbca0e012336e20064693f508bc54b8">SVF::PathCondAllocator::evaluateProgExit</a></div><div class="ttdeci">Condition * evaluateProgExit(const BranchInst *brInst, const BasicBlock *succ)</div><div class="ttdoc">Return condition when there is a branch calls program exit. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00207">PathCondAllocator.cpp:207</a></div></div>
976
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab31b523d760d634811ca4d1de7fc4eb2"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab31b523d760d634811ca4d1de7fc4eb2">SVF::PathCondAllocator::evaluateTestNullLikeExpr</a></div><div class="ttdeci">Condition * evaluateTestNullLikeExpr(const BranchInst *brInst, const BasicBlock *succ)</div><div class="ttdoc">Return branch condition after evaluating test null like expression. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00177">PathCondAllocator.cpp:177</a></div></div>
966
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00094">PathCondAllocator.h:94</a></div></div>
967
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a623e6ec670e5f6aeedee26b146ad5a0d"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a623e6ec670e5f6aeedee26b146ad5a0d">SVF::PathCondAllocator::evaluateLoopExitBranch</a></div><div class="ttdeci">Condition * evaluateLoopExitBranch(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Evaluate loop exit branch. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00254">PathCondAllocator.cpp:254</a></div></div>
968
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a9dbca0e012336e20064693f508bc54b8"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a9dbca0e012336e20064693f508bc54b8">SVF::PathCondAllocator::evaluateProgExit</a></div><div class="ttdeci">Condition * evaluateProgExit(const BranchInst *brInst, const BasicBlock *succ)</div><div class="ttdoc">Return condition when there is a branch calls program exit. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00210">PathCondAllocator.cpp:210</a></div></div>
969
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab31b523d760d634811ca4d1de7fc4eb2"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab31b523d760d634811ca4d1de7fc4eb2">SVF::PathCondAllocator::evaluateTestNullLikeExpr</a></div><div class="ttdeci">Condition * evaluateTestNullLikeExpr(const BranchInst *brInst, const BasicBlock *succ)</div><div class="ttdoc">Return branch condition after evaluating test null like expression. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00180">PathCondAllocator.cpp:180</a></div></div>
977
970
  <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aade2bc55c3882a6cacc3c4a891a1c4a3"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">SVF::PathCondAllocator::Condition</a></div><div class="ttdeci">CondExpr Condition</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00051">PathCondAllocator.h:51</a></div></div>
978
971
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a737684498679dc16a26f2411d88f36aa"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">SVF::SVFUtil::getBBSuccessorNum</a></div><div class="ttdeci">u32_t getBBSuccessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB&amp;#39;s successors. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00349">LLVMUtil.cpp:349</a></div></div>
979
972
  </div><!-- fragment -->
@@ -1018,19 +1011,19 @@ Private Attributes</h2></td></tr>
1018
1011
  <p>exclude exit bb which calls program exit</p>
1019
1012
  <p>if the dst dominate all other loop exit bbs, then dst can certainly be reached </p>
1020
1013
 
1021
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00251">251</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1022
- <div class="fragment"><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;{</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = bb-&gt;getParent();</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(fun==dst-&gt;getParent() &amp;&amp; <span class="stringliteral">&quot;two basic blocks should be in the same function&quot;</span>);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a>* loopInfo = <a class="code" href="classSVF_1_1PathCondAllocator.html#a10ddc3b02b2baad2edd72fe429113b0f">getLoopInfo</a>(fun);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">if</span>(loopInfo-&gt;isLoopHeader(const_cast&lt;BasicBlock*&gt;(bb)))</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a> *loop = loopInfo-&gt;getLoopFor(bb);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="namespaceSVF.html#ad09d8882474ef59b50d1c6a6d3ba0b59">SmallBBVector</a> exitbbs;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;BasicBlock*&gt;</a> filteredbbs;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; loop-&gt;getExitBlocks(exitbbs);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">while</span>(!exitbbs.empty())</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* eb = exitbbs.pop_back_val();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1PathCondAllocator.html#a39c0cc9dec89b0b52bf9f1026da942e1">isBBCallsProgExit</a>(eb))</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; filteredbbs.insert(eb);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordtype">bool</span> allPDT = <span class="keyword">true</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>* pdt = <a class="code" href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e">getPostDT</a>(fun);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span>&amp; filteredbb : filteredbbs)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">if</span>(!pdt-&gt;dominates(dst,filteredbb))</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; allPDT =<span class="keyword">false</span>;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span>(allPDT)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
1014
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00254">254</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1015
+ <div class="fragment"><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;{</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = bb-&gt;getParent();</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(fun==dst-&gt;getParent() &amp;&amp; <span class="stringliteral">&quot;two basic blocks should be in the same function&quot;</span>);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">LoopInfo</a>* loopInfo = <a class="code" href="classSVF_1_1PathCondAllocator.html#a10ddc3b02b2baad2edd72fe429113b0f">getLoopInfo</a>(fun);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">if</span>(loopInfo-&gt;isLoopHeader(const_cast&lt;BasicBlock*&gt;(bb)))</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a> *loop = loopInfo-&gt;getLoopFor(bb);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="namespaceSVF.html#ad09d8882474ef59b50d1c6a6d3ba0b59">SmallBBVector</a> exitbbs;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;BasicBlock*&gt;</a> filteredbbs;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; loop-&gt;getExitBlocks(exitbbs);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">while</span>(!exitbbs.empty())</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* eb = exitbbs.pop_back_val();</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1PathCondAllocator.html#a39c0cc9dec89b0b52bf9f1026da942e1">isBBCallsProgExit</a>(eb))</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; filteredbbs.insert(eb);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordtype">bool</span> allPDT = <span class="keyword">true</span>;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>* pdt = <a class="code" href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e">getPostDT</a>(fun);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span>&amp; filteredbb : filteredbbs)</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span>(!pdt-&gt;dominates(dst,filteredbb))</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; allPDT =<span class="keyword">false</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span>(allPDT)</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
1023
1016
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
1024
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00095">PathCondAllocator.h:95</a></div></div>
1025
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1295e2c2c0a9c1a3744ba3927b95363e"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e">SVF::PathCondAllocator::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *fun)</div><div class="ttdoc">Get Postdominators. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00151">PathCondAllocator.h:151</a></div></div>
1017
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00094">PathCondAllocator.h:94</a></div></div>
1018
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1295e2c2c0a9c1a3744ba3927b95363e"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e">SVF::PathCondAllocator::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *fun)</div><div class="ttdoc">Get Postdominators. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00150">PathCondAllocator.h:150</a></div></div>
1026
1019
  <div class="ttc" id="namespaceSVF_html_a77e088bfe47c0b0ddcbbe0693dec6fe5"><div class="ttname"><a href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">SVF::LoopInfo</a></div><div class="ttdeci">llvm::LoopInfo LoopInfo</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00086">BasicTypes.h:86</a></div></div>
1027
1020
  <div class="ttc" id="namespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00184">BasicTypes.h:184</a></div></div>
1028
1021
  <div class="ttc" id="namespaceSVF_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="SVFBasicTypes_8h_source.html#l00097">SVFBasicTypes.h:97</a></div></div>
1029
1022
  <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
1030
1023
  <div class="ttc" id="namespaceSVF_html_abf85e29310b2e4df8925d00a5c081314"><div class="ttname"><a href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">SVF::Loop</a></div><div class="ttdeci">llvm::Loop Loop</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00085">BasicTypes.h:85</a></div></div>
1031
1024
  <div class="ttc" id="namespaceSVF_html_ad09d8882474ef59b50d1c6a6d3ba0b59"><div class="ttname"><a href="namespaceSVF.html#ad09d8882474ef59b50d1c6a6d3ba0b59">SVF::SmallBBVector</a></div><div class="ttdeci">llvm::SmallVector&lt; BasicBlock *, 8 &gt; SmallBBVector</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00110">BasicTypes.h:110</a></div></div>
1032
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a10ddc3b02b2baad2edd72fe429113b0f"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a10ddc3b02b2baad2edd72fe429113b0f">SVF::PathCondAllocator::getLoopInfo</a></div><div class="ttdeci">LoopInfo * getLoopInfo(const Function *f)</div><div class="ttdoc">Get LoopInfo. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00156">PathCondAllocator.h:156</a></div></div>
1033
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a39c0cc9dec89b0b52bf9f1026da942e1"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a39c0cc9dec89b0b52bf9f1026da942e1">SVF::PathCondAllocator::isBBCallsProgExit</a></div><div class="ttdeci">bool isBBCallsProgExit(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00408">PathCondAllocator.cpp:408</a></div></div>
1025
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a10ddc3b02b2baad2edd72fe429113b0f"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a10ddc3b02b2baad2edd72fe429113b0f">SVF::PathCondAllocator::getLoopInfo</a></div><div class="ttdeci">LoopInfo * getLoopInfo(const Function *f)</div><div class="ttdoc">Get LoopInfo. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00155">PathCondAllocator.h:155</a></div></div>
1026
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a39c0cc9dec89b0b52bf9f1026da942e1"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a39c0cc9dec89b0b52bf9f1026da942e1">SVF::PathCondAllocator::isBBCallsProgExit</a></div><div class="ttdeci">bool isBBCallsProgExit(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00411">PathCondAllocator.cpp:411</a></div></div>
1034
1027
  </div><!-- fragment -->
1035
1028
  </div>
1036
1029
  </div>
@@ -1074,11 +1067,11 @@ Private Attributes</h2></td></tr>
1074
1067
  <p>else branch calls program exit</p>
1075
1068
  <p>no branch call program exit </p>
1076
1069
 
1077
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00207">207</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1078
- <div class="fragment"><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;{</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ1 = brInst-&gt;getSuccessor(0);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ2 = brInst-&gt;getSuccessor(1);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordtype">bool</span> branch1 = <a class="code" href="classSVF_1_1PathCondAllocator.html#a39c0cc9dec89b0b52bf9f1026da942e1">isBBCallsProgExit</a>(succ1);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordtype">bool</span> branch2 = <a class="code" href="classSVF_1_1PathCondAllocator.html#a39c0cc9dec89b0b52bf9f1026da942e1">isBBCallsProgExit</a>(succ2);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">if</span>(branch1 &amp;&amp; !branch2)</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">if</span>(succ1 == succ)</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!branch1 &amp;&amp; branch2)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">if</span>(succ2 == succ)</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="comment">// two branches both call program exit</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(branch1 &amp;&amp; branch2)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
1079
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00095">PathCondAllocator.h:95</a></div></div>
1080
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0d059c9adce2c998ddf2489376beb8e2"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">SVF::PathCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition * getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00099">PathCondAllocator.h:99</a></div></div>
1081
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a39c0cc9dec89b0b52bf9f1026da942e1"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a39c0cc9dec89b0b52bf9f1026da942e1">SVF::PathCondAllocator::isBBCallsProgExit</a></div><div class="ttdeci">bool isBBCallsProgExit(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00408">PathCondAllocator.cpp:408</a></div></div>
1070
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00210">210</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1071
+ <div class="fragment"><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;{</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ1 = brInst-&gt;getSuccessor(0);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ2 = brInst-&gt;getSuccessor(1);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordtype">bool</span> branch1 = <a class="code" href="classSVF_1_1PathCondAllocator.html#a39c0cc9dec89b0b52bf9f1026da942e1">isBBCallsProgExit</a>(succ1);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordtype">bool</span> branch2 = <a class="code" href="classSVF_1_1PathCondAllocator.html#a39c0cc9dec89b0b52bf9f1026da942e1">isBBCallsProgExit</a>(succ2);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">if</span>(branch1 &amp;&amp; !branch2)</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span>(succ1 == succ)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!branch1 &amp;&amp; branch2)</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">if</span>(succ2 == succ)</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="comment">// two branches both call program exit</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(branch1 &amp;&amp; branch2)</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
1072
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00094">PathCondAllocator.h:94</a></div></div>
1073
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0d059c9adce2c998ddf2489376beb8e2"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">SVF::PathCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition * getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00098">PathCondAllocator.h:98</a></div></div>
1074
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a39c0cc9dec89b0b52bf9f1026da942e1"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a39c0cc9dec89b0b52bf9f1026da942e1">SVF::PathCondAllocator::isBBCallsProgExit</a></div><div class="ttdeci">bool isBBCallsProgExit(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00411">PathCondAllocator.cpp:411</a></div></div>
1082
1075
  </div><!-- fragment -->
1083
1076
  </div>
1084
1077
  </div>
@@ -1119,12 +1112,12 @@ Private Attributes</h2></td></tr>
1119
1112
  <p>Return branch condition after evaluating test null like expression. </p>
1120
1113
  <p>Evaluate null like expression for source-sink related bug detection in SABER </p>
1121
1114
 
1122
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00177">177</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1123
- <div class="fragment"><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;{</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ1 = brInst-&gt;getSuccessor(0);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PathCondAllocator.html#af7959f60bca343fb5755cfa0c5d56cb1">isTestNullExpr</a>(brInst-&gt;getCondition()))</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">if</span>(succ1 == succ)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PathCondAllocator.html#a03ee22dd8af2d9ca658e2437eeae0a10">isTestNotNullExpr</a>(brInst-&gt;getCondition()))</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span>(succ1 == succ)</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
1124
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00095">PathCondAllocator.h:95</a></div></div>
1125
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0d059c9adce2c998ddf2489376beb8e2"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">SVF::PathCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition * getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00099">PathCondAllocator.h:99</a></div></div>
1126
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_af7959f60bca343fb5755cfa0c5d56cb1"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#af7959f60bca343fb5755cfa0c5d56cb1">SVF::PathCondAllocator::isTestNullExpr</a></div><div class="ttdeci">bool isTestNullExpr(const Value *test) const</div><div class="ttdoc">Return true if this is a test null expression. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00332">PathCondAllocator.cpp:332</a></div></div>
1127
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a03ee22dd8af2d9ca658e2437eeae0a10"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a03ee22dd8af2d9ca658e2437eeae0a10">SVF::PathCondAllocator::isTestNotNullExpr</a></div><div class="ttdeci">bool isTestNotNullExpr(const Value *test) const</div><div class="ttdoc">Return true if this is a test not null expression. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00341">PathCondAllocator.cpp:341</a></div></div>
1115
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00180">180</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1116
+ <div class="fragment"><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;{</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ1 = brInst-&gt;getSuccessor(0);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PathCondAllocator.html#af7959f60bca343fb5755cfa0c5d56cb1">isTestNullExpr</a>(brInst-&gt;getCondition()))</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">if</span>(succ1 == succ)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PathCondAllocator.html#a03ee22dd8af2d9ca658e2437eeae0a10">isTestNotNullExpr</a>(brInst-&gt;getCondition()))</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">if</span>(succ1 == succ)</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
1117
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00094">PathCondAllocator.h:94</a></div></div>
1118
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0d059c9adce2c998ddf2489376beb8e2"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">SVF::PathCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition * getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00098">PathCondAllocator.h:98</a></div></div>
1119
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_af7959f60bca343fb5755cfa0c5d56cb1"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#af7959f60bca343fb5755cfa0c5d56cb1">SVF::PathCondAllocator::isTestNullExpr</a></div><div class="ttdeci">bool isTestNullExpr(const Value *test) const</div><div class="ttdoc">Return true if this is a test null expression. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00335">PathCondAllocator.cpp:335</a></div></div>
1120
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a03ee22dd8af2d9ca658e2437eeae0a10"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a03ee22dd8af2d9ca658e2437eeae0a10">SVF::PathCondAllocator::isTestNotNullExpr</a></div><div class="ttdeci">bool isTestNotNullExpr(const Value *test) const</div><div class="ttdoc">Return true if this is a test not null expression. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00344">PathCondAllocator.cpp:344</a></div></div>
1128
1121
  </div><!-- fragment -->
1129
1122
  </div>
1130
1123
  </div>
@@ -1154,9 +1147,9 @@ Private Attributes</h2></td></tr>
1154
1147
 
1155
1148
  <p>Iterator every element of the condition. </p>
1156
1149
 
1157
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00104">104</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1158
- <div class="fragment"><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> elems;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#acd773bd9dbf5161e488c827b0b71481d">extractSubConds</a>(cond,elems);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> elems;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_acd773bd9dbf5161e488c827b0b71481d"><div class="ttname"><a href="classSVF_1_1CondManager.html#acd773bd9dbf5161e488c827b0b71481d">SVF::CondManager::extractSubConds</a></div><div class="ttdeci">void extractSubConds(const CondExpr *cond, NodeBS &amp;support) const</div><div class="ttdoc">Extract sub conditions of this expression. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8cpp_source.html#l00204">Conditions.cpp:204</a></div></div>
1159
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
1150
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00103">103</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1151
+ <div class="fragment"><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> elems;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a66ed79e36f8c09ee3ae58fb9b4a6f3e3">extractSubConds</a>(cond,elems);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span> elems;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_a66ed79e36f8c09ee3ae58fb9b4a6f3e3"><div class="ttname"><a href="classSVF_1_1CondManager.html#a66ed79e36f8c09ee3ae58fb9b4a6f3e3">SVF::CondManager::extractSubConds</a></div><div class="ttdeci">virtual void extractSubConds(const CondExpr *cond, NodeBS &amp;support) const =0</div><div class="ttdoc">Extract sub conditions of this expression. </div></div>
1152
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00282">PathCondAllocator.h:282</a></div></div>
1160
1153
  <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00088">SVFBasicTypes.h:88</a></div></div>
1161
1154
  </div><!-- fragment -->
1162
1155
  </div>
@@ -1198,12 +1191,12 @@ Private Attributes</h2></td></tr>
1198
1191
  <p>Get branch condition. </p>
1199
1192
  <p>Get a branch condition </p>
1200
1193
 
1201
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00134">134</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1202
- <div class="fragment"><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;{</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a1631bbbed23fbfe2204779ecc0dc2769">getBBSuccessorPos</a>(bb,succ);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">getBBSuccessorNum</a>(bb) == 1)</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; BBCondMap::const_iterator it = <a class="code" href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">bbConds</a>.find(bb);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=<a class="code" href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">bbConds</a>.end() &amp;&amp; <span class="stringliteral">&quot;basic block does not have branch and conditions??&quot;</span>);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; CondPosMap::const_iterator cit = it-&gt;second.find(pos);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(cit!=it-&gt;second.end() &amp;&amp; <span class="stringliteral">&quot;no condition on the branch??&quot;</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> cit-&gt;second;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;}</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
1203
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00095">PathCondAllocator.h:95</a></div></div>
1194
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00137">137</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1195
+ <div class="fragment"><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;{</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a1631bbbed23fbfe2204779ecc0dc2769">getBBSuccessorPos</a>(bb,succ);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">getBBSuccessorNum</a>(bb) == 1)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; BBCondMap::const_iterator it = <a class="code" href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">bbConds</a>.find(bb);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=<a class="code" href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">bbConds</a>.end() &amp;&amp; <span class="stringliteral">&quot;basic block does not have branch and conditions??&quot;</span>);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; CondPosMap::const_iterator cit = it-&gt;second.find(pos);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(cit!=it-&gt;second.end() &amp;&amp; <span class="stringliteral">&quot;no condition on the branch??&quot;</span>);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">return</span> cit-&gt;second;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;}</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
1196
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00094">PathCondAllocator.h:94</a></div></div>
1204
1197
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a1631bbbed23fbfe2204779ecc0dc2769"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a1631bbbed23fbfe2204779ecc0dc2769">SVF::SVFUtil::getBBSuccessorPos</a></div><div class="ttdeci">u32_t getBBSuccessorPos(const BasicBlock *BB, const BasicBlock *Succ)</div><div class="ttdoc">Get basic block successor position. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00317">LLVMUtil.cpp:317</a></div></div>
1205
1198
  <div class="ttc" id="namespaceSVF_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="SVFBasicTypes_8h_source.html#l00077">SVFBasicTypes.h:77</a></div></div>
1206
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aff611b2797d61155c8c2f9d8ac4030bc"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">SVF::PathCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">map basic block to its successors/predecessors branch conditions </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00284">PathCondAllocator.h:284</a></div></div>
1199
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aff611b2797d61155c8c2f9d8ac4030bc"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">SVF::PathCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">map basic block to its successors/predecessors branch conditions </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
1207
1200
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a737684498679dc16a26f2411d88f36aa"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">SVF::SVFUtil::getBBSuccessorNum</a></div><div class="ttdeci">u32_t getBBSuccessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB&amp;#39;s successors. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00349">LLVMUtil.cpp:349</a></div></div>
1208
1201
  </div><!-- fragment -->
1209
1202
  </div>
@@ -1232,9 +1225,9 @@ Private Attributes</h2></td></tr>
1232
1225
  </table>
1233
1226
  </div><div class="memdoc">
1234
1227
 
1235
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00261">261</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1236
- <div class="fragment"><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; BBToCondMap::const_iterator it = <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.find(bb);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span>(it==<a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.end())</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0d059c9adce2c998ddf2489376beb8e2"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">SVF::PathCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition * getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00099">PathCondAllocator.h:99</a></div></div>
1237
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac3a0aa27f317d7d9214181b599f19f24"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">SVF::PathCondAllocator::bbToCondMap</a></div><div class="ttdeci">BBToCondMap bbToCondMap</div><div class="ttdoc">map a basic block to its path condition starting from root </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00279">PathCondAllocator.h:279</a></div></div>
1228
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00260">260</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1229
+ <div class="fragment"><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; BBToCondMap::const_iterator it = <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.find(bb);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">if</span>(it==<a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.end())</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0d059c9adce2c998ddf2489376beb8e2"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">SVF::PathCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition * getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00098">PathCondAllocator.h:98</a></div></div>
1230
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac3a0aa27f317d7d9214181b599f19f24"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">SVF::PathCondAllocator::bbToCondMap</a></div><div class="ttdeci">BBToCondMap bbToCondMap</div><div class="ttdoc">map a basic block to its path condition starting from root </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00278">PathCondAllocator.h:278</a></div></div>
1238
1231
  </div><!-- fragment -->
1239
1232
  </div>
1240
1233
  </div>
@@ -1264,9 +1257,9 @@ Private Attributes</h2></td></tr>
1264
1257
 
1265
1258
  <p>Given an z3 expr id, get its condition. </p>
1266
1259
 
1267
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00116">116</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1268
- <div class="fragment"><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#ac246b92ebdf6a9635ed79892b81b9ae8">getCond</a>(i);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_ac246b92ebdf6a9635ed79892b81b9ae8"><div class="ttname"><a href="classSVF_1_1CondManager.html#ac246b92ebdf6a9635ed79892b81b9ae8">SVF::CondManager::getCond</a></div><div class="ttdeci">CondExpr * getCond(u32_t id) const</div><div class="ttdoc">Get condition using condition id (z3 ast id) </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00272">Conditions.h:272</a></div></div>
1269
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
1260
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00115">115</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1261
+ <div class="fragment"><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#ad0273f830c9a6791aea55bfbdebf1138">getCond</a>(i);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00282">PathCondAllocator.h:282</a></div></div>
1262
+ <div class="ttc" id="classSVF_1_1CondManager_html_ad0273f830c9a6791aea55bfbdebf1138"><div class="ttname"><a href="classSVF_1_1CondManager.html#ad0273f830c9a6791aea55bfbdebf1138">SVF::CondManager::getCond</a></div><div class="ttdeci">virtual CondExpr * getCond(u32_t id) const =0</div><div class="ttdoc">Get condition using condition id (z3 ast id) </div></div>
1270
1263
  </div><!-- fragment -->
1271
1264
  </div>
1272
1265
  </div>
@@ -1296,9 +1289,9 @@ Private Attributes</h2></td></tr>
1296
1289
 
1297
1290
  <p>Get/Set llvm conditional expression. </p>
1298
1291
 
1299
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00132">132</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1300
- <div class="fragment"><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a4fac6a918f1f6d09fe1a4ceac7c19428">getCondInst</a>(cond);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_a4fac6a918f1f6d09fe1a4ceac7c19428"><div class="ttname"><a href="classSVF_1_1CondManager.html#a4fac6a918f1f6d09fe1a4ceac7c19428">SVF::CondManager::getCondInst</a></div><div class="ttdeci">const Instruction * getCondInst(const CondExpr *cond) const</div><div class="ttdoc">Get/Set llvm conditional expression. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00280">Conditions.h:280</a></div></div>
1301
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
1292
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00131">131</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1293
+ <div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a4fac6a918f1f6d09fe1a4ceac7c19428">getCondInst</a>(cond);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_a4fac6a918f1f6d09fe1a4ceac7c19428"><div class="ttname"><a href="classSVF_1_1CondManager.html#a4fac6a918f1f6d09fe1a4ceac7c19428">SVF::CondManager::getCondInst</a></div><div class="ttdeci">const Instruction * getCondInst(const CondExpr *cond) const</div><div class="ttdoc">Get/Set llvm conditional expression. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00206">Conditions.h:206</a></div></div>
1294
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00282">PathCondAllocator.h:282</a></div></div>
1302
1295
  </div><!-- fragment -->
1303
1296
  </div>
1304
1297
  </div>
@@ -1325,9 +1318,9 @@ Private Attributes</h2></td></tr>
1325
1318
  </table>
1326
1319
  </div><div class="memdoc">
1327
1320
 
1328
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00075">75</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1329
- <div class="fragment"><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#af167e75fab5f61b18bff296075c107d1">getCondNumber</a>();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_af167e75fab5f61b18bff296075c107d1"><div class="ttname"><a href="classSVF_1_1CondManager.html#af167e75fab5f61b18bff296075c107d1">SVF::CondManager::getCondNumber</a></div><div class="ttdeci">u32_t getCondNumber()</div><div class="ttdoc">Return the number of condition expressions. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8cpp_source.html#l00128">Conditions.cpp:128</a></div></div>
1330
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
1321
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00074">74</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1322
+ <div class="fragment"><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a03d9a0d209505631f6d9e500d9c6bde3">getCondNumber</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_a03d9a0d209505631f6d9e500d9c6bde3"><div class="ttname"><a href="classSVF_1_1CondManager.html#a03d9a0d209505631f6d9e500d9c6bde3">SVF::CondManager::getCondNumber</a></div><div class="ttdeci">virtual u32_t getCondNumber()=0</div><div class="ttdoc">Return the number of condition expressions. </div></div>
1323
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00282">PathCondAllocator.h:282</a></div></div>
1331
1324
  </div><!-- fragment -->
1332
1325
  </div>
1333
1326
  </div>
@@ -1356,8 +1349,8 @@ Private Attributes</h2></td></tr>
1356
1349
 
1357
1350
  <p>Get current value for branch condition evaluation. </p>
1358
1351
 
1359
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00182">182</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1360
- <div class="fragment"><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">curEvalSVFGNode</a>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a165e0a354b7679ce582c15f4a3faf6e0"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">SVF::PathCondAllocator::curEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * curEvalSVFGNode</div><div class="ttdoc">current llvm value to evaluate branch condition when computing guards </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00280">PathCondAllocator.h:280</a></div></div>
1352
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00181">181</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1353
+ <div class="fragment"><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">curEvalSVFGNode</a>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a165e0a354b7679ce582c15f4a3faf6e0"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">SVF::PathCondAllocator::curEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * curEvalSVFGNode</div><div class="ttdoc">current llvm value to evaluate branch condition when computing guards </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00279">PathCondAllocator.h:279</a></div></div>
1361
1354
  </div><!-- fragment -->
1362
1355
  </div>
1363
1356
  </div>
@@ -1387,8 +1380,8 @@ Private Attributes</h2></td></tr>
1387
1380
 
1388
1381
  <p>Get dominators. </p>
1389
1382
 
1390
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00146">146</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1391
- <div class="fragment"><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#afb3864bae4ac95c7d3b731634c1abdab">getDT</a>(fun);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4949fb25fe4cd461de8aec90756b1fea"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">SVF::PathCondAllocator::cfInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder cfInfoBuilder</div><div class="ttdoc">map a function to its loop info </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00277">PathCondAllocator.h:277</a></div></div>
1383
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00145">145</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1384
+ <div class="fragment"><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#afb3864bae4ac95c7d3b731634c1abdab">getDT</a>(fun);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4949fb25fe4cd461de8aec90756b1fea"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">SVF::PathCondAllocator::cfInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder cfInfoBuilder</div><div class="ttdoc">map a function to its loop info </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00276">PathCondAllocator.h:276</a></div></div>
1392
1385
  <div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_afb3864bae4ac95c7d3b731634c1abdab"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#afb3864bae4ac95c7d3b731634c1abdab">SVF::PTACFInfoBuilder::getDT</a></div><div class="ttdeci">DominatorTree * getDT(const Function *f)</div><div class="ttdoc">Get dominator tree of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00110">DataFlowUtil.cpp:110</a></div></div>
1393
1386
  </div><!-- fragment -->
1394
1387
  </div>
@@ -1429,10 +1422,10 @@ Private Attributes</h2></td></tr>
1429
1422
 
1430
1423
  <p>Get a condition, evaluate the value for conditions if necessary (e.g., testNull like express) </p>
1431
1424
 
1432
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00149">149</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1433
- <div class="fragment"><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;{</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PathCondAllocator.html#a0fa615ec0ccc48933b84d09b8e359da7">getCurEvalSVFGNode</a>() &amp;&amp; <a class="code" href="classSVF_1_1PathCondAllocator.html#a0fa615ec0ccc48933b84d09b8e359da7">getCurEvalSVFGNode</a>()-&gt;getValue())</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a283788ca2886b03803829434150d11fe">evaluateBranchCond</a>(bb, succ);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4d00c3306b92e59568b54a6a72afdb74">getBranchCond</a>(bb,succ);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;}</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4d00c3306b92e59568b54a6a72afdb74"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4d00c3306b92e59568b54a6a72afdb74">SVF::PathCondAllocator::getBranchCond</a></div><div class="ttdeci">Condition * getBranchCond(const BasicBlock *bb, const BasicBlock *succ) const</div><div class="ttdoc">Get branch condition. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00134">PathCondAllocator.cpp:134</a></div></div>
1434
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a283788ca2886b03803829434150d11fe"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a283788ca2886b03803829434150d11fe">SVF::PathCondAllocator::evaluateBranchCond</a></div><div class="ttdeci">Condition * evaluateBranchCond(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Evaluate branch conditions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00291">PathCondAllocator.cpp:291</a></div></div>
1435
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0fa615ec0ccc48933b84d09b8e359da7"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0fa615ec0ccc48933b84d09b8e359da7">SVF::PathCondAllocator::getCurEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * getCurEvalSVFGNode() const</div><div class="ttdoc">Get current value for branch condition evaluation. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00182">PathCondAllocator.h:182</a></div></div>
1425
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00152">152</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1426
+ <div class="fragment"><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;{</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PathCondAllocator.html#a0fa615ec0ccc48933b84d09b8e359da7">getCurEvalSVFGNode</a>() &amp;&amp; <a class="code" href="classSVF_1_1PathCondAllocator.html#a0fa615ec0ccc48933b84d09b8e359da7">getCurEvalSVFGNode</a>()-&gt;getValue())</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a283788ca2886b03803829434150d11fe">evaluateBranchCond</a>(bb, succ);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4d00c3306b92e59568b54a6a72afdb74">getBranchCond</a>(bb,succ);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;}</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4d00c3306b92e59568b54a6a72afdb74"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4d00c3306b92e59568b54a6a72afdb74">SVF::PathCondAllocator::getBranchCond</a></div><div class="ttdeci">Condition * getBranchCond(const BasicBlock *bb, const BasicBlock *succ) const</div><div class="ttdoc">Get branch condition. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00137">PathCondAllocator.cpp:137</a></div></div>
1427
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a283788ca2886b03803829434150d11fe"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a283788ca2886b03803829434150d11fe">SVF::PathCondAllocator::evaluateBranchCond</a></div><div class="ttdeci">Condition * evaluateBranchCond(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Evaluate branch conditions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00294">PathCondAllocator.cpp:294</a></div></div>
1428
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0fa615ec0ccc48933b84d09b8e359da7"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0fa615ec0ccc48933b84d09b8e359da7">SVF::PathCondAllocator::getCurEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * getCurEvalSVFGNode() const</div><div class="ttdoc">Get current value for branch condition evaluation. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00181">PathCondAllocator.h:181</a></div></div>
1436
1429
  </div><!-- fragment -->
1437
1430
  </div>
1438
1431
  </div>
@@ -1459,9 +1452,9 @@ Private Attributes</h2></td></tr>
1459
1452
  </table>
1460
1453
  </div><div class="memdoc">
1461
1454
 
1462
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00099">99</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1463
- <div class="fragment"><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
1464
- <div class="ttc" id="classSVF_1_1CondManager_html_a39e9d42cb3661d1c686b5163c70eeade"><div class="ttname"><a href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">SVF::CondManager::getFalseCond</a></div><div class="ttdeci">CondExpr * getFalseCond() const</div><div class="ttdoc">Return the unique false condition. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00231">Conditions.h:231</a></div></div>
1455
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00098">98</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1456
+ <div class="fragment"><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00282">PathCondAllocator.h:282</a></div></div>
1457
+ <div class="ttc" id="classSVF_1_1CondManager_html_a39e9d42cb3661d1c686b5163c70eeade"><div class="ttname"><a href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">SVF::CondManager::getFalseCond</a></div><div class="ttdeci">CondExpr * getFalseCond() const</div><div class="ttdoc">Return the unique false condition. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00177">Conditions.h:177</a></div></div>
1465
1458
  </div><!-- fragment -->
1466
1459
  </div>
1467
1460
  </div>
@@ -1491,9 +1484,9 @@ Private Attributes</h2></td></tr>
1491
1484
 
1492
1485
  <p>Get LoopInfo. </p>
1493
1486
 
1494
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00156">156</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1495
- <div class="fragment"><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">getLoopInfo</a>(f);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div><div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_a418e6009760a7c9a048d2ffd9cd29956"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">SVF::PTACFInfoBuilder::getLoopInfo</a></div><div class="ttdeci">LoopInfo * getLoopInfo(const Function *f)</div><div class="ttdoc">Get loop info of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00074">DataFlowUtil.cpp:74</a></div></div>
1496
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4949fb25fe4cd461de8aec90756b1fea"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">SVF::PathCondAllocator::cfInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder cfInfoBuilder</div><div class="ttdoc">map a function to its loop info </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00277">PathCondAllocator.h:277</a></div></div>
1487
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00155">155</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1488
+ <div class="fragment"><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">getLoopInfo</a>(f);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div><div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_a418e6009760a7c9a048d2ffd9cd29956"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">SVF::PTACFInfoBuilder::getLoopInfo</a></div><div class="ttdeci">LoopInfo * getLoopInfo(const Function *f)</div><div class="ttdoc">Get loop info of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00074">DataFlowUtil.cpp:74</a></div></div>
1489
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4949fb25fe4cd461de8aec90756b1fea"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">SVF::PathCondAllocator::cfInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder cfInfoBuilder</div><div class="ttdoc">map a function to its loop info </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00276">PathCondAllocator.h:276</a></div></div>
1497
1490
  </div><!-- fragment -->
1498
1491
  </div>
1499
1492
  </div>
@@ -1522,9 +1515,9 @@ Private Attributes</h2></td></tr>
1522
1515
 
1523
1516
  <p>Statistics. </p>
1524
1517
 
1525
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00071">71</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1526
- <div class="fragment"><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a8a9d3d96c2c8cfef8b9d9c27c28871f6">getMemUsage</a>();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_a8a9d3d96c2c8cfef8b9d9c27c28871f6"><div class="ttname"><a href="classSVF_1_1CondManager.html#a8a9d3d96c2c8cfef8b9d9c27c28871f6">SVF::CondManager::getMemUsage</a></div><div class="ttdeci">std::string getMemUsage()</div><div class="ttdoc">Return memory usage for this condition manager. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8cpp_source.html#l00193">Conditions.cpp:193</a></div></div>
1527
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
1518
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00070">70</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1519
+ <div class="fragment"><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a9d1f2e6ef92ee120c7f26d98b1389b04">getMemUsage</a>();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00282">PathCondAllocator.h:282</a></div></div>
1520
+ <div class="ttc" id="classSVF_1_1CondManager_html_a9d1f2e6ef92ee120c7f26d98b1389b04"><div class="ttname"><a href="classSVF_1_1CondManager.html#a9d1f2e6ef92ee120c7f26d98b1389b04">SVF::CondManager::getMemUsage</a></div><div class="ttdeci">virtual std::string getMemUsage()=0</div><div class="ttdoc">Return memory usage for this condition manager. </div></div>
1528
1521
  </div><!-- fragment -->
1529
1522
  </div>
1530
1523
  </div>
@@ -1571,14 +1564,14 @@ Private Attributes</h2></td></tr>
1571
1564
  <p>Get complement phi condition e.g., B0: dstBB; B1:incomingBB; B2:complementBB Assume B0 (phi node) is the successor of both B1 and B2. If B1 dominates B2, and B0 not dominate B2 then condition from B1&ndash;&gt;B0 = neg(B1&ndash;&gt;B2)^(B1&ndash;&gt;B0) </p>
1572
1565
  <p>avoid both BB0 and BB1 dominate BB2 (e.g., while loop), then BB2 is not necessaryly a complement BB </p>
1573
1566
 
1574
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00430">430</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1575
- <div class="fragment"><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;{</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(BB1 &amp;&amp; BB2 &amp;&amp; <span class="stringliteral">&quot;expect nullptr BB here!&quot;</span>);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* dt = <a class="code" href="classSVF_1_1PathCondAllocator.html#a496a23bc37dfdea32c536e9ebe9a4b88">getDT</a>(BB1-&gt;getParent());</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">if</span>(dt-&gt;dominates(BB1,BB2) &amp;&amp; !dt-&gt;dominates(BB0,BB2))</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* cond = <a class="code" href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">ComputeIntraVFGGuard</a>(BB1,BB2);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ac1ed60a8f59a55811c97c83def3bb739">condNeg</a>(cond);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;}</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
1576
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00095">PathCondAllocator.h:95</a></div></div>
1577
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a496a23bc37dfdea32c536e9ebe9a4b88"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a496a23bc37dfdea32c536e9ebe9a4b88">SVF::PathCondAllocator::getDT</a></div><div class="ttdeci">DominatorTree * getDT(const Function *fun)</div><div class="ttdoc">Get dominators. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00146">PathCondAllocator.h:146</a></div></div>
1567
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00433">433</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1568
+ <div class="fragment"><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;{</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(BB1 &amp;&amp; BB2 &amp;&amp; <span class="stringliteral">&quot;expect nullptr BB here!&quot;</span>);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* dt = <a class="code" href="classSVF_1_1PathCondAllocator.html#a496a23bc37dfdea32c536e9ebe9a4b88">getDT</a>(BB1-&gt;getParent());</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">if</span>(dt-&gt;dominates(BB1,BB2) &amp;&amp; !dt-&gt;dominates(BB0,BB2))</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* cond = <a class="code" href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">ComputeIntraVFGGuard</a>(BB1,BB2);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ac1ed60a8f59a55811c97c83def3bb739">condNeg</a>(cond);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; }</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;}</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
1569
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00094">PathCondAllocator.h:94</a></div></div>
1570
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a496a23bc37dfdea32c536e9ebe9a4b88"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a496a23bc37dfdea32c536e9ebe9a4b88">SVF::PathCondAllocator::getDT</a></div><div class="ttdeci">DominatorTree * getDT(const Function *fun)</div><div class="ttdoc">Get dominators. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00145">PathCondAllocator.h:145</a></div></div>
1578
1571
  <div class="ttc" id="namespaceSVF_html_aecbb42b8e9d17fa0189c50dda9fd5fdd"><div class="ttname"><a href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">SVF::DominatorTree</a></div><div class="ttdeci">llvm::DominatorTree DominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00183">BasicTypes.h:183</a></div></div>
1579
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac1ed60a8f59a55811c97c83def3bb739"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac1ed60a8f59a55811c97c83def3bb739">SVF::PathCondAllocator::condNeg</a></div><div class="ttdeci">Condition * condNeg(Condition *cond)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00091">PathCondAllocator.h:91</a></div></div>
1572
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac1ed60a8f59a55811c97c83def3bb739"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac1ed60a8f59a55811c97c83def3bb739">SVF::PathCondAllocator::condNeg</a></div><div class="ttdeci">Condition * condNeg(Condition *cond)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00090">PathCondAllocator.h:90</a></div></div>
1580
1573
  <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aade2bc55c3882a6cacc3c4a891a1c4a3"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">SVF::PathCondAllocator::Condition</a></div><div class="ttdeci">CondExpr Condition</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00051">PathCondAllocator.h:51</a></div></div>
1581
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5ab573cce84584c44778611ba6f4d99c"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">SVF::PathCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition * ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks) </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00478">PathCondAllocator.cpp:478</a></div></div>
1574
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5ab573cce84584c44778611ba6f4d99c"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">SVF::PathCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition * ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks) </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00481">PathCondAllocator.cpp:481</a></div></div>
1582
1575
  </div><!-- fragment -->
1583
1576
  </div>
1584
1577
  </div>
@@ -1608,9 +1601,9 @@ Private Attributes</h2></td></tr>
1608
1601
 
1609
1602
  <p>Get Postdominators. </p>
1610
1603
 
1611
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00151">151</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1612
- <div class="fragment"><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a00e3339dab62325354e8ecd8251da0f1">getPostDT</a>(fun);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_a00e3339dab62325354e8ecd8251da0f1"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#a00e3339dab62325354e8ecd8251da0f1">SVF::PTACFInfoBuilder::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *f)</div><div class="ttdoc">Get post dominator tree of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00091">DataFlowUtil.cpp:91</a></div></div>
1613
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4949fb25fe4cd461de8aec90756b1fea"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">SVF::PathCondAllocator::cfInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder cfInfoBuilder</div><div class="ttdoc">map a function to its loop info </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00277">PathCondAllocator.h:277</a></div></div>
1604
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00150">150</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1605
+ <div class="fragment"><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a00e3339dab62325354e8ecd8251da0f1">getPostDT</a>(fun);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_a00e3339dab62325354e8ecd8251da0f1"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#a00e3339dab62325354e8ecd8251da0f1">SVF::PTACFInfoBuilder::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *f)</div><div class="ttdoc">Get post dominator tree of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00091">DataFlowUtil.cpp:91</a></div></div>
1606
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4949fb25fe4cd461de8aec90756b1fea"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">SVF::PathCondAllocator::cfInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder cfInfoBuilder</div><div class="ttdoc">map a function to its loop info </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00276">PathCondAllocator.h:276</a></div></div>
1614
1607
  </div><!-- fragment -->
1615
1608
  </div>
1616
1609
  </div>
@@ -1637,9 +1630,9 @@ Private Attributes</h2></td></tr>
1637
1630
  </table>
1638
1631
  </div><div class="memdoc">
1639
1632
 
1640
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00095">95</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1641
- <div class="fragment"><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_ac74f182ef249a7c892ba9c630f889ddc"><div class="ttname"><a href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">SVF::CondManager::getTrueCond</a></div><div class="ttdeci">CondExpr * getTrueCond() const</div><div class="ttdoc">Return the unique true condition. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00226">Conditions.h:226</a></div></div>
1642
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
1633
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00094">94</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1634
+ <div class="fragment"><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_ac74f182ef249a7c892ba9c630f889ddc"><div class="ttname"><a href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">SVF::CondManager::getTrueCond</a></div><div class="ttdeci">CondExpr * getTrueCond() const</div><div class="ttdoc">Return the unique true condition. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00172">Conditions.h:172</a></div></div>
1635
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00282">PathCondAllocator.h:282</a></div></div>
1643
1636
  </div><!-- fragment -->
1644
1637
  </div>
1645
1638
  </div>
@@ -1669,9 +1662,9 @@ Private Attributes</h2></td></tr>
1669
1662
 
1670
1663
  <p>whether condition is satisfiable for all possible boolean guards </p>
1671
1664
 
1672
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00197">197</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1673
- <div class="fragment"><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a6151817a6f671fa1e7814e74f7ce2e51">isAllPathReachable</a>(condition);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
1674
- <div class="ttc" id="classSVF_1_1CondManager_html_a6151817a6f671fa1e7814e74f7ce2e51"><div class="ttname"><a href="classSVF_1_1CondManager.html#a6151817a6f671fa1e7814e74f7ce2e51">SVF::CondManager::isAllPathReachable</a></div><div class="ttdeci">bool isAllPathReachable(const CondExpr *e)</div><div class="ttdoc">Whether All Paths are reachable. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8cpp_source.html#l00235">Conditions.cpp:235</a></div></div>
1665
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00196">196</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1666
+ <div class="fragment"><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a6151817a6f671fa1e7814e74f7ce2e51">isAllPathReachable</a>(condition);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00282">PathCondAllocator.h:282</a></div></div>
1667
+ <div class="ttc" id="classSVF_1_1CondManager_html_a6151817a6f671fa1e7814e74f7ce2e51"><div class="ttname"><a href="classSVF_1_1CondManager.html#a6151817a6f671fa1e7814e74f7ce2e51">SVF::CondManager::isAllPathReachable</a></div><div class="ttdeci">bool isAllPathReachable(const CondExpr *e)</div><div class="ttdoc">Whether All Paths are reachable. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8cpp_source.html#l00058">Conditions.cpp:58</a></div></div>
1675
1668
  </div><!-- fragment -->
1676
1669
  </div>
1677
1670
  </div>
@@ -1700,9 +1693,9 @@ Private Attributes</h2></td></tr>
1700
1693
  </div><div class="memdoc">
1701
1694
  <p>Whether this basic block contains program exit function call </p>
1702
1695
 
1703
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00408">408</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1704
- <div class="fragment"><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;{</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = bb-&gt;getParent();</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; FunToExitBBsMap::const_iterator it = <a class="code" href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b">funToExitBBsMap</a>.find(fun);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b">funToExitBBsMap</a>.end())</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>* pdt = <a class="code" href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e">getPostDT</a>(fun);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span>&amp; bit : it-&gt;second)</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span>(pdt-&gt;dominates(bit,bb))</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;}</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1295e2c2c0a9c1a3744ba3927b95363e"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e">SVF::PathCondAllocator::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *fun)</div><div class="ttdoc">Get Postdominators. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00151">PathCondAllocator.h:151</a></div></div>
1705
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ad35f1bdb406a85c5bfdcbbc15642853b"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b">SVF::PathCondAllocator::funToExitBBsMap</a></div><div class="ttdeci">FunToExitBBsMap funToExitBBsMap</div><div class="ttdoc">map a function to all its basic blocks calling program exit </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00278">PathCondAllocator.h:278</a></div></div>
1696
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00411">411</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1697
+ <div class="fragment"><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;{</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = bb-&gt;getParent();</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; FunToExitBBsMap::const_iterator it = <a class="code" href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b">funToExitBBsMap</a>.find(fun);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b">funToExitBBsMap</a>.end())</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>* pdt = <a class="code" href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e">getPostDT</a>(fun);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span>&amp; bit : it-&gt;second)</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">if</span>(pdt-&gt;dominates(bit,bb))</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; }</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;}</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1295e2c2c0a9c1a3744ba3927b95363e"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e">SVF::PathCondAllocator::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *fun)</div><div class="ttdoc">Get Postdominators. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00150">PathCondAllocator.h:150</a></div></div>
1698
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ad35f1bdb406a85c5bfdcbbc15642853b"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b">SVF::PathCondAllocator::funToExitBBsMap</a></div><div class="ttdeci">FunToExitBBsMap funToExitBBsMap</div><div class="ttdoc">map a function to all its basic blocks calling program exit </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00277">PathCondAllocator.h:277</a></div></div>
1706
1699
  <div class="ttc" id="namespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00184">BasicTypes.h:184</a></div></div>
1707
1700
  <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
1708
1701
  </div><!-- fragment -->
@@ -1735,8 +1728,8 @@ Private Attributes</h2></td></tr>
1735
1728
  <p>Evaluate test null/not null like expressions. </p>
1736
1729
  <p>Return true if the predicate of this compare instruction is equal </p>
1737
1730
 
1738
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00322">322</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1739
- <div class="fragment"><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;{</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">return</span> (cmp-&gt;getPredicate() == CmpInst::ICMP_EQ);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;}</div></div><!-- fragment -->
1731
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00325">325</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1732
+ <div class="fragment"><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;{</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">return</span> (cmp-&gt;getPredicate() == CmpInst::ICMP_EQ);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;}</div></div><!-- fragment -->
1740
1733
  </div>
1741
1734
  </div>
1742
1735
  <a id="ad92e8909172d960de8a25f6ff0272261"></a>
@@ -1773,9 +1766,9 @@ Private Attributes</h2></td></tr>
1773
1766
  </table>
1774
1767
  </div><div class="memdoc">
1775
1768
 
1776
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00201">201</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1777
- <div class="fragment"><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#adef2474c65a7f9d96b27ee670136a240">isEquivalentBranchCond</a>(lhs, rhs);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_adef2474c65a7f9d96b27ee670136a240"><div class="ttname"><a href="classSVF_1_1CondManager.html#adef2474c65a7f9d96b27ee670136a240">SVF::CondManager::isEquivalentBranchCond</a></div><div class="ttdeci">bool isEquivalentBranchCond(const CondExpr *lhs, const CondExpr *rhs) const</div><div class="ttdoc">Whether lhs and rhs are equivalent branch conditions. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00264">Conditions.h:264</a></div></div>
1778
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
1769
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00200">200</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1770
+ <div class="fragment"><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#aa20839631502b975590754e146242175">isEquivalentBranchCond</a>(lhs, rhs);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_aa20839631502b975590754e146242175"><div class="ttname"><a href="classSVF_1_1CondManager.html#aa20839631502b975590754e146242175">SVF::CondManager::isEquivalentBranchCond</a></div><div class="ttdeci">virtual bool isEquivalentBranchCond(const CondExpr *lhs, const CondExpr *rhs)=0</div><div class="ttdoc">Whether lhs and rhs are equivalent branch conditions. </div></div>
1771
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00282">PathCondAllocator.h:282</a></div></div>
1779
1772
  </div><!-- fragment -->
1780
1773
  </div>
1781
1774
  </div>
@@ -1805,8 +1798,8 @@ Private Attributes</h2></td></tr>
1805
1798
 
1806
1799
  <p>Return true if the predicate of this compare instruction is not equal. </p>
1807
1800
 
1808
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00327">327</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1809
- <div class="fragment"><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;{</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">return</span> (cmp-&gt;getPredicate() == CmpInst::ICMP_NE);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;}</div></div><!-- fragment -->
1801
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00330">330</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1802
+ <div class="fragment"><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;{</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">return</span> (cmp-&gt;getPredicate() == CmpInst::ICMP_NE);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;}</div></div><!-- fragment -->
1810
1803
  </div>
1811
1804
  </div>
1812
1805
  <a id="a7182283f15c556e9d0e9fdc6d62efeef"></a>
@@ -1833,9 +1826,9 @@ Private Attributes</h2></td></tr>
1833
1826
  </table>
1834
1827
  </div><div class="memdoc">
1835
1828
 
1836
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00141">141</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1837
- <div class="fragment"><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#ad1de136dbd62c3b9a7447222bd0890fa">isNegCond</a>(condition);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_ad1de136dbd62c3b9a7447222bd0890fa"><div class="ttname"><a href="classSVF_1_1CondManager.html#ad1de136dbd62c3b9a7447222bd0890fa">SVF::CondManager::isNegCond</a></div><div class="ttdeci">bool isNegCond(const CondExpr *cond) const</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00296">Conditions.h:296</a></div></div>
1838
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
1829
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00140">140</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1830
+ <div class="fragment"><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a1007afa25f9a95c5d12c58852ef74686">isNegCond</a>(condition);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_a1007afa25f9a95c5d12c58852ef74686"><div class="ttname"><a href="classSVF_1_1CondManager.html#a1007afa25f9a95c5d12c58852ef74686">SVF::CondManager::isNegCond</a></div><div class="ttdeci">virtual bool isNegCond(const CondExpr *cond) const =0</div></div>
1831
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00282">PathCondAllocator.h:282</a></div></div>
1839
1832
  </div><!-- fragment -->
1840
1833
  </div>
1841
1834
  </div>
@@ -1865,9 +1858,9 @@ Private Attributes</h2></td></tr>
1865
1858
 
1866
1859
  <p>whether condition is satisfiable </p>
1867
1860
 
1868
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00192">192</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1869
- <div class="fragment"><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a725d9c0a3aad4ebea3f06edf433f04ea">isSatisfiable</a>(condition);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_a725d9c0a3aad4ebea3f06edf433f04ea"><div class="ttname"><a href="classSVF_1_1CondManager.html#a725d9c0a3aad4ebea3f06edf433f04ea">SVF::CondManager::isSatisfiable</a></div><div class="ttdeci">bool isSatisfiable(const CondExpr *cond)</div><div class="ttdoc">Whether the condition is satisfiable. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8cpp_source.html#l00222">Conditions.cpp:222</a></div></div>
1870
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
1861
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00191">191</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1862
+ <div class="fragment"><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a5ef85ea09500adc006a25c1eb3426831">isSatisfiable</a>(condition);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00282">PathCondAllocator.h:282</a></div></div>
1863
+ <div class="ttc" id="classSVF_1_1CondManager_html_a5ef85ea09500adc006a25c1eb3426831"><div class="ttname"><a href="classSVF_1_1CondManager.html#a5ef85ea09500adc006a25c1eb3426831">SVF::CondManager::isSatisfiable</a></div><div class="ttdeci">virtual bool isSatisfiable(const CondExpr *cond)=0</div><div class="ttdoc">Whether the condition is satisfiable. </div></div>
1871
1864
  </div><!-- fragment -->
1872
1865
  </div>
1873
1866
  </div>
@@ -1902,9 +1895,9 @@ Private Attributes</h2></td></tr>
1902
1895
  <li>br i1 tobool, label if.end, label if.then, !dbg !161 There is an indirect edge 1-&gt;2 with value %0 </li>
1903
1896
  </ol>
1904
1897
 
1905
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00362">362</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1906
- <div class="fragment"><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;{</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *op0 = cmp-&gt;getOperand(0);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *op1 = cmp-&gt;getOperand(1);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantPointerNull&gt;(op1)) {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Value *&gt;</a> inDirVal;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it: <a class="code" href="classSVF_1_1PathCondAllocator.html#a0fa615ec0ccc48933b84d09b8e359da7">getCurEvalSVFGNode</a>()-&gt;getOutEdges()) {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">if</span> (it-&gt;isIndirectVFGEdge()) {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; inDirVal.insert(it-&gt;getDstNode()-&gt;getValue());</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; }</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; }</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">return</span> inDirVal.find(op0) != inDirVal.end();</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantPointerNull&gt;(op0)) {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Value *&gt;</a> inDirVal;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it: <a class="code" href="classSVF_1_1PathCondAllocator.html#a0fa615ec0ccc48933b84d09b8e359da7">getCurEvalSVFGNode</a>()-&gt;getOutEdges()) {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">if</span> (it-&gt;isIndirectVFGEdge()) {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; inDirVal.insert(it-&gt;getDstNode()-&gt;getValue());</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">return</span> inDirVal.find(op1) != inDirVal.end();</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;}</div><div class="ttc" id="namespaceSVF_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="SVFBasicTypes_8h_source.html#l00097">SVFBasicTypes.h:97</a></div></div>
1907
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0fa615ec0ccc48933b84d09b8e359da7"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0fa615ec0ccc48933b84d09b8e359da7">SVF::PathCondAllocator::getCurEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * getCurEvalSVFGNode() const</div><div class="ttdoc">Get current value for branch condition evaluation. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00182">PathCondAllocator.h:182</a></div></div>
1898
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00365">365</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1899
+ <div class="fragment"><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;{</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *op0 = cmp-&gt;getOperand(0);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *op1 = cmp-&gt;getOperand(1);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantPointerNull&gt;(op1)) {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Value *&gt;</a> inDirVal;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it: <a class="code" href="classSVF_1_1PathCondAllocator.html#a0fa615ec0ccc48933b84d09b8e359da7">getCurEvalSVFGNode</a>()-&gt;getOutEdges()) {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">if</span> (it-&gt;isIndirectVFGEdge()) {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; inDirVal.insert(it-&gt;getDstNode()-&gt;getValue());</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">return</span> inDirVal.find(op0) != inDirVal.end();</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ConstantPointerNull&gt;(op0)) {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Value *&gt;</a> inDirVal;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;it: <a class="code" href="classSVF_1_1PathCondAllocator.html#a0fa615ec0ccc48933b84d09b8e359da7">getCurEvalSVFGNode</a>()-&gt;getOutEdges()) {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">if</span> (it-&gt;isIndirectVFGEdge()) {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; inDirVal.insert(it-&gt;getDstNode()-&gt;getValue());</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">return</span> inDirVal.find(op1) != inDirVal.end();</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;}</div><div class="ttc" id="namespaceSVF_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="SVFBasicTypes_8h_source.html#l00097">SVFBasicTypes.h:97</a></div></div>
1900
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0fa615ec0ccc48933b84d09b8e359da7"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0fa615ec0ccc48933b84d09b8e359da7">SVF::PathCondAllocator::getCurEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * getCurEvalSVFGNode() const</div><div class="ttdoc">Get current value for branch condition evaluation. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00181">PathCondAllocator.h:181</a></div></div>
1908
1901
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
1909
1902
  </div><!-- fragment -->
1910
1903
  </div>
@@ -1935,9 +1928,9 @@ Private Attributes</h2></td></tr>
1935
1928
 
1936
1929
  <p>Return true if this is a test not null expression. </p>
1937
1930
 
1938
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00341">341</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1939
- <div class="fragment"><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;{</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5d875a9d726bb9f68a17efa528dec0b4">CmpInst</a>* cmp = SVFUtil::dyn_cast&lt;CmpInst&gt;(test))</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ae9c9621d6ff6d527ca81dc5f960387b7">isTestContainsNullAndTheValue</a>(cmp) &amp;&amp; <a class="code" href="classSVF_1_1PathCondAllocator.html#aff24f70f9aa07b9f89c25bedab0e5a71">isNECmp</a>(cmp);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; }</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;}</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aff24f70f9aa07b9f89c25bedab0e5a71"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aff24f70f9aa07b9f89c25bedab0e5a71">SVF::PathCondAllocator::isNECmp</a></div><div class="ttdeci">bool isNECmp(const CmpInst *cmp) const</div><div class="ttdoc">Return true if the predicate of this compare instruction is not equal. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00327">PathCondAllocator.cpp:327</a></div></div>
1940
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ae9c9621d6ff6d527ca81dc5f960387b7"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ae9c9621d6ff6d527ca81dc5f960387b7">SVF::PathCondAllocator::isTestContainsNullAndTheValue</a></div><div class="ttdeci">bool isTestContainsNullAndTheValue(const CmpInst *cmp) const</div><div class="ttdoc">Return true if two values on the predicate are what we want. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00362">PathCondAllocator.cpp:362</a></div></div>
1931
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00344">344</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1932
+ <div class="fragment"><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;{</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5d875a9d726bb9f68a17efa528dec0b4">CmpInst</a>* cmp = SVFUtil::dyn_cast&lt;CmpInst&gt;(test))</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ae9c9621d6ff6d527ca81dc5f960387b7">isTestContainsNullAndTheValue</a>(cmp) &amp;&amp; <a class="code" href="classSVF_1_1PathCondAllocator.html#aff24f70f9aa07b9f89c25bedab0e5a71">isNECmp</a>(cmp);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;}</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aff24f70f9aa07b9f89c25bedab0e5a71"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aff24f70f9aa07b9f89c25bedab0e5a71">SVF::PathCondAllocator::isNECmp</a></div><div class="ttdeci">bool isNECmp(const CmpInst *cmp) const</div><div class="ttdoc">Return true if the predicate of this compare instruction is not equal. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00330">PathCondAllocator.cpp:330</a></div></div>
1933
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ae9c9621d6ff6d527ca81dc5f960387b7"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ae9c9621d6ff6d527ca81dc5f960387b7">SVF::PathCondAllocator::isTestContainsNullAndTheValue</a></div><div class="ttdeci">bool isTestContainsNullAndTheValue(const CmpInst *cmp) const</div><div class="ttdoc">Return true if two values on the predicate are what we want. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00365">PathCondAllocator.cpp:365</a></div></div>
1941
1934
  <div class="ttc" id="namespaceSVF_html_a5d875a9d726bb9f68a17efa528dec0b4"><div class="ttname"><a href="namespaceSVF.html#a5d875a9d726bb9f68a17efa528dec0b4">SVF::CmpInst</a></div><div class="ttdeci">llvm::CmpInst CmpInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00148">BasicTypes.h:148</a></div></div>
1942
1935
  </div><!-- fragment -->
1943
1936
  </div>
@@ -1968,9 +1961,9 @@ Private Attributes</h2></td></tr>
1968
1961
 
1969
1962
  <p>Return true if this is a test null expression. </p>
1970
1963
 
1971
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00332">332</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1972
- <div class="fragment"><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;{</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5d875a9d726bb9f68a17efa528dec0b4">CmpInst</a>* cmp = SVFUtil::dyn_cast&lt;CmpInst&gt;(test))</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ae9c9621d6ff6d527ca81dc5f960387b7">isTestContainsNullAndTheValue</a>(cmp) &amp;&amp; <a class="code" href="classSVF_1_1PathCondAllocator.html#af93358a02bf4ef8020091532e0c5b5af">isEQCmp</a>(cmp);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;}</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_af93358a02bf4ef8020091532e0c5b5af"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#af93358a02bf4ef8020091532e0c5b5af">SVF::PathCondAllocator::isEQCmp</a></div><div class="ttdeci">bool isEQCmp(const CmpInst *cmp) const</div><div class="ttdoc">Evaluate test null/not null like expressions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00322">PathCondAllocator.cpp:322</a></div></div>
1973
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ae9c9621d6ff6d527ca81dc5f960387b7"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ae9c9621d6ff6d527ca81dc5f960387b7">SVF::PathCondAllocator::isTestContainsNullAndTheValue</a></div><div class="ttdeci">bool isTestContainsNullAndTheValue(const CmpInst *cmp) const</div><div class="ttdoc">Return true if two values on the predicate are what we want. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00362">PathCondAllocator.cpp:362</a></div></div>
1964
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00335">335</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
1965
+ <div class="fragment"><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;{</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5d875a9d726bb9f68a17efa528dec0b4">CmpInst</a>* cmp = SVFUtil::dyn_cast&lt;CmpInst&gt;(test))</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ae9c9621d6ff6d527ca81dc5f960387b7">isTestContainsNullAndTheValue</a>(cmp) &amp;&amp; <a class="code" href="classSVF_1_1PathCondAllocator.html#af93358a02bf4ef8020091532e0c5b5af">isEQCmp</a>(cmp);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;}</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_af93358a02bf4ef8020091532e0c5b5af"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#af93358a02bf4ef8020091532e0c5b5af">SVF::PathCondAllocator::isEQCmp</a></div><div class="ttdeci">bool isEQCmp(const CmpInst *cmp) const</div><div class="ttdoc">Evaluate test null/not null like expressions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00325">PathCondAllocator.cpp:325</a></div></div>
1966
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ae9c9621d6ff6d527ca81dc5f960387b7"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ae9c9621d6ff6d527ca81dc5f960387b7">SVF::PathCondAllocator::isTestContainsNullAndTheValue</a></div><div class="ttdeci">bool isTestContainsNullAndTheValue(const CmpInst *cmp) const</div><div class="ttdoc">Return true if two values on the predicate are what we want. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00365">PathCondAllocator.cpp:365</a></div></div>
1974
1967
  <div class="ttc" id="namespaceSVF_html_a5d875a9d726bb9f68a17efa528dec0b4"><div class="ttname"><a href="namespaceSVF.html#a5d875a9d726bb9f68a17efa528dec0b4">SVF::CmpInst</a></div><div class="ttdeci">llvm::CmpInst CmpInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00148">BasicTypes.h:148</a></div></div>
1975
1968
  </div><!-- fragment -->
1976
1969
  </div>
@@ -2001,9 +1994,9 @@ Private Attributes</h2></td></tr>
2001
1994
 
2002
1995
  <p>Allocate a new condition. </p>
2003
1996
 
2004
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00121">121</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2005
- <div class="fragment"><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#ae4ad2a90ac794163060290b6ac1f2949">createFreshBranchCond</a>(inst);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_ae4ad2a90ac794163060290b6ac1f2949"><div class="ttname"><a href="classSVF_1_1CondManager.html#ae4ad2a90ac794163060290b6ac1f2949">SVF::CondManager::createFreshBranchCond</a></div><div class="ttdeci">CondExpr * createFreshBranchCond(const Instruction *inst)</div><div class="ttdoc">Create a fresh condition to encode each program branch. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8cpp_source.html#l00091">Conditions.cpp:91</a></div></div>
2006
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
1997
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00120">120</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1998
+ <div class="fragment"><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#abd330e858463fed92fb3df6e8529f790">createFreshBranchCond</a>(inst);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_abd330e858463fed92fb3df6e8529f790"><div class="ttname"><a href="classSVF_1_1CondManager.html#abd330e858463fed92fb3df6e8529f790">SVF::CondManager::createFreshBranchCond</a></div><div class="ttdeci">virtual CondExpr * createFreshBranchCond(const Instruction *inst)=0</div><div class="ttdoc">Create a fresh condition to encode each program branch. </div></div>
1999
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00282">PathCondAllocator.h:282</a></div></div>
2007
2000
  </div><!-- fragment -->
2008
2001
  </div>
2009
2002
  </div>
@@ -2025,13 +2018,13 @@ Private Attributes</h2></td></tr>
2025
2018
  <p>Print out the path condition information. </p>
2026
2019
  <p>Print path conditions </p>
2027
2020
 
2028
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00534">534</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
2029
- <div class="fragment"><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;{</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;print path condition\n&quot;</span>;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> &amp; bbCond : <a class="code" href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">bbConds</a>)</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = bbCond.first;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span>&amp; cit : bbCond.second)</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; {</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i=0;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ: successors(bb))</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; {</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">if</span> (i == cit.first)</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* cond = cit.second;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; bb-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;--&gt;&quot;</span> &lt;&lt; succ-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span>;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="classSVF_1_1PathCondAllocator.html#aae773a674331bb80cc589835e0b16e4e">dumpCond</a>(cond) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; }</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; i++;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; }</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; }</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; }</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
2021
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00537">537</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
2022
+ <div class="fragment"><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;{</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;print path condition\n&quot;</span>;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> &amp; bbCond : <a class="code" href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">bbConds</a>)</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; {</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = bbCond.first;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span>&amp; cit : bbCond.second)</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; {</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i=0;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ: successors(bb))</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; {</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">if</span> (i == cit.first)</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* cond = cit.second;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; bb-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;--&gt;&quot;</span> &lt;&lt; succ-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span>;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="classSVF_1_1PathCondAllocator.html#aae773a674331bb80cc589835e0b16e4e">dumpCond</a>(cond) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; }</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; i++;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; }</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; }</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; }</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;}</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
2030
2023
  <div class="ttc" id="namespaceSVF_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="SVFBasicTypes_8h_source.html#l00077">SVFBasicTypes.h:77</a></div></div>
2031
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aff611b2797d61155c8c2f9d8ac4030bc"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">SVF::PathCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">map basic block to its successors/predecessors branch conditions </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00284">PathCondAllocator.h:284</a></div></div>
2024
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aff611b2797d61155c8c2f9d8ac4030bc"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">SVF::PathCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">map basic block to its successors/predecessors branch conditions </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
2032
2025
  <div class="ttc" id="namespaceSVF_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#l00049">SVFUtil.h:49</a></div></div>
2033
2026
  <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aade2bc55c3882a6cacc3c4a891a1c4a3"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">SVF::PathCondAllocator::Condition</a></div><div class="ttdeci">CondExpr Condition</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00051">PathCondAllocator.h:51</a></div></div>
2034
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aae773a674331bb80cc589835e0b16e4e"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aae773a674331bb80cc589835e0b16e4e">SVF::PathCondAllocator::dumpCond</a></div><div class="ttdeci">std::string dumpCond(Condition *cond) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00111">PathCondAllocator.h:111</a></div></div>
2027
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aae773a674331bb80cc589835e0b16e4e"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aae773a674331bb80cc589835e0b16e4e">SVF::PathCondAllocator::dumpCond</a></div><div class="ttdeci">std::string dumpCond(Condition *cond) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00110">PathCondAllocator.h:110</a></div></div>
2035
2028
  </div><!-- fragment -->
2036
2029
  </div>
2037
2030
  </div>
@@ -2081,11 +2074,11 @@ Private Attributes</h2></td></tr>
2081
2074
  <p>we only care about basic blocks have more than one successor</p>
2082
2075
  <p>FIXME: llvm getNumSuccessors allows duplicated block in the successors, it makes this assertion fail In this case we may waste a condition allocation, because the overwrite of the previous cond </p>
2083
2076
 
2084
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00160">160</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
2085
- <div class="fragment"><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;{</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">getBBSuccessorNum</a>(bb) &gt; 1 &amp;&amp; <span class="stringliteral">&quot;not more than one successor??&quot;</span>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a1631bbbed23fbfe2204779ecc0dc2769">getBBSuccessorPos</a>(bb,succ);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d685cfd0f0652a0ff839969f763371b">CondPosMap</a>&amp; condPosMap = <a class="code" href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">bbConds</a>[bb];</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="comment">//assert(condPosMap.find(pos) == condPosMap.end() &amp;&amp; &quot;this branch has already been set &quot;);</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; condPosMap[pos] = cond;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;}</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
2077
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00163">163</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
2078
+ <div class="fragment"><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;{</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">getBBSuccessorNum</a>(bb) &gt; 1 &amp;&amp; <span class="stringliteral">&quot;not more than one successor??&quot;</span>);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a1631bbbed23fbfe2204779ecc0dc2769">getBBSuccessorPos</a>(bb,succ);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d685cfd0f0652a0ff839969f763371b">CondPosMap</a>&amp; condPosMap = <a class="code" href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">bbConds</a>[bb];</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="comment">//assert(condPosMap.find(pos) == condPosMap.end() &amp;&amp; &quot;this branch has already been set &quot;);</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; condPosMap[pos] = cond;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;}</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
2086
2079
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a1631bbbed23fbfe2204779ecc0dc2769"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a1631bbbed23fbfe2204779ecc0dc2769">SVF::SVFUtil::getBBSuccessorPos</a></div><div class="ttdeci">u32_t getBBSuccessorPos(const BasicBlock *BB, const BasicBlock *Succ)</div><div class="ttdoc">Get basic block successor position. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00317">LLVMUtil.cpp:317</a></div></div>
2087
2080
  <div class="ttc" id="namespaceSVF_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="SVFBasicTypes_8h_source.html#l00077">SVFBasicTypes.h:77</a></div></div>
2088
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aff611b2797d61155c8c2f9d8ac4030bc"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">SVF::PathCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">map basic block to its successors/predecessors branch conditions </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00284">PathCondAllocator.h:284</a></div></div>
2081
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aff611b2797d61155c8c2f9d8ac4030bc"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">SVF::PathCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">map basic block to its successors/predecessors branch conditions </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
2089
2082
  <div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0d685cfd0f0652a0ff839969f763371b"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0d685cfd0f0652a0ff839969f763371b">SVF::PathCondAllocator::CondPosMap</a></div><div class="ttdeci">Map&lt; u32_t, Condition * &gt; CondPosMap</div><div class="ttdoc">z3 condition </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00053">PathCondAllocator.h:53</a></div></div>
2090
2083
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a737684498679dc16a26f2411d88f36aa"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">SVF::SVFUtil::getBBSuccessorNum</a></div><div class="ttdeci">u32_t getBBSuccessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB&amp;#39;s successors. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00349">LLVMUtil.cpp:349</a></div></div>
2091
2084
  </div><!-- fragment -->
@@ -2127,9 +2120,9 @@ Private Attributes</h2></td></tr>
2127
2120
 
2128
2121
  <p>Get/Set control-flow conditions. </p>
2129
2122
 
2130
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00251">251</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2131
- <div class="fragment"><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; BBToCondMap::iterator it = <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.find(bb);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="comment">// until a fixed-point is reached (condition is not changed)</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.end() &amp;&amp; <a class="code" href="classSVF_1_1PathCondAllocator.html#ad92e8909172d960de8a25f6ff0272261">isEquivalentBranchCond</a>(it-&gt;second, cond))</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>[bb] = cond;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_ad92e8909172d960de8a25f6ff0272261"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ad92e8909172d960de8a25f6ff0272261">SVF::PathCondAllocator::isEquivalentBranchCond</a></div><div class="ttdeci">bool isEquivalentBranchCond(const Condition *lhs, const Condition *rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00201">PathCondAllocator.h:201</a></div></div>
2132
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac3a0aa27f317d7d9214181b599f19f24"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">SVF::PathCondAllocator::bbToCondMap</a></div><div class="ttdeci">BBToCondMap bbToCondMap</div><div class="ttdoc">map a basic block to its path condition starting from root </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00279">PathCondAllocator.h:279</a></div></div>
2123
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00250">250</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2124
+ <div class="fragment"><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; BBToCondMap::iterator it = <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.find(bb);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="comment">// until a fixed-point is reached (condition is not changed)</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.end() &amp;&amp; <a class="code" href="classSVF_1_1PathCondAllocator.html#ad92e8909172d960de8a25f6ff0272261">isEquivalentBranchCond</a>(it-&gt;second, cond))</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>[bb] = cond;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_ad92e8909172d960de8a25f6ff0272261"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ad92e8909172d960de8a25f6ff0272261">SVF::PathCondAllocator::isEquivalentBranchCond</a></div><div class="ttdeci">bool isEquivalentBranchCond(const Condition *lhs, const Condition *rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00200">PathCondAllocator.h:200</a></div></div>
2125
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac3a0aa27f317d7d9214181b599f19f24"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">SVF::PathCondAllocator::bbToCondMap</a></div><div class="ttdeci">BBToCondMap bbToCondMap</div><div class="ttdoc">map a basic block to its path condition starting from root </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00278">PathCondAllocator.h:278</a></div></div>
2133
2126
  </div><!-- fragment -->
2134
2127
  </div>
2135
2128
  </div>
@@ -2167,9 +2160,9 @@ Private Attributes</h2></td></tr>
2167
2160
  </table>
2168
2161
  </div><div class="memdoc">
2169
2162
 
2170
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00136">136</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2171
- <div class="fragment"><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a1fbf7dd446309e13671d838c91da26bf">setCondInst</a>(cond, inst);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_a1fbf7dd446309e13671d838c91da26bf"><div class="ttname"><a href="classSVF_1_1CondManager.html#a1fbf7dd446309e13671d838c91da26bf">SVF::CondManager::setCondInst</a></div><div class="ttdeci">void setCondInst(const CondExpr *cond, const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00286">Conditions.h:286</a></div></div>
2172
- <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
2163
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00135">135</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2164
+ <div class="fragment"><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a1fbf7dd446309e13671d838c91da26bf">setCondInst</a>(cond, inst);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="ttc" id="classSVF_1_1CondManager_html_a1fbf7dd446309e13671d838c91da26bf"><div class="ttname"><a href="classSVF_1_1CondManager.html#a1fbf7dd446309e13671d838c91da26bf">SVF::CondManager::setCondInst</a></div><div class="ttdeci">void setCondInst(const CondExpr *cond, const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00212">Conditions.h:212</a></div></div>
2165
+ <div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00282">PathCondAllocator.h:282</a></div></div>
2173
2166
  </div><!-- fragment -->
2174
2167
  </div>
2175
2168
  </div>
@@ -2199,8 +2192,8 @@ Private Attributes</h2></td></tr>
2199
2192
 
2200
2193
  <p>Set current value for branch condition evaluation. </p>
2201
2194
 
2202
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00177">177</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2203
- <div class="fragment"><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">curEvalSVFGNode</a> = node;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a165e0a354b7679ce582c15f4a3faf6e0"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">SVF::PathCondAllocator::curEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * curEvalSVFGNode</div><div class="ttdoc">current llvm value to evaluate branch condition when computing guards </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00280">PathCondAllocator.h:280</a></div></div>
2195
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00176">176</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2196
+ <div class="fragment"><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">curEvalSVFGNode</a> = node;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a165e0a354b7679ce582c15f4a3faf6e0"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">SVF::PathCondAllocator::curEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * curEvalSVFGNode</div><div class="ttdoc">current llvm value to evaluate branch condition when computing guards </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00279">PathCondAllocator.h:279</a></div></div>
2204
2197
  </div><!-- fragment -->
2205
2198
  </div>
2206
2199
  </div>
@@ -2227,7 +2220,7 @@ Private Attributes</h2></td></tr>
2227
2220
 
2228
2221
  <p>map basic block to its successors/predecessors branch conditions </p>
2229
2222
 
2230
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00284">284</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2223
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00283">283</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2231
2224
 
2232
2225
  </div>
2233
2226
  </div>
@@ -2253,7 +2246,7 @@ Private Attributes</h2></td></tr>
2253
2246
 
2254
2247
  <p>map a basic block to its path condition starting from root </p>
2255
2248
 
2256
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00279">279</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2249
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00278">278</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2257
2250
 
2258
2251
  </div>
2259
2252
  </div>
@@ -2279,7 +2272,7 @@ Private Attributes</h2></td></tr>
2279
2272
 
2280
2273
  <p>map a function to its loop info </p>
2281
2274
 
2282
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00277">277</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2275
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00276">276</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2283
2276
 
2284
2277
  </div>
2285
2278
  </div>
@@ -2305,7 +2298,7 @@ Private Attributes</h2></td></tr>
2305
2298
 
2306
2299
  <p>z3 manager </p>
2307
2300
 
2308
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00283">283</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2301
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00282">282</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2309
2302
 
2310
2303
  </div>
2311
2304
  </div>
@@ -2331,7 +2324,7 @@ Private Attributes</h2></td></tr>
2331
2324
 
2332
2325
  <p>current llvm value to evaluate branch condition when computing guards </p>
2333
2326
 
2334
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00280">280</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2327
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00279">279</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2335
2328
 
2336
2329
  </div>
2337
2330
  </div>
@@ -2357,7 +2350,7 @@ Private Attributes</h2></td></tr>
2357
2350
 
2358
2351
  <p>map a function to all its basic blocks calling program exit </p>
2359
2352
 
2360
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00278">278</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2353
+ <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00277">277</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2361
2354
 
2362
2355
  </div>
2363
2356
  </div>