svf-tools 1.0.322 → 1.0.326

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 (399) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +7 -7
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +3 -3
  4. package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
  5. package/SVF-doxygen/html/html/Conditions_8cpp_source.html +22 -20
  6. package/SVF-doxygen/html/html/Conditions_8h_source.html +12 -9
  7. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +13 -12
  8. package/SVF-doxygen/html/html/ConsG_8h_source.html +15 -15
  9. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
  10. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
  11. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
  12. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  13. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +3 -3
  15. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +8 -8
  16. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
  20. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +3 -3
  21. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +8 -8
  22. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +5 -5
  23. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +2 -2
  24. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -2
  25. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +4 -4
  26. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +4 -4
  27. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
  28. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +2 -2
  29. package/SVF-doxygen/html/html/IRGraph_8cpp.html +1 -0
  30. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +20 -18
  31. package/SVF-doxygen/html/html/IRGraph_8h_source.html +13 -13
  32. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +7 -7
  33. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
  34. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +6 -6
  35. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +21 -21
  36. package/SVF-doxygen/html/html/MemRegion_8h_source.html +5 -5
  37. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +7 -7
  38. package/SVF-doxygen/html/html/MemSSA_8h_source.html +5 -5
  39. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
  40. package/SVF-doxygen/html/html/Options_8cpp_source.html +2 -1
  41. package/SVF-doxygen/html/html/Options_8h_source.html +2 -1
  42. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +3 -3
  43. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +7 -7
  44. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +24 -22
  45. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +8 -8
  46. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +3 -3
  47. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +6 -6
  48. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +17 -17
  49. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +3 -3
  50. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +5 -5
  51. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
  52. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  53. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +1 -1
  54. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
  55. package/SVF-doxygen/html/html/SVFG_8cpp.html +1 -0
  56. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +61 -59
  57. package/SVF-doxygen/html/html/SVFG_8h_source.html +20 -20
  58. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +5 -5
  59. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +33 -33
  60. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +56 -56
  61. package/SVF-doxygen/html/html/SVFIR_8h_source.html +147 -148
  62. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +8 -8
  63. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +133 -132
  64. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +14 -14
  65. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +6 -6
  66. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  67. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  68. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  69. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +6 -6
  70. package/SVF-doxygen/html/html/VFGNode_8h_source.html +11 -11
  71. package/SVF-doxygen/html/html/VFG_8cpp_source.html +39 -39
  72. package/SVF-doxygen/html/html/VFG_8h_source.html +26 -26
  73. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
  74. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +7 -7
  75. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
  76. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
  77. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
  78. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +1 -1
  79. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +20 -19
  80. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +18 -16
  81. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
  82. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +4 -4
  83. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +34 -34
  84. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +4 -4
  85. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +12 -12
  86. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +4 -4
  87. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +8 -8
  88. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +4 -4
  89. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +8 -8
  90. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +4 -4
  91. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +8 -8
  92. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +4 -4
  93. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +8 -8
  94. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +4 -4
  95. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +11 -11
  96. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +8 -8
  97. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +4 -4
  98. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +8 -8
  99. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +4 -4
  100. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +25 -25
  101. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +26 -25
  102. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +24 -22
  103. package/SVF-doxygen/html/html/classSVF_1_1BranchCondManager.html +22 -22
  104. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +20 -19
  105. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +33 -31
  106. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
  107. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode-members.html +8 -8
  108. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +6 -6
  109. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +2 -2
  110. package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +20 -19
  111. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +24 -22
  112. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +8 -8
  113. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +24 -24
  114. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +8 -8
  115. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +24 -24
  116. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +8 -8
  117. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +24 -24
  118. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +28 -27
  119. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +41 -39
  120. package/SVF-doxygen/html/html/classSVF_1_1CondManager-members.html +10 -7
  121. package/SVF-doxygen/html/html/classSVF_1_1CondManager.html +144 -43
  122. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +4 -4
  123. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +10 -10
  124. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph-members.html +5 -5
  125. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +46 -46
  126. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +4 -4
  127. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +17 -17
  128. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +20 -19
  129. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +18 -16
  130. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +1 -1
  131. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +3 -3
  132. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +10 -10
  133. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +13 -13
  134. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +9 -9
  135. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +1 -1
  136. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +8 -8
  137. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +24 -24
  138. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +8 -8
  139. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +24 -24
  140. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +8 -8
  141. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +24 -24
  142. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +4 -4
  143. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +8 -8
  144. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +4 -4
  146. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +16 -16
  147. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +4 -4
  148. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +27 -27
  149. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +7 -7
  150. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +8 -8
  151. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +24 -24
  152. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
  153. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +4 -4
  154. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode-members.html +6 -6
  155. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +6 -6
  156. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode-members.html +6 -6
  157. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +6 -6
  158. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  159. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN-members.html +8 -8
  160. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +24 -24
  161. package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +20 -19
  162. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +18 -16
  163. package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +8 -8
  164. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +28 -28
  165. package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode-members.html +6 -6
  166. package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +6 -6
  167. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode-members.html +6 -6
  168. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +22 -22
  169. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +6 -6
  170. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
  171. package/SVF-doxygen/html/html/classSVF_1_1IRGraph-members.html +8 -8
  172. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +54 -54
  173. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +2 -2
  174. package/SVF-doxygen/html/html/classSVF_1_1InterBlockNode-members.html +6 -6
  175. package/SVF-doxygen/html/html/classSVF_1_1InterBlockNode.html +6 -6
  176. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +14 -14
  177. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +9 -9
  178. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +3 -3
  179. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode-members.html +6 -6
  180. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +6 -6
  181. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +14 -14
  182. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +9 -9
  183. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +2 -2
  184. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +3 -3
  185. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +7 -7
  186. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +23 -22
  187. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +18 -16
  188. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +17 -17
  189. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +92 -92
  190. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +2 -2
  191. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
  192. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +6 -6
  193. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +2 -2
  194. package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +18 -18
  195. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +41 -41
  196. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +24 -23
  197. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +33 -31
  198. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt-members.html +24 -23
  199. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +25 -23
  200. package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +8 -8
  201. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +24 -24
  202. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG-members.html +5 -5
  203. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +13 -13
  204. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +21 -20
  205. package/SVF-doxygen/html/html/classSVF_1_1Options.html +26 -0
  206. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +16 -16
  207. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +7 -7
  208. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator-members.html +13 -12
  209. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +102 -70
  210. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +25 -24
  211. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +23 -21
  212. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +4 -4
  213. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +47 -47
  214. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +11 -10
  215. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode-members.html +7 -7
  216. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +6 -6
  217. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +2 -2
  218. package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +20 -19
  219. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +24 -22
  220. package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +8 -8
  221. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +24 -24
  222. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +47 -47
  223. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +74 -74
  224. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
  225. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +59 -59
  226. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +19 -19
  227. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +131 -132
  228. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +732 -750
  229. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +3 -3
  230. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +86 -86
  231. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt-members.html +23 -22
  232. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +50 -32
  233. package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +8 -8
  234. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +69 -69
  235. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +10 -10
  236. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
  237. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +4 -4
  238. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +8 -8
  239. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +20 -19
  240. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +18 -16
  241. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +23 -22
  242. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +18 -16
  243. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +23 -22
  244. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +18 -16
  245. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
  246. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +2 -2
  247. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +4 -4
  248. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +10 -10
  249. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +9 -9
  250. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +24 -23
  251. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +28 -26
  252. package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +33 -33
  253. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +83 -83
  254. package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +8 -8
  255. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +24 -24
  256. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +8 -8
  257. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +24 -24
  258. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt-members.html +23 -22
  259. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +20 -18
  260. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +4 -4
  261. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +17 -17
  262. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
  263. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +3 -3
  264. package/SVF-doxygen/html/html/functions_a.html +29 -29
  265. package/SVF-doxygen/html/html/functions_c.html +25 -30
  266. package/SVF-doxygen/html/html/functions_f.html +2 -2
  267. package/SVF-doxygen/html/html/functions_func.html +29 -29
  268. package/SVF-doxygen/html/html/functions_func_g.html +59 -57
  269. package/SVF-doxygen/html/html/functions_func_h.html +6 -6
  270. package/SVF-doxygen/html/html/functions_func_i.html +8 -4
  271. package/SVF-doxygen/html/html/functions_func_s.html +8 -5
  272. package/SVF-doxygen/html/html/functions_g.html +74 -72
  273. package/SVF-doxygen/html/html/functions_h.html +6 -6
  274. package/SVF-doxygen/html/html/functions_i.html +20 -16
  275. package/SVF-doxygen/html/html/functions_k.html +9 -0
  276. package/SVF-doxygen/html/html/functions_l.html +8 -8
  277. package/SVF-doxygen/html/html/functions_n.html +3 -0
  278. package/SVF-doxygen/html/html/functions_o.html +12 -15
  279. package/SVF-doxygen/html/html/functions_p.html +20 -35
  280. package/SVF-doxygen/html/html/functions_s.html +35 -13
  281. package/SVF-doxygen/html/html/functions_t.html +5 -7
  282. package/SVF-doxygen/html/html/functions_type_c.html +1 -4
  283. package/SVF-doxygen/html/html/functions_type_f.html +2 -2
  284. package/SVF-doxygen/html/html/functions_type_g.html +2 -2
  285. package/SVF-doxygen/html/html/functions_type_i.html +3 -3
  286. package/SVF-doxygen/html/html/functions_type_k.html +3 -0
  287. package/SVF-doxygen/html/html/functions_type_p.html +2 -18
  288. package/SVF-doxygen/html/html/functions_type_s.html +16 -0
  289. package/SVF-doxygen/html/html/functions_type_v.html +1 -1
  290. package/SVF-doxygen/html/html/functions_v.html +4 -4
  291. package/SVF-doxygen/html/html/functions_vars_g.html +7 -7
  292. package/SVF-doxygen/html/html/functions_vars_i.html +7 -7
  293. package/SVF-doxygen/html/html/functions_vars_k.html +6 -0
  294. package/SVF-doxygen/html/html/functions_vars_n.html +3 -0
  295. package/SVF-doxygen/html/html/functions_vars_o.html +1 -2
  296. package/SVF-doxygen/html/html/functions_vars_p.html +4 -7
  297. package/SVF-doxygen/html/html/functions_vars_s.html +3 -0
  298. package/SVF-doxygen/html/html/functions_w.html +9 -5
  299. package/SVF-doxygen/html/html/namespaceSVF.html +1 -1
  300. package/SVF-doxygen/html/html/search/all_1.js +14 -14
  301. package/SVF-doxygen/html/html/search/all_10.js +13 -18
  302. package/SVF-doxygen/html/html/search/all_13.js +10 -4
  303. package/SVF-doxygen/html/html/search/all_14.js +6 -6
  304. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  305. package/SVF-doxygen/html/html/search/all_16.js +3 -3
  306. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  307. package/SVF-doxygen/html/html/search/all_3.js +2 -3
  308. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  309. package/SVF-doxygen/html/html/search/all_7.js +29 -28
  310. package/SVF-doxygen/html/html/search/all_8.js +2 -2
  311. package/SVF-doxygen/html/html/search/all_9.js +4 -3
  312. package/SVF-doxygen/html/html/search/all_b.js +3 -0
  313. package/SVF-doxygen/html/html/search/all_c.js +4 -4
  314. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  315. package/SVF-doxygen/html/html/search/all_e.js +4 -3
  316. package/SVF-doxygen/html/html/search/all_f.js +2 -2
  317. package/SVF-doxygen/html/html/search/functions_0.js +14 -14
  318. package/SVF-doxygen/html/html/search/functions_10.js +1 -0
  319. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  320. package/SVF-doxygen/html/html/search/functions_6.js +25 -24
  321. package/SVF-doxygen/html/html/search/functions_7.js +2 -2
  322. package/SVF-doxygen/html/html/search/functions_8.js +1 -0
  323. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  324. package/SVF-doxygen/html/html/search/typedefs_11.js +4 -0
  325. package/SVF-doxygen/html/html/search/typedefs_14.js +1 -1
  326. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -2
  327. package/SVF-doxygen/html/html/search/typedefs_5.js +2 -2
  328. package/SVF-doxygen/html/html/search/typedefs_6.js +1 -1
  329. package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
  330. package/SVF-doxygen/html/html/search/typedefs_a.js +2 -1
  331. package/SVF-doxygen/html/html/search/typedefs_f.js +2 -6
  332. package/SVF-doxygen/html/html/search/variables_10.js +2 -3
  333. package/SVF-doxygen/html/html/search/variables_13.js +1 -0
  334. package/SVF-doxygen/html/html/search/variables_14.js +4 -4
  335. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  336. package/SVF-doxygen/html/html/search/variables_7.js +3 -3
  337. package/SVF-doxygen/html/html/search/variables_9.js +3 -3
  338. package/SVF-doxygen/html/html/search/variables_b.js +3 -1
  339. package/SVF-doxygen/html/html/search/variables_e.js +3 -2
  340. package/SVF-doxygen/html/html/search/variables_f.js +2 -2
  341. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +9 -9
  342. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +2 -2
  343. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +18 -18
  344. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +20 -20
  345. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  346. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  347. package/include/DDA/ContextDDA.h +1 -1
  348. package/include/DDA/FlowDDA.h +1 -1
  349. package/include/Graphs/ConsG.h +10 -10
  350. package/include/Graphs/ICFGNode.h +3 -3
  351. package/include/Graphs/IRGraph.h +7 -7
  352. package/include/Graphs/VFG.h +4 -4
  353. package/include/MSSA/MemRegion.h +3 -3
  354. package/include/MSSA/MemSSA.h +1 -1
  355. package/include/MemoryModel/PointerAnalysis.h +8 -8
  356. package/include/MemoryModel/PointerAnalysisImpl.h +2 -2
  357. package/include/MemoryModel/SVFIR.h +66 -67
  358. package/include/MemoryModel/SVFStatements.h +30 -25
  359. package/include/MemoryModel/SVFVariables.h +32 -32
  360. package/include/SABER/PathCondAllocator.h +4 -0
  361. package/include/SVF-FE/SVFIRBuilder.h +15 -15
  362. package/include/Util/Conditions.h +10 -0
  363. package/include/Util/IRAnnotator.h +1 -1
  364. package/include/Util/Options.h +3 -1
  365. package/include/Util/TypeBasedHeapCloning.h +2 -2
  366. package/include/WPA/Andersen.h +1 -1
  367. package/include/WPA/FlowSensitiveTBHC.h +1 -1
  368. package/lib/DDA/ContextDDA.cpp +2 -2
  369. package/lib/DDA/DDAClient.cpp +6 -6
  370. package/lib/DDA/DDAStat.cpp +1 -1
  371. package/lib/DDA/FlowDDA.cpp +2 -2
  372. package/lib/Graphs/ConsG.cpp +25 -24
  373. package/lib/Graphs/ICFG.cpp +4 -4
  374. package/lib/Graphs/IRGraph.cpp +12 -9
  375. package/lib/Graphs/SVFG.cpp +10 -8
  376. package/lib/Graphs/VFG.cpp +37 -37
  377. package/lib/MSSA/MemRegion.cpp +17 -17
  378. package/lib/MSSA/MemSSA.cpp +9 -9
  379. package/lib/MTA/MTAAnnotator.cpp +5 -5
  380. package/lib/MemoryModel/PAGBuilderFromFile.cpp +10 -10
  381. package/lib/MemoryModel/PointerAnalysisImpl.cpp +12 -12
  382. package/lib/MemoryModel/SVFIR.cpp +63 -63
  383. package/lib/SABER/LeakChecker.cpp +2 -2
  384. package/lib/SABER/ProgSlice.cpp +4 -1
  385. package/lib/SABER/SaberSVFGBuilder.cpp +3 -3
  386. package/lib/SVF-FE/Graph2Json.cpp +2 -2
  387. package/lib/SVF-FE/SVFIRBuilder.cpp +18 -18
  388. package/lib/Util/Conditions.cpp +5 -1
  389. package/lib/Util/Options.cpp +6 -0
  390. package/lib/Util/PTAStat.cpp +7 -7
  391. package/lib/Util/TypeBasedHeapCloning.cpp +3 -3
  392. package/lib/WPA/Andersen.cpp +13 -13
  393. package/lib/WPA/AndersenSFR.cpp +1 -1
  394. package/lib/WPA/AndersenStat.cpp +3 -3
  395. package/lib/WPA/FlowSensitive.cpp +6 -6
  396. package/lib/WPA/FlowSensitiveStat.cpp +2 -2
  397. package/lib/WPA/FlowSensitiveTBHC.cpp +5 -5
  398. package/lib/WPA/VersionedFlowSensitive.cpp +1 -1
  399. package/package.json +1 -1
@@ -113,6 +113,8 @@ Public Member Functions</h2></td></tr>
113
113
  <tr class="separator:adf65b74b89fca76c0cf5ea5dbd6dc4ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
114
114
  <tr class="memitem:ab85a1ab3580958361ea5ec29efc75874"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PathCondAllocator.html#ab85a1ab3580958361ea5ec29efc75874">setCondInst</a> (const <a class="el" href="classSVF_1_1CondExpr.html">CondExpr</a> *cond, const <a class="el" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst)</td></tr>
115
115
  <tr class="separator:ab85a1ab3580958361ea5ec29efc75874"><td class="memSeparator" colspan="2">&#160;</td></tr>
116
+ <tr class="memitem:a7182283f15c556e9d0e9fdc6d62efeef"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PathCondAllocator.html#a7182283f15c556e9d0e9fdc6d62efeef">isNegCond</a> (const <a class="el" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a> *condition)</td></tr>
117
+ <tr class="separator:a7182283f15c556e9d0e9fdc6d62efeef"><td class="memSeparator" colspan="2">&#160;</td></tr>
116
118
  <tr class="memitem:a496a23bc37dfdea32c536e9ebe9a4b88"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PathCondAllocator.html#a496a23bc37dfdea32c536e9ebe9a4b88">getDT</a> (const <a class="el" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fun)</td></tr>
117
119
  <tr class="memdesc:a496a23bc37dfdea32c536e9ebe9a4b88"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get dominators. <a href="#a496a23bc37dfdea32c536e9ebe9a4b88">More...</a><br /></td></tr>
118
120
  <tr class="separator:a496a23bc37dfdea32c536e9ebe9a4b88"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -418,7 +420,7 @@ Private Attributes</h2></td></tr>
418
420
 
419
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>
420
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>
421
- <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#l00279">PathCondAllocator.h:279</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>
422
424
  </div><!-- fragment -->
423
425
  </div>
424
426
  </div>
@@ -550,8 +552,8 @@ Private Attributes</h2></td></tr>
550
552
  </table>
551
553
  </div><div class="memdoc">
552
554
 
553
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00168">168</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
554
- <div class="fragment"><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.clear();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</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#l00275">PathCondAllocator.h:275</a></div></div>
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>
555
557
  </div><!-- fragment -->
556
558
  </div>
557
559
  </div>
@@ -583,7 +585,7 @@ Private Attributes</h2></td></tr>
583
585
  <p>Whether this basic block contains program exit function call </p>
584
586
 
585
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>
586
- <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#l00274">PathCondAllocator.h:274</a></div></div>
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>
587
589
  <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#l00470">LLVMUtil.h:470</a></div></div>
588
590
  <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="BasicTypes_8h_source.html#l00079">BasicTypes.h:79</a></div></div>
589
591
  </div><!-- fragment -->
@@ -632,11 +634,11 @@ Private Attributes</h2></td></tr>
632
634
 
633
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>
634
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="BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
635
- <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#l00247">PathCondAllocator.h:247</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>
636
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>
637
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>
638
640
  <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>
639
- <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#l00257">PathCondAllocator.h:257</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>
640
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>
641
643
  </div><!-- fragment -->
642
644
  </div>
@@ -684,12 +686,12 @@ Private Attributes</h2></td></tr>
684
686
 
685
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>
686
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="BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
687
- <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#l00247">PathCondAllocator.h:247</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>
688
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>
689
691
  <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#l00505">LLVMUtil.h:505</a></div></div>
690
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>
691
693
  <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>
692
- <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#l00257">PathCondAllocator.h:257</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>
693
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>
694
696
  </div><!-- fragment -->
695
697
  </div>
@@ -737,8 +739,8 @@ Private Attributes</h2></td></tr>
737
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#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot; bb (&quot;</span> &lt;&lt; bb-&gt;getName() &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() &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#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot; src_bb (&quot;</span> &lt;&lt; srcBB-&gt;getName() &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() &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="BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
738
740
  <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>
739
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>
740
- <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#l00247">PathCondAllocator.h:247</a></div></div>
741
- <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#l00147">PathCondAllocator.h:147</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>
742
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>
743
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>
744
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>
@@ -749,7 +751,7 @@ Private Attributes</h2></td></tr>
749
751
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_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>
750
752
  <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>
751
753
  <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>
752
- <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#l00257">PathCondAllocator.h:257</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>
753
755
  <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#l00149">SVFBasicTypes.h:149</a></div></div>
754
756
  </div><!-- fragment -->
755
757
  </div>
@@ -792,7 +794,7 @@ Private Attributes</h2></td></tr>
792
794
 
793
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>
794
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>
795
- <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#l00279">PathCondAllocator.h:279</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>
796
798
  </div><!-- fragment -->
797
799
  </div>
798
800
  </div>
@@ -822,7 +824,7 @@ Private Attributes</h2></td></tr>
822
824
 
823
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>
824
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>
825
- <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#l00279">PathCondAllocator.h:279</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>
826
828
  </div><!-- fragment -->
827
829
  </div>
828
830
  </div>
@@ -861,7 +863,7 @@ Private Attributes</h2></td></tr>
861
863
  </div><div class="memdoc">
862
864
 
863
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>
864
- <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#l00279">PathCondAllocator.h:279</a></div></div>
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>
865
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>
866
868
  </div><!-- fragment -->
867
869
  </div>
@@ -891,8 +893,8 @@ Private Attributes</h2></td></tr>
891
893
 
892
894
  <p>Release memory. </p>
893
895
 
894
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00269">269</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
895
- <div class="fragment"><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="l00271"></a><span class="lineno"> 271</span>&#160; }</div></div><!-- fragment -->
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 -->
896
898
  </div>
897
899
  </div>
898
900
  <a id="aae773a674331bb80cc589835e0b16e4e"></a>
@@ -920,8 +922,8 @@ Private Attributes</h2></td></tr>
920
922
  </div><div class="memdoc">
921
923
 
922
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>
923
- <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#l00279">PathCondAllocator.h:279</a></div></div>
924
- <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#l00246">Conditions.cpp:246</a></div></div>
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>
925
927
  </div><!-- fragment -->
926
928
  </div>
927
929
  </div>
@@ -1020,14 +1022,14 @@ Private Attributes</h2></td></tr>
1020
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="BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
1021
1023
  <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>
1022
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>
1023
- <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#l00147">PathCondAllocator.h:147</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>
1024
1026
  <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="BasicTypes_8h_source.html#l00089">BasicTypes.h:89</a></div></div>
1025
1027
  <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="BasicTypes_8h_source.html#l00198">BasicTypes.h:198</a></div></div>
1026
1028
  <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#l00095">SVFBasicTypes.h:95</a></div></div>
1027
1029
  <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="BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
1028
1030
  <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="BasicTypes_8h_source.html#l00088">BasicTypes.h:88</a></div></div>
1029
1031
  <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="BasicTypes_8h_source.html#l00117">BasicTypes.h:117</a></div></div>
1030
- <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#l00152">PathCondAllocator.h:152</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>
1031
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>
1032
1034
  </div><!-- fragment -->
1033
1035
  </div>
@@ -1154,7 +1156,7 @@ Private Attributes</h2></td></tr>
1154
1156
 
1155
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>
1156
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>
1157
- <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#l00279">PathCondAllocator.h:279</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>
1158
1160
  <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#l00086">SVFBasicTypes.h:86</a></div></div>
1159
1161
  </div><!-- fragment -->
1160
1162
  </div>
@@ -1201,7 +1203,7 @@ Private Attributes</h2></td></tr>
1201
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>
1202
1204
  <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#l00299">LLVMUtil.cpp:299</a></div></div>
1203
1205
  <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#l00075">SVFBasicTypes.h:75</a></div></div>
1204
- <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#l00280">PathCondAllocator.h:280</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>
1205
1207
  <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#l00331">LLVMUtil.cpp:331</a></div></div>
1206
1208
  </div><!-- fragment -->
1207
1209
  </div>
@@ -1230,9 +1232,9 @@ Private Attributes</h2></td></tr>
1230
1232
  </table>
1231
1233
  </div><div class="memdoc">
1232
1234
 
1233
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00257">257</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1234
- <div class="fragment"><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; BBToCondMap::const_iterator it = <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.find(bb);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</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="l00261"></a><span class="lineno"> 261</span>&#160; {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</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>
1235
- <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#l00275">PathCondAllocator.h:275</a></div></div>
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>
1236
1238
  </div><!-- fragment -->
1237
1239
  </div>
1238
1240
  </div>
@@ -1264,7 +1266,7 @@ Private Attributes</h2></td></tr>
1264
1266
 
1265
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>
1266
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>
1267
- <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#l00279">PathCondAllocator.h:279</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>
1268
1270
  </div><!-- fragment -->
1269
1271
  </div>
1270
1272
  </div>
@@ -1296,7 +1298,7 @@ Private Attributes</h2></td></tr>
1296
1298
 
1297
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>
1298
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>
1299
- <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#l00279">PathCondAllocator.h:279</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>
1300
1302
  </div><!-- fragment -->
1301
1303
  </div>
1302
1304
  </div>
@@ -1325,7 +1327,7 @@ Private Attributes</h2></td></tr>
1325
1327
 
1326
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>
1327
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>
1328
- <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#l00279">PathCondAllocator.h:279</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>
1329
1331
  </div><!-- fragment -->
1330
1332
  </div>
1331
1333
  </div>
@@ -1354,8 +1356,8 @@ Private Attributes</h2></td></tr>
1354
1356
 
1355
1357
  <p>Get current value for branch condition evaluation. </p>
1356
1358
 
1357
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00178">178</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1358
- <div class="fragment"><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="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">curEvalSVFGNode</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</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#l00276">PathCondAllocator.h:276</a></div></div>
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>
1359
1361
  </div><!-- fragment -->
1360
1362
  </div>
1361
1363
  </div>
@@ -1385,8 +1387,8 @@ Private Attributes</h2></td></tr>
1385
1387
 
1386
1388
  <p>Get dominators. </p>
1387
1389
 
1388
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00142">142</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1389
- <div class="fragment"><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; <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="l00145"></a><span class="lineno"> 145</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#l00273">PathCondAllocator.h:273</a></div></div>
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>
1390
1392
  <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>
1391
1393
  </div><!-- fragment -->
1392
1394
  </div>
@@ -1430,7 +1432,7 @@ Private Attributes</h2></td></tr>
1430
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>
1431
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>
1432
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>
1433
- <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#l00178">PathCondAllocator.h:178</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>
1434
1436
  </div><!-- fragment -->
1435
1437
  </div>
1436
1438
  </div>
@@ -1458,7 +1460,7 @@ Private Attributes</h2></td></tr>
1458
1460
  </div><div class="memdoc">
1459
1461
 
1460
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>
1461
- <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#l00279">PathCondAllocator.h:279</a></div></div>
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>
1462
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>
1463
1465
  </div><!-- fragment -->
1464
1466
  </div>
@@ -1489,9 +1491,9 @@ Private Attributes</h2></td></tr>
1489
1491
 
1490
1492
  <p>Get LoopInfo. </p>
1491
1493
 
1492
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00152">152</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1493
- <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">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="l00155"></a><span class="lineno"> 155</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>
1494
- <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#l00273">PathCondAllocator.h:273</a></div></div>
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>
1495
1497
  </div><!-- fragment -->
1496
1498
  </div>
1497
1499
  </div>
@@ -1522,7 +1524,7 @@ Private Attributes</h2></td></tr>
1522
1524
 
1523
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>
1524
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>
1525
- <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#l00279">PathCondAllocator.h:279</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>
1526
1528
  </div><!-- fragment -->
1527
1529
  </div>
1528
1530
  </div>
@@ -1572,7 +1574,7 @@ Private Attributes</h2></td></tr>
1572
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>
1573
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>
1574
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>
1575
- <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#l00142">PathCondAllocator.h:142</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>
1576
1578
  <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="BasicTypes_8h_source.html#l00197">BasicTypes.h:197</a></div></div>
1577
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>
1578
1580
  <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>
@@ -1606,9 +1608,9 @@ Private Attributes</h2></td></tr>
1606
1608
 
1607
1609
  <p>Get Postdominators. </p>
1608
1610
 
1609
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00147">147</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1610
- <div class="fragment"><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</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="l00150"></a><span class="lineno"> 150</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>
1611
- <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#l00273">PathCondAllocator.h:273</a></div></div>
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>
1612
1614
  </div><!-- fragment -->
1613
1615
  </div>
1614
1616
  </div>
@@ -1637,7 +1639,7 @@ Private Attributes</h2></td></tr>
1637
1639
 
1638
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>
1639
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>
1640
- <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#l00279">PathCondAllocator.h:279</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>
1641
1643
  </div><!-- fragment -->
1642
1644
  </div>
1643
1645
  </div>
@@ -1667,9 +1669,9 @@ Private Attributes</h2></td></tr>
1667
1669
 
1668
1670
  <p>whether condition is satisfiable for all possible boolean guards </p>
1669
1671
 
1670
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00193">193</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1671
- <div class="fragment"><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">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="l00195"></a><span class="lineno"> 195</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#l00279">PathCondAllocator.h:279</a></div></div>
1672
- <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#l00231">Conditions.cpp:231</a></div></div>
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>
1673
1675
  </div><!-- fragment -->
1674
1676
  </div>
1675
1677
  </div>
@@ -1699,8 +1701,8 @@ Private Attributes</h2></td></tr>
1699
1701
  <p>Whether this basic block contains program exit function call </p>
1700
1702
 
1701
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>
1702
- <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#l00147">PathCondAllocator.h:147</a></div></div>
1703
- <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#l00274">PathCondAllocator.h:274</a></div></div>
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>
1704
1706
  <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="BasicTypes_8h_source.html#l00198">BasicTypes.h:198</a></div></div>
1705
1707
  <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="BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
1706
1708
  </div><!-- fragment -->
@@ -1771,9 +1773,9 @@ Private Attributes</h2></td></tr>
1771
1773
  </table>
1772
1774
  </div><div class="memdoc">
1773
1775
 
1774
- <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>
1775
- <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#adef2474c65a7f9d96b27ee670136a240">isEquivalentBranchCond</a>(lhs, rhs);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</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>
1776
- <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#l00279">PathCondAllocator.h:279</a></div></div>
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>
1777
1779
  </div><!-- fragment -->
1778
1780
  </div>
1779
1781
  </div>
@@ -1807,6 +1809,36 @@ Private Attributes</h2></td></tr>
1807
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 -->
1808
1810
  </div>
1809
1811
  </div>
1812
+ <a id="a7182283f15c556e9d0e9fdc6d62efeef"></a>
1813
+ <h2 class="memtitle"><span class="permalink"><a href="#a7182283f15c556e9d0e9fdc6d62efeef">&#9670;&nbsp;</a></span>isNegCond()</h2>
1814
+
1815
+ <div class="memitem">
1816
+ <div class="memproto">
1817
+ <table class="mlabels">
1818
+ <tr>
1819
+ <td class="mlabels-left">
1820
+ <table class="memname">
1821
+ <tr>
1822
+ <td class="memname">bool SVF::PathCondAllocator::isNegCond </td>
1823
+ <td>(</td>
1824
+ <td class="paramtype">const <a class="el" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a> *&#160;</td>
1825
+ <td class="paramname"><em>condition</em></td><td>)</td>
1826
+ <td></td>
1827
+ </tr>
1828
+ </table>
1829
+ </td>
1830
+ <td class="mlabels-right">
1831
+ <span class="mlabels"><span class="mlabel">inline</span></span> </td>
1832
+ </tr>
1833
+ </table>
1834
+ </div><div class="memdoc">
1835
+
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>
1839
+ </div><!-- fragment -->
1840
+ </div>
1841
+ </div>
1810
1842
  <a id="aaed1bbfcac68a5e48d2850ef395e7da7"></a>
1811
1843
  <h2 class="memtitle"><span class="permalink"><a href="#aaed1bbfcac68a5e48d2850ef395e7da7">&#9670;&nbsp;</a></span>isSatisfiable()</h2>
1812
1844
 
@@ -1833,9 +1865,9 @@ Private Attributes</h2></td></tr>
1833
1865
 
1834
1866
  <p>whether condition is satisfiable </p>
1835
1867
 
1836
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00188">188</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
1837
- <div class="fragment"><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; {</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#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-&gt;<a class="code" href="classSVF_1_1CondManager.html#a725d9c0a3aad4ebea3f06edf433f04ea">isSatisfiable</a>(condition);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</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#l00218">Conditions.cpp:218</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#l00279">PathCondAllocator.h:279</a></div></div>
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>
1839
1871
  </div><!-- fragment -->
1840
1872
  </div>
1841
1873
  </div>
@@ -1872,7 +1904,7 @@ Private Attributes</h2></td></tr>
1872
1904
 
1873
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>
1874
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#l00095">SVFBasicTypes.h:95</a></div></div>
1875
- <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#l00178">PathCondAllocator.h:178</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>
1876
1908
  <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="BasicTypes_8h_source.html#l00078">BasicTypes.h:78</a></div></div>
1877
1909
  </div><!-- fragment -->
1878
1910
  </div>
@@ -1971,7 +2003,7 @@ Private Attributes</h2></td></tr>
1971
2003
 
1972
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>
1973
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>
1974
- <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#l00279">PathCondAllocator.h:279</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>
1975
2007
  </div><!-- fragment -->
1976
2008
  </div>
1977
2009
  </div>
@@ -1996,7 +2028,7 @@ Private Attributes</h2></td></tr>
1996
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>
1997
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#a85ab6b592fefc45a0674d3295e01638f">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#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; bb-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;--&gt;&quot;</span> &lt;&lt; succ-&gt;getName() &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#a85ab6b592fefc45a0674d3295e01638f">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="BasicTypes_8h_source.html#l00077">BasicTypes.h:77</a></div></div>
1998
2030
  <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#l00075">SVFBasicTypes.h:75</a></div></div>
1999
- <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#l00280">PathCondAllocator.h:280</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>
2000
2032
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_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>
2001
2033
  <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>
2002
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>
@@ -2053,7 +2085,7 @@ Private Attributes</h2></td></tr>
2053
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>
2054
2086
  <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#l00299">LLVMUtil.cpp:299</a></div></div>
2055
2087
  <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#l00075">SVFBasicTypes.h:75</a></div></div>
2056
- <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#l00280">PathCondAllocator.h:280</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>
2057
2089
  <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>
2058
2090
  <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#l00331">LLVMUtil.cpp:331</a></div></div>
2059
2091
  </div><!-- fragment -->
@@ -2095,9 +2127,9 @@ Private Attributes</h2></td></tr>
2095
2127
 
2096
2128
  <p>Get/Set control-flow conditions. </p>
2097
2129
 
2098
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00247">247</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2099
- <div class="fragment"><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; BBToCondMap::iterator it = <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.find(bb);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="comment">// until a fixed-point is reached (condition is not changed)</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</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="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>[bb] = cond;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</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#l00197">PathCondAllocator.h:197</a></div></div>
2100
- <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#l00275">PathCondAllocator.h:275</a></div></div>
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>
2101
2133
  </div><!-- fragment -->
2102
2134
  </div>
2103
2135
  </div>
@@ -2137,7 +2169,7 @@ Private Attributes</h2></td></tr>
2137
2169
 
2138
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>
2139
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>
2140
- <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#l00279">PathCondAllocator.h:279</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>
2141
2173
  </div><!-- fragment -->
2142
2174
  </div>
2143
2175
  </div>
@@ -2167,8 +2199,8 @@ Private Attributes</h2></td></tr>
2167
2199
 
2168
2200
  <p>Set current value for branch condition evaluation. </p>
2169
2201
 
2170
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00173">173</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
2171
- <div class="fragment"><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">curEvalSVFGNode</a> = node;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</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#l00276">PathCondAllocator.h:276</a></div></div>
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>
2172
2204
  </div><!-- fragment -->
2173
2205
  </div>
2174
2206
  </div>
@@ -2195,7 +2227,7 @@ Private Attributes</h2></td></tr>
2195
2227
 
2196
2228
  <p>map basic block to its successors/predecessors branch conditions </p>
2197
2229
 
2198
- <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>
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>
2199
2231
 
2200
2232
  </div>
2201
2233
  </div>
@@ -2221,7 +2253,7 @@ Private Attributes</h2></td></tr>
2221
2253
 
2222
2254
  <p>map a basic block to its path condition starting from root </p>
2223
2255
 
2224
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00275">275</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
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>
2225
2257
 
2226
2258
  </div>
2227
2259
  </div>
@@ -2247,7 +2279,7 @@ Private Attributes</h2></td></tr>
2247
2279
 
2248
2280
  <p>map a function to its loop info </p>
2249
2281
 
2250
- <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>
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>
2251
2283
 
2252
2284
  </div>
2253
2285
  </div>
@@ -2273,7 +2305,7 @@ Private Attributes</h2></td></tr>
2273
2305
 
2274
2306
  <p>z3 manager </p>
2275
2307
 
2276
- <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>
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>
2277
2309
 
2278
2310
  </div>
2279
2311
  </div>
@@ -2299,7 +2331,7 @@ Private Attributes</h2></td></tr>
2299
2331
 
2300
2332
  <p>current llvm value to evaluate branch condition when computing guards </p>
2301
2333
 
2302
- <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>
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>
2303
2335
 
2304
2336
  </div>
2305
2337
  </div>
@@ -2325,7 +2357,7 @@ Private Attributes</h2></td></tr>
2325
2357
 
2326
2358
  <p>map a function to all its basic blocks calling program exit </p>
2327
2359
 
2328
- <p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00274">274</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
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>
2329
2361
 
2330
2362
  </div>
2331
2363
  </div>