svf-tools 1.0.348 → 1.0.352

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 (583) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +6 -5
  2. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +2 -2
  3. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +16 -16
  4. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +14 -14
  5. package/SVF-doxygen/html/html/Andersen_8h_source.html +13 -13
  6. package/SVF-doxygen/html/html/CHG_8h_source.html +7 -7
  7. package/SVF-doxygen/html/html/CPPUtil_8cpp.html +3 -3
  8. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +3 -3
  9. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +1 -1
  10. package/SVF-doxygen/html/html/CSC_8cpp_source.html +4 -4
  11. package/SVF-doxygen/html/html/CSC_8h_source.html +3 -3
  12. package/SVF-doxygen/html/html/Conditions_8cpp_source.html +2 -2
  13. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +4 -4
  14. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +7 -7
  15. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +45 -46
  16. package/SVF-doxygen/html/html/ConsG_8h_source.html +22 -22
  17. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +10 -8
  18. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +5 -5
  19. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +2 -2
  20. package/SVF-doxygen/html/html/DCHG_8h_source.html +4 -4
  21. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +4 -4
  22. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  23. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +2 -2
  25. package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -1
  27. package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
  28. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +4 -2
  29. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  30. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +6 -6
  31. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +2 -2
  32. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +24 -22
  33. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +17 -17
  34. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +15 -14
  35. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +25 -25
  36. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +7 -8
  37. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +3 -3
  38. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +2 -2
  39. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
  40. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +5 -5
  41. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +4 -4
  42. package/SVF-doxygen/html/html/IRGraph_8h_source.html +7 -8
  43. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  44. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +13 -6
  45. package/SVF-doxygen/html/html/LocationSet_8h_source.html +12 -14
  46. package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
  47. package/SVF-doxygen/html/html/MHP_8cpp_source.html +2 -2
  48. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +4 -5
  49. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +2 -2
  50. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +2 -2
  51. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +8 -8
  52. package/SVF-doxygen/html/html/MemRegion_8h_source.html +5 -6
  53. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
  54. package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
  55. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
  56. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +4 -4
  57. package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +3 -3
  58. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
  59. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +4 -5
  60. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +9 -10
  61. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +1 -1
  62. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +1 -1
  63. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +3 -3
  64. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +3 -3
  65. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +3 -4
  66. package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +4 -4
  67. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +5 -5
  68. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
  69. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +2 -3
  70. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +8 -8
  71. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +12 -12
  73. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +53 -55
  74. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +39 -41
  75. package/SVF-doxygen/html/html/SVFIR_8h_source.html +38 -41
  76. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +22 -24
  77. package/SVF-doxygen/html/html/SVFStatements_8h.html +0 -4
  78. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +150 -160
  79. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
  80. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +101 -100
  81. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  82. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +2 -2
  83. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +6 -6
  84. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +3 -4
  85. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  86. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  87. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +14 -13
  88. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +2 -2
  89. package/SVF-doxygen/html/html/VFGNode_8h_source.html +13 -13
  90. package/SVF-doxygen/html/html/VFG_8cpp_source.html +50 -51
  91. package/SVF-doxygen/html/html/VFG_8h_source.html +35 -35
  92. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +5 -5
  93. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +4 -4
  94. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +4 -4
  95. package/SVF-doxygen/html/html/annotated.html +100 -102
  96. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode-members.html +3 -3
  97. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +9 -9
  98. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode-members.html +3 -3
  99. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +9 -9
  100. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode-members.html +3 -3
  101. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +9 -9
  102. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode-members.html +3 -3
  103. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +9 -9
  104. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge-members.html +1 -1
  105. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +5 -5
  106. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +26 -27
  107. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +26 -27
  108. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode-members.html +3 -3
  109. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +9 -9
  110. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
  111. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +11 -11
  112. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +46 -46
  113. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +11 -11
  114. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +64 -64
  115. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +11 -11
  116. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +29 -29
  117. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +11 -11
  118. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +29 -29
  119. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +11 -11
  120. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +31 -31
  121. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +11 -11
  122. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +33 -33
  123. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +12 -12
  124. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +43 -42
  125. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +18 -18
  126. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +11 -11
  127. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +31 -31
  128. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode-members.html +3 -3
  129. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +11 -11
  130. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt-members.html +30 -31
  131. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +34 -39
  132. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.png +0 -0
  133. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +1 -1
  134. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +7 -7
  135. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +30 -31
  136. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +32 -33
  137. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode-members.html +3 -3
  138. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +11 -11
  139. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +33 -34
  140. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +47 -48
  141. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode-members.html +3 -3
  142. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +12 -12
  143. package/SVF-doxygen/html/html/classSVF_1_1CHEdge-members.html +1 -1
  144. package/SVF-doxygen/html/html/classSVF_1_1CHEdge.html +3 -3
  145. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +3 -3
  146. package/SVF-doxygen/html/html/classSVF_1_1CHGraph-members.html +4 -4
  147. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +24 -24
  148. package/SVF-doxygen/html/html/classSVF_1_1CHNode-members.html +3 -3
  149. package/SVF-doxygen/html/html/classSVF_1_1CHNode.html +11 -11
  150. package/SVF-doxygen/html/html/classSVF_1_1CSC-members.html +1 -1
  151. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +11 -11
  152. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge-members.html +1 -1
  153. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +4 -4
  154. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge-members.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +4 -4
  156. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode-members.html +3 -3
  157. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +9 -9
  158. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge-members.html +1 -1
  159. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +4 -4
  160. package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +29 -30
  161. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +35 -36
  162. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +3 -3
  163. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +20 -20
  164. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +3 -3
  165. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +21 -21
  166. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +4 -4
  167. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +24 -24
  168. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +32 -33
  169. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +33 -34
  170. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode-members.html +3 -3
  171. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +11 -11
  172. package/SVF-doxygen/html/html/classSVF_1_1CondManager.html +2 -2
  173. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +1 -1
  174. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +3 -3
  175. package/SVF-doxygen/html/html/classSVF_1_1ConstraintEdge-members.html +1 -1
  176. package/SVF-doxygen/html/html/classSVF_1_1ConstraintEdge.html +3 -3
  177. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph-members.html +1 -1
  178. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +99 -100
  179. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  180. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +68 -68
  181. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +1 -1
  182. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +20 -19
  183. package/SVF-doxygen/html/html/classSVF_1_1CopyCGEdge-members.html +1 -1
  184. package/SVF-doxygen/html/html/classSVF_1_1CopyCGEdge.html +3 -3
  185. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +26 -27
  186. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +26 -27
  187. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode-members.html +3 -3
  188. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +9 -9
  189. package/SVF-doxygen/html/html/classSVF_1_1DCHEdge-members.html +5 -5
  190. package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +8 -8
  191. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +7 -7
  192. package/SVF-doxygen/html/html/classSVF_1_1DCHNode-members.html +3 -3
  193. package/SVF-doxygen/html/html/classSVF_1_1DCHNode.html +11 -11
  194. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +2 -2
  195. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
  196. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +5 -5
  197. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
  198. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge-members.html +1 -1
  199. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +4 -4
  200. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +1 -1
  201. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +2 -2
  202. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +3 -3
  203. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +22 -22
  204. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +3 -3
  205. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +22 -22
  206. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode-members.html +3 -3
  207. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +9 -9
  208. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +3 -3
  209. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +23 -23
  210. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +13 -13
  211. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +37 -37
  212. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +1 -1
  213. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +9 -8
  214. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +13 -13
  215. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +134 -134
  216. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +22 -22
  217. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +13 -13
  218. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +93 -92
  219. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode-members.html +3 -3
  220. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +9 -9
  221. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode-members.html +3 -3
  222. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +9 -9
  223. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode-members.html +3 -3
  224. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +9 -9
  225. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode-members.html +3 -3
  226. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +9 -9
  227. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode-members.html +3 -3
  228. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +9 -9
  229. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode-members.html +3 -3
  230. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +9 -9
  231. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge-members.html +1 -1
  232. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +7 -7
  233. package/SVF-doxygen/html/html/classSVF_1_1GenericNode-members.html +3 -3
  234. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +43 -42
  235. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  236. package/SVF-doxygen/html/html/classSVF_1_1GepCGEdge-members.html +1 -1
  237. package/SVF-doxygen/html/html/classSVF_1_1GepCGEdge.html +3 -3
  238. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +4 -4
  239. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +52 -52
  240. package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +18 -16
  241. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +148 -59
  242. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.png +0 -0
  243. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode-members.html +3 -3
  244. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +9 -9
  245. package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +5 -5
  246. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +49 -49
  247. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode-members.html +3 -3
  248. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +9 -9
  249. package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge-members.html +1 -1
  250. package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge.html +4 -4
  251. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
  252. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge-members.html +1 -1
  253. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +5 -5
  254. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode-members.html +3 -3
  255. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +9 -9
  256. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +7 -8
  257. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +1 -1
  258. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +3 -3
  259. package/SVF-doxygen/html/html/classSVF_1_1IRGraph-members.html +5 -5
  260. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +27 -27
  261. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge-members.html +1 -1
  262. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +4 -4
  263. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +1 -1
  264. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +2 -2
  265. package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode-members.html +3 -3
  266. package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.html +9 -9
  267. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode-members.html +3 -3
  268. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +9 -9
  269. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode-members.html +3 -3
  270. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +9 -9
  271. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge-members.html +1 -1
  272. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +4 -4
  273. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge-members.html +1 -1
  274. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +4 -4
  275. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +1 -1
  276. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +2 -2
  277. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode-members.html +3 -3
  278. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +9 -9
  279. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge-members.html +1 -1
  280. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +4 -4
  281. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode-members.html +3 -3
  282. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +9 -9
  283. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode-members.html +3 -3
  284. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +9 -9
  285. package/SVF-doxygen/html/html/classSVF_1_1LoadCGEdge-members.html +1 -1
  286. package/SVF-doxygen/html/html/classSVF_1_1LoadCGEdge.html +3 -3
  287. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +29 -30
  288. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +26 -27
  289. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode-members.html +3 -3
  290. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +9 -9
  291. package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +12 -12
  292. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +120 -150
  293. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +1 -1
  294. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +11 -11
  295. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode-members.html +3 -3
  296. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +9 -9
  297. package/SVF-doxygen/html/html/classSVF_1_1MRVer-members.html +1 -1
  298. package/SVF-doxygen/html/html/classSVF_1_1MRVer.html +8 -8
  299. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode-members.html +3 -3
  300. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +9 -9
  301. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +2 -2
  302. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +1 -1
  303. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
  304. package/SVF-doxygen/html/html/classSVF_1_1MemObj-members.html +1 -1
  305. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +7 -7
  306. package/SVF-doxygen/html/html/classSVF_1_1MemRegion-members.html +1 -1
  307. package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +8 -8
  308. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +6 -6
  309. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +3 -3
  310. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +35 -36
  311. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +41 -42
  312. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +1 -1
  313. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge-members.html +6 -6
  314. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +11 -11
  315. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt-members.html +3 -3
  316. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +17 -17
  317. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode-members.html +3 -3
  318. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +9 -9
  319. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo-members.html +1 -1
  320. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +13 -13
  321. package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +3 -3
  322. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +27 -27
  323. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG-members.html +1 -1
  324. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +6 -6
  325. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile-members.html +1 -1
  326. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +12 -12
  327. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode-members.html +3 -3
  328. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +11 -11
  329. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph-members.html +2 -2
  330. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +15 -15
  331. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge-members.html +1 -1
  332. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +5 -5
  333. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode-members.html +3 -3
  334. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +9 -9
  335. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +11 -12
  336. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +32 -33
  337. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +32 -33
  338. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +1 -1
  339. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +12 -12
  340. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge-members.html +1 -1
  341. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +4 -4
  342. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge-members.html +1 -1
  343. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +4 -4
  344. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode-members.html +3 -3
  345. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +9 -9
  346. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge-members.html +1 -1
  347. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +4 -4
  348. package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +29 -30
  349. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +35 -36
  350. package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +3 -3
  351. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +22 -22
  352. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock-members.html +1 -1
  353. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +3 -3
  354. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +1 -1
  355. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +3 -3
  356. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +2 -2
  357. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +16 -16
  358. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +1 -1
  359. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +2 -2
  360. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +10 -10
  361. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +3 -3
  362. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal-members.html +1 -1
  363. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
  364. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +10 -10
  365. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +110 -111
  366. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +4 -4
  367. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +152 -151
  368. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt-members.html +26 -27
  369. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +67 -71
  370. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.png +0 -0
  371. package/SVF-doxygen/html/html/classSVF_1_1SVFValue-members.html +1 -1
  372. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +9 -9
  373. package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +3 -3
  374. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +15 -15
  375. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +3 -3
  376. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +11 -11
  377. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +31 -31
  378. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode-members.html +3 -3
  379. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +12 -12
  380. package/SVF-doxygen/html/html/classSVF_1_1StoreCGEdge-members.html +1 -1
  381. package/SVF-doxygen/html/html/classSVF_1_1StoreCGEdge.html +3 -3
  382. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +26 -27
  383. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +27 -28
  384. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode-members.html +3 -3
  385. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +9 -9
  386. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +2 -2
  387. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +1 -1
  388. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +12 -12
  389. package/SVF-doxygen/html/html/classSVF_1_1TCTEdge-members.html +1 -1
  390. package/SVF-doxygen/html/html/classSVF_1_1TCTEdge.html +3 -3
  391. package/SVF-doxygen/html/html/classSVF_1_1TCTNode-members.html +3 -3
  392. package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +9 -9
  393. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +28 -29
  394. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +28 -29
  395. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +28 -29
  396. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +28 -29
  397. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph-members.html +2 -2
  398. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +5 -5
  399. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge-members.html +1 -1
  400. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +4 -4
  401. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge-members.html +1 -1
  402. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +4 -4
  403. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge-members.html +1 -1
  404. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +4 -4
  405. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +11 -11
  406. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +31 -31
  407. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +22 -21
  408. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +31 -32
  409. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +39 -40
  410. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode-members.html +3 -3
  411. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +9 -9
  412. package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +2 -2
  413. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +79 -80
  414. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge-members.html +1 -1
  415. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +5 -5
  416. package/SVF-doxygen/html/html/classSVF_1_1VFGNode-members.html +3 -3
  417. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +9 -9
  418. package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +3 -3
  419. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +20 -20
  420. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +3 -3
  421. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +22 -22
  422. package/SVF-doxygen/html/html/classSVF_1_1VariantGepCGEdge-members.html +1 -1
  423. package/SVF-doxygen/html/html/classSVF_1_1VariantGepCGEdge.html +3 -3
  424. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt-members.html +2 -2
  425. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +9 -9
  426. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +15 -15
  427. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +55 -55
  428. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +20 -20
  429. package/SVF-doxygen/html/html/classes.html +95 -93
  430. package/SVF-doxygen/html/html/functions_a.html +19 -16
  431. package/SVF-doxygen/html/html/functions_c.html +22 -22
  432. package/SVF-doxygen/html/html/functions_eval_g.html +2 -1
  433. package/SVF-doxygen/html/html/functions_eval_n.html +0 -1
  434. package/SVF-doxygen/html/html/functions_eval_v.html +0 -1
  435. package/SVF-doxygen/html/html/functions_f.html +3 -3
  436. package/SVF-doxygen/html/html/functions_func.html +20 -17
  437. package/SVF-doxygen/html/html/functions_func_c.html +20 -22
  438. package/SVF-doxygen/html/html/functions_func_f.html +1 -1
  439. package/SVF-doxygen/html/html/functions_func_g.html +37 -40
  440. package/SVF-doxygen/html/html/functions_func_i.html +8 -5
  441. package/SVF-doxygen/html/html/functions_func_n.html +0 -3
  442. package/SVF-doxygen/html/html/functions_func_o.html +5 -7
  443. package/SVF-doxygen/html/html/functions_func_r.html +2 -2
  444. package/SVF-doxygen/html/html/functions_func_s.html +1 -1
  445. package/SVF-doxygen/html/html/functions_func_t.html +0 -2
  446. package/SVF-doxygen/html/html/functions_func_v.html +1 -4
  447. package/SVF-doxygen/html/html/functions_g.html +30 -32
  448. package/SVF-doxygen/html/html/functions_i.html +13 -10
  449. package/SVF-doxygen/html/html/functions_l.html +4 -4
  450. package/SVF-doxygen/html/html/functions_m.html +3 -3
  451. package/SVF-doxygen/html/html/functions_n.html +23 -27
  452. package/SVF-doxygen/html/html/functions_o.html +6 -8
  453. package/SVF-doxygen/html/html/functions_p.html +7 -7
  454. package/SVF-doxygen/html/html/functions_r.html +2 -2
  455. package/SVF-doxygen/html/html/functions_s.html +7 -5
  456. package/SVF-doxygen/html/html/functions_t.html +4 -8
  457. package/SVF-doxygen/html/html/functions_type_g.html +3 -3
  458. package/SVF-doxygen/html/html/functions_type_n.html +1 -1
  459. package/SVF-doxygen/html/html/functions_type_o.html +1 -1
  460. package/SVF-doxygen/html/html/functions_v.html +10 -11
  461. package/SVF-doxygen/html/html/functions_vars_a.html +1 -1
  462. package/SVF-doxygen/html/html/functions_vars_f.html +2 -2
  463. package/SVF-doxygen/html/html/functions_vars_m.html +2 -2
  464. package/SVF-doxygen/html/html/functions_vars_n.html +22 -22
  465. package/SVF-doxygen/html/html/functions_vars_t.html +3 -3
  466. package/SVF-doxygen/html/html/functions_vars_v.html +5 -2
  467. package/SVF-doxygen/html/html/functions_w.html +5 -9
  468. package/SVF-doxygen/html/html/hierarchy.html +55 -57
  469. package/SVF-doxygen/html/html/namespaceSVF.html +22 -26
  470. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
  471. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +5 -5
  472. package/SVF-doxygen/html/html/namespacemembers_s.html +3 -3
  473. package/SVF-doxygen/html/html/namespacemembers_type_s.html +3 -3
  474. package/SVF-doxygen/html/html/search/all_1.js +9 -8
  475. package/SVF-doxygen/html/html/search/all_10.js +6 -6
  476. package/SVF-doxygen/html/html/search/all_12.js +2 -2
  477. package/SVF-doxygen/html/html/search/all_13.js +9 -9
  478. package/SVF-doxygen/html/html/search/all_14.js +6 -6
  479. package/SVF-doxygen/html/html/search/all_16.js +7 -7
  480. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  481. package/SVF-doxygen/html/html/search/all_3.js +1 -1
  482. package/SVF-doxygen/html/html/search/all_6.js +3 -3
  483. package/SVF-doxygen/html/html/search/all_7.js +19 -20
  484. package/SVF-doxygen/html/html/search/all_9.js +4 -3
  485. package/SVF-doxygen/html/html/search/all_c.js +3 -3
  486. package/SVF-doxygen/html/html/search/all_d.js +5 -5
  487. package/SVF-doxygen/html/html/search/all_e.js +20 -21
  488. package/SVF-doxygen/html/html/search/all_f.js +4 -4
  489. package/SVF-doxygen/html/html/search/classes_12.js +0 -1
  490. package/SVF-doxygen/html/html/search/classes_b.js +0 -1
  491. package/SVF-doxygen/html/html/search/enumvalues_12.js +1 -1
  492. package/SVF-doxygen/html/html/search/enumvalues_6.js +1 -1
  493. package/SVF-doxygen/html/html/search/enumvalues_b.js +1 -1
  494. package/SVF-doxygen/html/html/search/functions_0.js +8 -7
  495. package/SVF-doxygen/html/html/search/functions_10.js +1 -1
  496. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  497. package/SVF-doxygen/html/html/search/functions_13.js +1 -2
  498. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  499. package/SVF-doxygen/html/html/search/functions_5.js +1 -1
  500. package/SVF-doxygen/html/html/search/functions_6.js +16 -17
  501. package/SVF-doxygen/html/html/search/functions_8.js +3 -2
  502. package/SVF-doxygen/html/html/search/functions_a.js +1 -1
  503. package/SVF-doxygen/html/html/search/functions_c.js +0 -1
  504. package/SVF-doxygen/html/html/search/functions_d.js +3 -3
  505. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  506. package/SVF-doxygen/html/html/search/functions_f.js +2 -2
  507. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
  508. package/SVF-doxygen/html/html/search/typedefs_6.js +2 -2
  509. package/SVF-doxygen/html/html/search/typedefs_d.js +1 -1
  510. package/SVF-doxygen/html/html/search/typedefs_e.js +1 -1
  511. package/SVF-doxygen/html/html/search/variables_1.js +1 -1
  512. package/SVF-doxygen/html/html/search/variables_14.js +4 -4
  513. package/SVF-doxygen/html/html/search/variables_16.js +3 -2
  514. package/SVF-doxygen/html/html/search/variables_6.js +2 -2
  515. package/SVF-doxygen/html/html/search/variables_d.js +3 -3
  516. package/SVF-doxygen/html/html/search/variables_e.js +18 -18
  517. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +16 -16
  518. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  519. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +18 -18
  520. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +5 -5
  521. package/include/Graphs/CHG.h +6 -6
  522. package/include/Graphs/ConsG.h +2 -2
  523. package/include/Graphs/ConsGEdge.h +1 -1
  524. package/include/Graphs/ConsGNode.h +16 -16
  525. package/include/Graphs/GenericGraph.h +4 -4
  526. package/include/Graphs/IRGraph.h +5 -5
  527. package/include/Graphs/PTACallGraph.h +2 -2
  528. package/include/Graphs/VFG.h +2 -2
  529. package/include/MSSA/MSSAMuChi.h +1 -1
  530. package/include/MSSA/MemRegion.h +2 -2
  531. package/include/MemoryModel/LocationSet.h +10 -48
  532. package/include/MemoryModel/PAGBuilderFromFile.h +1 -1
  533. package/include/MemoryModel/PointerAnalysis.h +1 -1
  534. package/include/MemoryModel/SVFIR.h +5 -5
  535. package/include/MemoryModel/SVFStatements.h +18 -95
  536. package/include/MemoryModel/SVFVariables.h +9 -6
  537. package/include/MemoryModel/SymbolTableInfo.h +3 -3
  538. package/include/SVF-FE/DCHG.h +1 -1
  539. package/include/SVF-FE/SVFIRBuilder.h +7 -7
  540. package/include/Util/IRAnnotator.h +3 -3
  541. package/include/Util/SVFBasicTypes.h +3 -3
  542. package/include/WPA/Andersen.h +11 -11
  543. package/include/WPA/AndersenSFR.h +1 -1
  544. package/include/WPA/CSC.h +1 -1
  545. package/include/WPA/FlowSensitive.h +13 -13
  546. package/include/WPA/VersionedFlowSensitive.h +2 -2
  547. package/lib/DDA/ContextDDA.cpp +4 -5
  548. package/lib/DDA/DDAClient.cpp +6 -6
  549. package/lib/DDA/DDAStat.cpp +1 -1
  550. package/lib/DDA/FlowDDA.cpp +4 -5
  551. package/lib/Graphs/ConsG.cpp +30 -35
  552. package/lib/Graphs/ICFG.cpp +1 -1
  553. package/lib/Graphs/SVFG.cpp +2 -2
  554. package/lib/Graphs/SVFGStat.cpp +2 -2
  555. package/lib/Graphs/VFG.cpp +36 -43
  556. package/lib/MSSA/MemRegion.cpp +2 -2
  557. package/lib/MTA/MHP.cpp +2 -2
  558. package/lib/MTA/MTAAnnotator.cpp +3 -3
  559. package/lib/MemoryModel/LocationSet.cpp +49 -9
  560. package/lib/MemoryModel/PAGBuilderFromFile.cpp +3 -3
  561. package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
  562. package/lib/MemoryModel/SVFIR.cpp +27 -35
  563. package/lib/MemoryModel/SVFStatements.cpp +0 -22
  564. package/lib/MemoryModel/SVFVariables.cpp +1 -1
  565. package/lib/MemoryModel/SymbolTableInfo.cpp +4 -4
  566. package/lib/SVF-FE/CPPUtil.cpp +6 -6
  567. package/lib/SVF-FE/DCHG.cpp +1 -1
  568. package/lib/SVF-FE/Graph2Json.cpp +24 -27
  569. package/lib/SVF-FE/LLVMUtil.cpp +1 -1
  570. package/lib/SVF-FE/SVFIRBuilder.cpp +14 -13
  571. package/lib/SVF-FE/SymbolTableBuilder.cpp +1 -1
  572. package/lib/Util/Conditions.cpp +1 -1
  573. package/lib/Util/PTAStat.cpp +9 -9
  574. package/lib/Util/TypeBasedHeapCloning.cpp +6 -6
  575. package/lib/WPA/Andersen.cpp +13 -13
  576. package/lib/WPA/AndersenSFR.cpp +8 -8
  577. package/lib/WPA/AndersenStat.cpp +2 -2
  578. package/lib/WPA/CSC.cpp +6 -6
  579. package/lib/WPA/FlowSensitive.cpp +4 -7
  580. package/lib/WPA/FlowSensitiveStat.cpp +2 -2
  581. package/lib/WPA/FlowSensitiveTBHC.cpp +6 -9
  582. package/lib/WPA/TypeAnalysis.cpp +3 -3
  583. package/package.json +1 -1
@@ -66,7 +66,7 @@ $(function() {
66
66
  <div class="title">Conditions.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="Conditions_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- Conditions.cpp -- Context/path conditions in the form of BDDs----------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * Conditions.cpp</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Created on: Oct 19, 2021</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * Author: Yulei and Xiao</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Conditions_8h.html">Util/Conditions.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* <a class="code" href="classSVF_1_1CondManager.html#aed854ecc55a568597f7d7f1f78fb92f4">CondManager::trueCond</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* <a class="code" href="classSVF_1_1CondManager.html#a0ba3cf86743de62bcd5fd38d8166bc90">CondManager::falseCond</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<a class="code" href="classSVF_1_1CondManager.html">CondManager</a>* <a class="code" href="classSVF_1_1CondManager.html#a1e48008a3fe3a562512e253133aa557f">CondManager::condMgr</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CondManager.html#a7efaeff7229fcfdc6c05d53ee3e1d916">CondManager::totalCondNum</a> = 0;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#aa307bb05b92907ccf8859b4bac53b796"> 46</a></span>&#160;<a class="code" href="classSVF_1_1CondManager.html#aa307bb05b92907ccf8859b4bac53b796">CondManager::CondManager</a>() : sol(cxt)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> z3::expr &amp;trueExpr = <a class="code" href="classSVF_1_1CondManager.html#a087773d6ae6ed6af009a356dd7b61e11">cxt</a>.bool_val(<span class="keyword">true</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#aed854ecc55a568597f7d7f1f78fb92f4">trueCond</a> = <a class="code" href="classSVF_1_1CondManager.html#a0ca23ef4850f9be8abf303eafd104dab">getOrAddBranchCond</a>(trueExpr, <a class="code" href="classSVF_1_1CondManager.html#ac735eb27ed4328f97ced87494683f7f1">branchCondManager</a>.<a class="code" href="classSVF_1_1BranchCondManager.html#ac6fb7493ceb44406a4bd6a62a60a6363">getTrueCond</a>());</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> z3::expr &amp;falseExpr = <a class="code" href="classSVF_1_1CondManager.html#a087773d6ae6ed6af009a356dd7b61e11">cxt</a>.bool_val(<span class="keyword">false</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#a0ba3cf86743de62bcd5fd38d8166bc90">falseCond</a> = <a class="code" href="classSVF_1_1CondManager.html#a0ca23ef4850f9be8abf303eafd104dab">getOrAddBranchCond</a>(falseExpr, <a class="code" href="classSVF_1_1CondManager.html#ac735eb27ed4328f97ced87494683f7f1">branchCondManager</a>.<a class="code" href="classSVF_1_1BranchCondManager.html#a013eb66493beb2b1d004605c68894a95">getFalseCond</a>());</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a5677513376a78707de664c1cc85805aa"> 57</a></span>&#160;<a class="code" href="classSVF_1_1CondManager.html#a5677513376a78707de664c1cc85805aa">CondManager::~CondManager</a>()</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;{</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; it : <a class="code" href="classSVF_1_1CondManager.html#a3621c17b2ff1beb7aa4e467ec357713b">allocatedConds</a>)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">delete</span> it.second;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</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="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#aeb4f9f4968f57602d12225757073f0f8"> 69</a></span>&#160;z3::expr <a class="code" href="classSVF_1_1CondManager.html#aeb4f9f4968f57602d12225757073f0f8">CondManager::simplify</a>(<span class="keyword">const</span> z3::expr&amp; expr)<span class="keyword"> const</span>{</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; z3::goal g(expr.ctx());</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; z3::tactic qe =</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; z3::tactic(expr.ctx(), <span class="stringliteral">&quot;aig&quot;</span>);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; g.add(expr);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; z3::apply_result r = qe(g);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; z3::expr res(expr.ctx().bool_val(<span class="keyword">false</span>));</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; r.size(); ++i) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span> (res.is_false()) {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; res = r[i].as_expr();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; res = res || r[i].as_expr();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> res;</div><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;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#ae4ad2a90ac794163060290b6ac1f2949"> 91</a></span>&#160;<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* <a class="code" href="classSVF_1_1CondManager.html#ae4ad2a90ac794163060290b6ac1f2949">CondManager::createFreshBranchCond</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</div><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; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> condCountIdx = <a class="code" href="classSVF_1_1CondManager.html#a7efaeff7229fcfdc6c05d53ee3e1d916">totalCondNum</a>++;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> z3::expr &amp;expr = <a class="code" href="classSVF_1_1CondManager.html#a087773d6ae6ed6af009a356dd7b61e11">cxt</a>.bool_const((<span class="stringliteral">&quot;c&quot;</span> + std::to_string(condCountIdx)).c_str());</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; IDToCondExprMap::const_iterator it = <a class="code" href="classSVF_1_1CondManager.html#a3621c17b2ff1beb7aa4e467ec357713b">allocatedConds</a>.find(expr.id());</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1CondManager.html#a3621c17b2ff1beb7aa4e467ec357713b">allocatedConds</a>.end())</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="structDdNode.html">BranchCond</a> *branchCond = <a class="code" href="classSVF_1_1CondManager.html#ac735eb27ed4328f97ced87494683f7f1">branchCondManager</a>.<a class="code" href="classSVF_1_1BranchCondManager.html#a6c807df0d5627d3afda2359b658bc97c">createCond</a>(condCountIdx);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">auto</span> *cond = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BranchCondExpr.html">BranchCondExpr</a>(expr, branchCond);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">auto</span> *negCond = <a class="code" href="classSVF_1_1CondManager.html#a5751792e45c8abd5ffd3610d94e9f0b7">NEG</a>(cond);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#a1fbf7dd446309e13671d838c91da26bf">setCondInst</a>(cond, inst);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#a049541fec44cac3401a0dc68ff2f0ac1">setNegCondInst</a>(negCond, inst);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#afd01891f45e085e990c9dbba5cbf3914">branchCondToCondExpr</a>.emplace(branchCond, cond);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#a3621c17b2ff1beb7aa4e467ec357713b">allocatedConds</a>.emplace(expr.id(), cond).first-&gt;second;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;}</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a0ca23ef4850f9be8abf303eafd104dab"> 113</a></span>&#160;<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* <a class="code" href="classSVF_1_1CondManager.html#a0ca23ef4850f9be8abf303eafd104dab">CondManager::getOrAddBranchCond</a>(<span class="keyword">const</span> z3::expr&amp; e, <a class="code" href="structDdNode.html">BranchCond</a>* branchCond)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;{</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1CondManager.html#afd01891f45e085e990c9dbba5cbf3914">branchCondToCondExpr</a>.find(branchCond);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span>(it != <a class="code" href="classSVF_1_1CondManager.html#afd01891f45e085e990c9dbba5cbf3914">branchCondToCondExpr</a>.end())</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">auto</span> *cond = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BranchCondExpr.html">BranchCondExpr</a>(e, branchCond);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#afd01891f45e085e990c9dbba5cbf3914">branchCondToCondExpr</a>.emplace(branchCond, cond);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#a3621c17b2ff1beb7aa4e467ec357713b">allocatedConds</a>.emplace(e.id(), cond).first-&gt;second;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;}</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#af167e75fab5f61b18bff296075c107d1"> 128</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CondManager.html#af167e75fab5f61b18bff296075c107d1">CondManager::getCondNumber</a>()</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;{</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#a771bda4bb55dd8c95a03f1a74a215126">sol</a>.get_model().size();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;}</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a4b88160366a7c7b2bf7e2ab632ed04c7"> 134</a></span>&#160;<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* <a class="code" href="classSVF_1_1CondManager.html#a4b88160366a7c7b2bf7e2ab632ed04c7">CondManager::AND</a>(<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* lhs, <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* rhs){</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>() || rhs == <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>())</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>())</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> rhs;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>())</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span> lhs;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="structDdNode.html">BranchCond</a> *branchCond = <a class="code" href="classSVF_1_1CondManager.html#ac735eb27ed4328f97ced87494683f7f1">branchCondManager</a>.<a class="code" href="classSVF_1_1BranchCondManager.html#a739f4206abf4f367dc796e9fd35d4d04">AND</a>(SVFUtil::dyn_cast&lt;BranchCondExpr&gt;(lhs)-&gt;getBranchCond(),</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; SVFUtil::dyn_cast&lt;BranchCondExpr&gt;(rhs)-&gt;getBranchCond());</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">const</span> z3::expr &amp;expr = lhs-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>() &amp;&amp; rhs-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#a0ca23ef4850f9be8abf303eafd104dab">getOrAddBranchCond</a>(expr, branchCond);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;}</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a83824b36d6cd073a171df9919aa0c704"> 149</a></span>&#160;<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* <a class="code" href="classSVF_1_1CondManager.html#a83824b36d6cd073a171df9919aa0c704">CondManager::OR</a>(<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* lhs, <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* rhs){</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>() || rhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>())</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>())</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> rhs;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs == <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>())</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> lhs;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="structDdNode.html">BranchCond</a> *branchCond = <a class="code" href="classSVF_1_1CondManager.html#ac735eb27ed4328f97ced87494683f7f1">branchCondManager</a>.<a class="code" href="classSVF_1_1BranchCondManager.html#a7f3fa5e90c08950099ff6f05e96ecb9c">OR</a>(SVFUtil::dyn_cast&lt;BranchCondExpr&gt;(lhs)-&gt;getBranchCond(),</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; SVFUtil::dyn_cast&lt;BranchCondExpr&gt;(rhs)-&gt;getBranchCond());</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keyword">const</span> z3::expr &amp;expr = lhs-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>() || rhs-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>();</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#a0ca23ef4850f9be8abf303eafd104dab">getOrAddBranchCond</a>(expr, branchCond);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;}</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a5751792e45c8abd5ffd3610d94e9f0b7"> 163</a></span>&#160;<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* <a class="code" href="classSVF_1_1CondManager.html#a5751792e45c8abd5ffd3610d94e9f0b7">CondManager::NEG</a>(<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* lhs){</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>())</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>();</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>())</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>();</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="structDdNode.html">BranchCond</a> *branchCond = <a class="code" href="classSVF_1_1CondManager.html#ac735eb27ed4328f97ced87494683f7f1">branchCondManager</a>.<a class="code" href="classSVF_1_1BranchCondManager.html#ad7832b33b3b73fcaca5c8278ed4d3e7f">NEG</a>(SVFUtil::dyn_cast&lt;BranchCondExpr&gt;(lhs)-&gt;getBranchCond());</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">const</span> z3::expr &amp;expr = !lhs-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#a0ca23ef4850f9be8abf303eafd104dab">getOrAddBranchCond</a>(expr, branchCond);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;}</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#ab9772aa1a35e963ccc9ce1007ebc1310"> 179</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondManager.html#ab9772aa1a35e963ccc9ce1007ebc1310">CondManager::printModel</a>()</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;{</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; std::cout &lt;&lt; <a class="code" href="classSVF_1_1CondManager.html#a771bda4bb55dd8c95a03f1a74a215126">sol</a>.check() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; z3::model m = <a class="code" href="classSVF_1_1CondManager.html#a771bda4bb55dd8c95a03f1a74a215126">sol</a>.get_model();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; m.size(); i++)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; z3::func_decl v = m[<span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a><span class="keyword">&gt;</span>(i)];</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; std::cout &lt;&lt; v.name() &lt;&lt; <span class="stringliteral">&quot; = &quot;</span> &lt;&lt; m.get_const_interp(v) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div><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;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a8a9d3d96c2c8cfef8b9d9c27c28871f6"> 193</a></span>&#160;std::string <a class="code" href="classSVF_1_1CondManager.html#a8a9d3d96c2c8cfef8b9d9c27c28871f6">CondManager::getMemUsage</a>()</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;{</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="comment">//std::ostringstream os;</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="comment">//memory::display_max_usage(os);</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="comment">//return os.str();</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;}</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#acd773bd9dbf5161e488c827b0b71481d"> 204</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondManager.html#acd773bd9dbf5161e488c827b0b71481d">CondManager::extractSubConds</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* cond, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;support)<span class="keyword"> const</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">if</span> (cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>().num_args() == 1 &amp;&amp; <a class="code" href="classSVF_1_1CondManager.html#ad1de136dbd62c3b9a7447222bd0890fa">isNegCond</a>(cond)) {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; support.set(cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>().id());</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span> (cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>().num_args() == 0)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> (!cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>().is_true() &amp;&amp; !cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>().is_false())</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; support.set(cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>().id());</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>().num_args(); ++i) {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keyword">const</span> z3::expr &amp;expr = cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>().arg(i);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#acd773bd9dbf5161e488c827b0b71481d">extractSubConds</a>(<a class="code" href="classSVF_1_1CondManager.html#ac246b92ebdf6a9635ed79892b81b9ae8">getCond</a>(expr.id()), support);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;}</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a725d9c0a3aad4ebea3f06edf433f04ea"> 222</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondManager.html#a725d9c0a3aad4ebea3f06edf433f04ea">CondManager::isSatisfiable</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* cond){</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#a771bda4bb55dd8c95a03f1a74a215126">sol</a>.reset();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#a771bda4bb55dd8c95a03f1a74a215126">sol</a>.add(cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>());</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; z3::check_result <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = <a class="code" href="classSVF_1_1CondManager.html#a771bda4bb55dd8c95a03f1a74a215126">sol</a>.check();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span> (result == z3::sat || result == z3::unknown)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;}</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a6151817a6f671fa1e7814e74f7ce2e51"> 235</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondManager.html#a6151817a6f671fa1e7814e74f7ce2e51">CondManager::isAllPathReachable</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* e){</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#adef2474c65a7f9d96b27ee670136a240">isEquivalentBranchCond</a>(e, <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>());</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;}</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a385339096b4322654b5b2c7a37e852fe"> 242</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondManager.html#a385339096b4322654b5b2c7a37e852fe">CondManager::printDbg</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *e)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;{</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; std::cout &lt;&lt; e-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;}</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a907afafc19d8faa7a200bf4f1e07bb4f"> 250</a></span>&#160;std::string <a class="code" href="classSVF_1_1CondManager.html#a907afafc19d8faa7a200bf4f1e07bb4f">CondManager::dumpStr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *e)<span class="keyword"> const</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; std::ostringstream out;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; out &lt;&lt; e-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>();</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> out.str();</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;</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;<a class="code" href="structDdNode.html">BranchCondManager::BranchCond</a>* <a class="code" href="classSVF_1_1BranchCondManager.html#a739f4206abf4f367dc796e9fd35d4d04">BranchCondManager::AND</a>(<a class="code" href="structDdNode.html">BranchCond</a>* lhs, <a class="code" href="structDdNode.html">BranchCond</a>* rhs)</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">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>() || rhs == <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>())</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>())</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> rhs;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>())</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">return</span> lhs;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">else</span></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; <a class="code" href="structDdNode.html">BranchCond</a>* tmp = <a class="code" href="cudd_8h.html#adfbb2fd5b9c884df0d684a86dc26a97d">Cudd_bddAndLimit</a>(m_bdd_mgr, lhs, rhs, <a class="code" href="classSVF_1_1Options.html#a344ca0e4b8d9159836e558aed44be1b4">Options::MaxBddSize</a>);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">if</span>(tmp==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVFUtil::writeWrnMsg</a>(<span class="stringliteral">&quot;exceeds max bdd size \n&quot;</span>);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">return</span> lhs;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">else</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; <a class="code" href="cudd_8h.html#a3d0d9959640235fc073699c776914fca">Cudd_Ref</a>(tmp);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">return</span> tmp;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;}</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#a7f3fa5e90c08950099ff6f05e96ecb9c"> 288</a></span>&#160;<a class="code" href="structDdNode.html">BranchCondManager::BranchCond</a>* <a class="code" href="classSVF_1_1BranchCondManager.html#a7f3fa5e90c08950099ff6f05e96ecb9c">BranchCondManager::OR</a>(<a class="code" href="structDdNode.html">BranchCond</a>* lhs, <a class="code" href="structDdNode.html">BranchCond</a>* rhs)</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;{</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>() || rhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>())</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>())</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">return</span> rhs;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs == <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>())</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">return</span> lhs;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="structDdNode.html">BranchCond</a>* tmp = <a class="code" href="cudd_8h.html#a6cbc77f8b658ac3c88a2549a84c58b38">Cudd_bddOrLimit</a>(m_bdd_mgr, lhs, rhs, <a class="code" href="classSVF_1_1Options.html#a344ca0e4b8d9159836e558aed44be1b4">Options::MaxBddSize</a>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span>(tmp==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVFUtil::writeWrnMsg</a>(<span class="stringliteral">&quot;exceeds max bdd size \n&quot;</span>);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>();</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="cudd_8h.html#a3d0d9959640235fc073699c776914fca">Cudd_Ref</a>(tmp);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">return</span> tmp;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;}</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#ad7832b33b3b73fcaca5c8278ed4d3e7f"> 313</a></span>&#160;<a class="code" href="structDdNode.html">BranchCondManager::BranchCond</a>* <a class="code" href="classSVF_1_1BranchCondManager.html#ad7832b33b3b73fcaca5c8278ed4d3e7f">BranchCondManager::NEG</a>(<a class="code" href="structDdNode.html">BranchCond</a>* lhs)</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;{</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>())</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>();</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>())</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>();</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(lhs);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;}</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#a513a9865b87af136edf1abb1932716dd"> 328</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BranchCondManager.html#a513a9865b87af136edf1abb1932716dd">BranchCondManager::ddClearFlag</a>(<a class="code" href="structDdNode.html">BranchCond</a> * f)<span class="keyword"> const</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f-&gt;<a class="code" href="structDdNode.html#a9422352d3b46de31b325d1cf18b9f25f">next</a>))</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="comment">/* Clear visited flag. */</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; f-&gt;<a class="code" href="structDdNode.html#a9422352d3b46de31b325d1cf18b9f25f">next</a> = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f-&gt;<a class="code" href="structDdNode.html#a9422352d3b46de31b325d1cf18b9f25f">next</a>);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cuddInt_8h.html#aa5cad999b2a4a3dbbfe5c1da1d8bc028">cuddIsConstant</a>(f))</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="cuddInt_8c.html#ab69f928c3cca42f5b1330803de1d9199">ddClearFlag</a>(<a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(f));</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="cuddInt_8c.html#ab69f928c3cca42f5b1330803de1d9199">ddClearFlag</a>(<a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(<a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(f)));</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;}</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#a94f84201f91b7175907e72af2633f6f2"> 341</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BranchCondManager.html#a94f84201f91b7175907e72af2633f6f2">BranchCondManager::BddSupportStep</a>(<a class="code" href="structDdNode.html">BranchCond</a> * f, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;support)<span class="keyword"> const</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cuddInt_8h.html#aa5cad999b2a4a3dbbfe5c1da1d8bc028">cuddIsConstant</a>(f) || <a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f-&gt;<a class="code" href="structDdNode.html#a9422352d3b46de31b325d1cf18b9f25f">next</a>))</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; support.set(f-&gt;<a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; BddSupportStep(<a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(f), support);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; BddSupportStep(<a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(<a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(f)), support);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="comment">/* Mark as visited. */</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; f-&gt;<a class="code" href="structDdNode.html#a9422352d3b46de31b325d1cf18b9f25f">next</a> = <a class="code" href="cudd_8h.html#ac4575f4314998362765264f64eccfe0c">Cudd_Complement</a>(f-&gt;<a class="code" href="structDdNode.html#a9422352d3b46de31b325d1cf18b9f25f">next</a>);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;}</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#aa241ee8c9d8ef17029dba67b737d8beb"> 354</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BranchCondManager.html#aa241ee8c9d8ef17029dba67b737d8beb">BranchCondManager::extractSubConds</a>(<a class="code" href="structDdNode.html">BranchCond</a> * f, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;support)<span class="keyword"> const</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; BddSupportStep( <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f), support);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="cuddInt_8c.html#ab69f928c3cca42f5b1330803de1d9199">ddClearFlag</a>(<a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f));</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;}</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#a2f745f39ea76d3cce7581cd4e260561d"> 363</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BranchCondManager.html#a2f745f39ea76d3cce7581cd4e260561d">BranchCondManager::dump</a>(<a class="code" href="structDdNode.html">BranchCond</a>* lhs, <a class="code" href="namespaceSVF.html#a424cc053c29ad7303699c529d1a2cc71">raw_ostream</a> &amp; O)</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="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>())</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; O &lt;&lt; <span class="stringliteral">&quot;T&quot;</span>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> support;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#acd773bd9dbf5161e488c827b0b71481d">extractSubConds</a>(lhs, support);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">for</span> (NodeBS::iterator iter = support.begin(); iter != support.end();</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; ++iter)</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="keywordtype">unsigned</span> rid = *iter;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; O &lt;&lt; rid &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;}</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#a930ece842bcdab283fb27e2a053bc8de"> 383</a></span>&#160;std::string <a class="code" href="classSVF_1_1BranchCondManager.html#a930ece842bcdab283fb27e2a053bc8de">BranchCondManager::dumpStr</a>(<a class="code" href="structDdNode.html">BranchCond</a>* lhs)<span class="keyword"> const</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; std::string str;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>())</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; str += <span class="stringliteral">&quot;T&quot;</span>;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> support;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#acd773bd9dbf5161e488c827b0b71481d">extractSubConds</a>(lhs, support);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">for</span> (NodeBS::iterator iter = support.begin(); iter != support.end();</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; ++iter)</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordtype">unsigned</span> rid = *iter;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordtype">char</span> int2str[16];</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; sprintf(int2str, <span class="stringliteral">&quot;%d&quot;</span>, rid);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; str += int2str;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; str += <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</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; <span class="keywordflow">return</span> str;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;}</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;</div><div class="ttc" id="classSVF_1_1BranchCondManager_html_a6c807df0d5627d3afda2359b658bc97c"><div class="ttname"><a href="classSVF_1_1BranchCondManager.html#a6c807df0d5627d3afda2359b658bc97c">SVF::BranchCondManager::createCond</a></div><div class="ttdeci">BranchCond * createCond(u32_t i)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00130">Conditions.h:130</a></div></div>
69
+ <a href="Conditions_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- Conditions.cpp -- Context/path conditions in the form of BDDs----------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * Conditions.cpp</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Created on: Oct 19, 2021</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * Author: Yulei and Xiao</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Conditions_8h.html">Util/Conditions.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* <a class="code" href="classSVF_1_1CondManager.html#aed854ecc55a568597f7d7f1f78fb92f4">CondManager::trueCond</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* <a class="code" href="classSVF_1_1CondManager.html#a0ba3cf86743de62bcd5fd38d8166bc90">CondManager::falseCond</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<a class="code" href="classSVF_1_1CondManager.html">CondManager</a>* <a class="code" href="classSVF_1_1CondManager.html#a1e48008a3fe3a562512e253133aa557f">CondManager::condMgr</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CondManager.html#a7efaeff7229fcfdc6c05d53ee3e1d916">CondManager::totalCondNum</a> = 0;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#aa307bb05b92907ccf8859b4bac53b796"> 46</a></span>&#160;<a class="code" href="classSVF_1_1CondManager.html#aa307bb05b92907ccf8859b4bac53b796">CondManager::CondManager</a>() : sol(cxt)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> z3::expr &amp;trueExpr = <a class="code" href="classSVF_1_1CondManager.html#a087773d6ae6ed6af009a356dd7b61e11">cxt</a>.bool_val(<span class="keyword">true</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#aed854ecc55a568597f7d7f1f78fb92f4">trueCond</a> = <a class="code" href="classSVF_1_1CondManager.html#a0ca23ef4850f9be8abf303eafd104dab">getOrAddBranchCond</a>(trueExpr, <a class="code" href="classSVF_1_1CondManager.html#ac735eb27ed4328f97ced87494683f7f1">branchCondManager</a>.<a class="code" href="classSVF_1_1BranchCondManager.html#ac6fb7493ceb44406a4bd6a62a60a6363">getTrueCond</a>());</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> z3::expr &amp;falseExpr = <a class="code" href="classSVF_1_1CondManager.html#a087773d6ae6ed6af009a356dd7b61e11">cxt</a>.bool_val(<span class="keyword">false</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#a0ba3cf86743de62bcd5fd38d8166bc90">falseCond</a> = <a class="code" href="classSVF_1_1CondManager.html#a0ca23ef4850f9be8abf303eafd104dab">getOrAddBranchCond</a>(falseExpr, <a class="code" href="classSVF_1_1CondManager.html#ac735eb27ed4328f97ced87494683f7f1">branchCondManager</a>.<a class="code" href="classSVF_1_1BranchCondManager.html#a013eb66493beb2b1d004605c68894a95">getFalseCond</a>());</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a5677513376a78707de664c1cc85805aa"> 57</a></span>&#160;<a class="code" href="classSVF_1_1CondManager.html#a5677513376a78707de664c1cc85805aa">CondManager::~CondManager</a>()</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;{</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; it : <a class="code" href="classSVF_1_1CondManager.html#a3621c17b2ff1beb7aa4e467ec357713b">allocatedConds</a>)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">delete</span> it.second;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</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="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#aeb4f9f4968f57602d12225757073f0f8"> 69</a></span>&#160;z3::expr <a class="code" href="classSVF_1_1CondManager.html#aeb4f9f4968f57602d12225757073f0f8">CondManager::simplify</a>(<span class="keyword">const</span> z3::expr&amp; expr)<span class="keyword"> const</span>{</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; z3::goal g(expr.ctx());</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; z3::tactic qe =</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; z3::tactic(expr.ctx(), <span class="stringliteral">&quot;aig&quot;</span>);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; g.add(expr);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; z3::apply_result r = qe(g);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; z3::expr res(expr.ctx().bool_val(<span class="keyword">false</span>));</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; r.size(); ++i) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span> (res.is_false()) {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; res = r[i].as_expr();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; res = res || r[i].as_expr();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> res;</div><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;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#ae4ad2a90ac794163060290b6ac1f2949"> 91</a></span>&#160;<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* <a class="code" href="classSVF_1_1CondManager.html#ae4ad2a90ac794163060290b6ac1f2949">CondManager::createFreshBranchCond</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</div><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; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> condCountIdx = <a class="code" href="classSVF_1_1CondManager.html#a7efaeff7229fcfdc6c05d53ee3e1d916">totalCondNum</a>++;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> z3::expr &amp;expr = <a class="code" href="classSVF_1_1CondManager.html#a087773d6ae6ed6af009a356dd7b61e11">cxt</a>.bool_const((<span class="stringliteral">&quot;c&quot;</span> + std::to_string(condCountIdx)).c_str());</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; IDToCondExprMap::const_iterator it = <a class="code" href="classSVF_1_1CondManager.html#a3621c17b2ff1beb7aa4e467ec357713b">allocatedConds</a>.find(expr.id());</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1CondManager.html#a3621c17b2ff1beb7aa4e467ec357713b">allocatedConds</a>.end())</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="structDdNode.html">BranchCond</a> *branchCond = <a class="code" href="classSVF_1_1CondManager.html#ac735eb27ed4328f97ced87494683f7f1">branchCondManager</a>.<a class="code" href="classSVF_1_1BranchCondManager.html#a6c807df0d5627d3afda2359b658bc97c">createCond</a>(condCountIdx);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">auto</span> *cond = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BranchCondExpr.html">BranchCondExpr</a>(expr, branchCond);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">auto</span> *negCond = <a class="code" href="classSVF_1_1CondManager.html#a5751792e45c8abd5ffd3610d94e9f0b7">NEG</a>(cond);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#a1fbf7dd446309e13671d838c91da26bf">setCondInst</a>(cond, inst);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#a049541fec44cac3401a0dc68ff2f0ac1">setNegCondInst</a>(negCond, inst);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#afd01891f45e085e990c9dbba5cbf3914">branchCondToCondExpr</a>.emplace(branchCond, cond);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#a3621c17b2ff1beb7aa4e467ec357713b">allocatedConds</a>.emplace(expr.id(), cond).first-&gt;second;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;}</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a0ca23ef4850f9be8abf303eafd104dab"> 113</a></span>&#160;<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* <a class="code" href="classSVF_1_1CondManager.html#a0ca23ef4850f9be8abf303eafd104dab">CondManager::getOrAddBranchCond</a>(<span class="keyword">const</span> z3::expr&amp; e, <a class="code" href="structDdNode.html">BranchCond</a>* branchCond)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;{</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1CondManager.html#afd01891f45e085e990c9dbba5cbf3914">branchCondToCondExpr</a>.find(branchCond);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span>(it != <a class="code" href="classSVF_1_1CondManager.html#afd01891f45e085e990c9dbba5cbf3914">branchCondToCondExpr</a>.end())</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">auto</span> *cond = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BranchCondExpr.html">BranchCondExpr</a>(e, branchCond);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#afd01891f45e085e990c9dbba5cbf3914">branchCondToCondExpr</a>.emplace(branchCond, cond);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#a3621c17b2ff1beb7aa4e467ec357713b">allocatedConds</a>.emplace(e.id(), cond).first-&gt;second;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;}</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#af167e75fab5f61b18bff296075c107d1"> 128</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1CondManager.html#af167e75fab5f61b18bff296075c107d1">CondManager::getCondNumber</a>()</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;{</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#a771bda4bb55dd8c95a03f1a74a215126">sol</a>.get_model().size();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;}</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a4b88160366a7c7b2bf7e2ab632ed04c7"> 134</a></span>&#160;<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* <a class="code" href="classSVF_1_1CondManager.html#a4b88160366a7c7b2bf7e2ab632ed04c7">CondManager::AND</a>(<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* lhs, <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* rhs){</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>() || rhs == <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>())</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>())</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> rhs;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>())</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span> lhs;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="structDdNode.html">BranchCond</a> *branchCond = <a class="code" href="classSVF_1_1CondManager.html#ac735eb27ed4328f97ced87494683f7f1">branchCondManager</a>.<a class="code" href="classSVF_1_1BranchCondManager.html#a739f4206abf4f367dc796e9fd35d4d04">AND</a>(SVFUtil::dyn_cast&lt;BranchCondExpr&gt;(lhs)-&gt;getBranchCond(),</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; SVFUtil::dyn_cast&lt;BranchCondExpr&gt;(rhs)-&gt;getBranchCond());</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">const</span> z3::expr &amp;expr = lhs-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>() &amp;&amp; rhs-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#a0ca23ef4850f9be8abf303eafd104dab">getOrAddBranchCond</a>(expr, branchCond);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;}</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a83824b36d6cd073a171df9919aa0c704"> 149</a></span>&#160;<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* <a class="code" href="classSVF_1_1CondManager.html#a83824b36d6cd073a171df9919aa0c704">CondManager::OR</a>(<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* lhs, <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* rhs){</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>() || rhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>())</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>())</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> rhs;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs == <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>())</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> lhs;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="structDdNode.html">BranchCond</a> *branchCond = <a class="code" href="classSVF_1_1CondManager.html#ac735eb27ed4328f97ced87494683f7f1">branchCondManager</a>.<a class="code" href="classSVF_1_1BranchCondManager.html#a7f3fa5e90c08950099ff6f05e96ecb9c">OR</a>(SVFUtil::dyn_cast&lt;BranchCondExpr&gt;(lhs)-&gt;getBranchCond(),</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; SVFUtil::dyn_cast&lt;BranchCondExpr&gt;(rhs)-&gt;getBranchCond());</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keyword">const</span> z3::expr &amp;expr = lhs-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>() || rhs-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>();</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#a0ca23ef4850f9be8abf303eafd104dab">getOrAddBranchCond</a>(expr, branchCond);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;}</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a5751792e45c8abd5ffd3610d94e9f0b7"> 163</a></span>&#160;<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* <a class="code" href="classSVF_1_1CondManager.html#a5751792e45c8abd5ffd3610d94e9f0b7">CondManager::NEG</a>(<a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* lhs){</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>())</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>();</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>())</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>();</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="structDdNode.html">BranchCond</a> *branchCond = <a class="code" href="classSVF_1_1CondManager.html#ac735eb27ed4328f97ced87494683f7f1">branchCondManager</a>.<a class="code" href="classSVF_1_1BranchCondManager.html#ad7832b33b3b73fcaca5c8278ed4d3e7f">NEG</a>(SVFUtil::dyn_cast&lt;BranchCondExpr&gt;(lhs)-&gt;getBranchCond());</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">const</span> z3::expr &amp;expr = !lhs-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#a0ca23ef4850f9be8abf303eafd104dab">getOrAddBranchCond</a>(expr, branchCond);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;}</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#ab9772aa1a35e963ccc9ce1007ebc1310"> 179</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondManager.html#ab9772aa1a35e963ccc9ce1007ebc1310">CondManager::printModel</a>()</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;{</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; std::cout &lt;&lt; <a class="code" href="classSVF_1_1CondManager.html#a771bda4bb55dd8c95a03f1a74a215126">sol</a>.check() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; z3::model m = <a class="code" href="classSVF_1_1CondManager.html#a771bda4bb55dd8c95a03f1a74a215126">sol</a>.get_model();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; m.size(); i++)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; z3::func_decl v = m[<span class="keyword">static_cast&lt;</span><a class="code" href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">s64_t</a><span class="keyword">&gt;</span>(i)];</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; std::cout &lt;&lt; v.name() &lt;&lt; <span class="stringliteral">&quot; = &quot;</span> &lt;&lt; m.get_const_interp(v) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div><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;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a8a9d3d96c2c8cfef8b9d9c27c28871f6"> 193</a></span>&#160;std::string <a class="code" href="classSVF_1_1CondManager.html#a8a9d3d96c2c8cfef8b9d9c27c28871f6">CondManager::getMemUsage</a>()</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;{</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="comment">//std::ostringstream os;</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="comment">//memory::display_max_usage(os);</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="comment">//return os.str();</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;}</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#acd773bd9dbf5161e488c827b0b71481d"> 204</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondManager.html#acd773bd9dbf5161e488c827b0b71481d">CondManager::extractSubConds</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* cond, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;support)<span class="keyword"> const</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">if</span> (cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>().num_args() == 1 &amp;&amp; <a class="code" href="classSVF_1_1CondManager.html#ad1de136dbd62c3b9a7447222bd0890fa">isNegCond</a>(cond)) {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; support.set(cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>().id());</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span> (cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>().num_args() == 0)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> (!cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>().is_true() &amp;&amp; !cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>().is_false())</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; support.set(cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>().id());</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>().num_args(); ++i) {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keyword">const</span> z3::expr &amp;expr = cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>().arg(i);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#acd773bd9dbf5161e488c827b0b71481d">extractSubConds</a>(<a class="code" href="classSVF_1_1CondManager.html#ac246b92ebdf6a9635ed79892b81b9ae8">getCond</a>(expr.id()), support);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;}</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a725d9c0a3aad4ebea3f06edf433f04ea"> 222</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondManager.html#a725d9c0a3aad4ebea3f06edf433f04ea">CondManager::isSatisfiable</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* cond){</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#a771bda4bb55dd8c95a03f1a74a215126">sol</a>.reset();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#a771bda4bb55dd8c95a03f1a74a215126">sol</a>.add(cond-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>());</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; z3::check_result <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = <a class="code" href="classSVF_1_1CondManager.html#a771bda4bb55dd8c95a03f1a74a215126">sol</a>.check();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span> (result == z3::sat || result == z3::unknown)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;}</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a6151817a6f671fa1e7814e74f7ce2e51"> 235</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1CondManager.html#a6151817a6f671fa1e7814e74f7ce2e51">CondManager::isAllPathReachable</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a>* e){</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#adef2474c65a7f9d96b27ee670136a240">isEquivalentBranchCond</a>(e, <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>());</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;}</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a385339096b4322654b5b2c7a37e852fe"> 242</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CondManager.html#a385339096b4322654b5b2c7a37e852fe">CondManager::printDbg</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *e)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;{</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; std::cout &lt;&lt; e-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;}</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classSVF_1_1CondManager.html#a907afafc19d8faa7a200bf4f1e07bb4f"> 250</a></span>&#160;std::string <a class="code" href="classSVF_1_1CondManager.html#a907afafc19d8faa7a200bf4f1e07bb4f">CondManager::dumpStr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CondExpr.html">CondExpr</a> *e)<span class="keyword"> const</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; std::ostringstream out;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; out &lt;&lt; e-&gt;<a class="code" href="classSVF_1_1CondExpr.html#ac83903c62554c6f91812d79d23ec4e23">getExpr</a>();</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> out.str();</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;</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;<a class="code" href="structDdNode.html">BranchCondManager::BranchCond</a>* <a class="code" href="classSVF_1_1BranchCondManager.html#a739f4206abf4f367dc796e9fd35d4d04">BranchCondManager::AND</a>(<a class="code" href="structDdNode.html">BranchCond</a>* lhs, <a class="code" href="structDdNode.html">BranchCond</a>* rhs)</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">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>() || rhs == <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>())</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>())</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> rhs;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>())</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">return</span> lhs;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">else</span></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; <a class="code" href="structDdNode.html">BranchCond</a>* tmp = <a class="code" href="cudd_8h.html#adfbb2fd5b9c884df0d684a86dc26a97d">Cudd_bddAndLimit</a>(m_bdd_mgr, lhs, rhs, <a class="code" href="classSVF_1_1Options.html#a344ca0e4b8d9159836e558aed44be1b4">Options::MaxBddSize</a>);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">if</span>(tmp==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVFUtil::writeWrnMsg</a>(<span class="stringliteral">&quot;exceeds max bdd size \n&quot;</span>);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">return</span> lhs;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">else</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; <a class="code" href="cudd_8h.html#a3d0d9959640235fc073699c776914fca">Cudd_Ref</a>(tmp);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">return</span> tmp;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;}</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#a7f3fa5e90c08950099ff6f05e96ecb9c"> 288</a></span>&#160;<a class="code" href="structDdNode.html">BranchCondManager::BranchCond</a>* <a class="code" href="classSVF_1_1BranchCondManager.html#a7f3fa5e90c08950099ff6f05e96ecb9c">BranchCondManager::OR</a>(<a class="code" href="structDdNode.html">BranchCond</a>* lhs, <a class="code" href="structDdNode.html">BranchCond</a>* rhs)</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;{</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>() || rhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>())</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>())</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">return</span> rhs;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhs == <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>())</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">return</span> lhs;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="structDdNode.html">BranchCond</a>* tmp = <a class="code" href="cudd_8h.html#a6cbc77f8b658ac3c88a2549a84c58b38">Cudd_bddOrLimit</a>(m_bdd_mgr, lhs, rhs, <a class="code" href="classSVF_1_1Options.html#a344ca0e4b8d9159836e558aed44be1b4">Options::MaxBddSize</a>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span>(tmp==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVFUtil::writeWrnMsg</a>(<span class="stringliteral">&quot;exceeds max bdd size \n&quot;</span>);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>();</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="cudd_8h.html#a3d0d9959640235fc073699c776914fca">Cudd_Ref</a>(tmp);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">return</span> tmp;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;}</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#ad7832b33b3b73fcaca5c8278ed4d3e7f"> 313</a></span>&#160;<a class="code" href="structDdNode.html">BranchCondManager::BranchCond</a>* <a class="code" href="classSVF_1_1BranchCondManager.html#ad7832b33b3b73fcaca5c8278ed4d3e7f">BranchCondManager::NEG</a>(<a class="code" href="structDdNode.html">BranchCond</a>* lhs)</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;{</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>())</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>();</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>())</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>();</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(lhs);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;}</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#a513a9865b87af136edf1abb1932716dd"> 328</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BranchCondManager.html#a513a9865b87af136edf1abb1932716dd">BranchCondManager::ddClearFlag</a>(<a class="code" href="structDdNode.html">BranchCond</a> * f)<span class="keyword"> const</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f-&gt;<a class="code" href="structDdNode.html#a9422352d3b46de31b325d1cf18b9f25f">next</a>))</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="comment">/* Clear visited flag. */</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; f-&gt;<a class="code" href="structDdNode.html#a9422352d3b46de31b325d1cf18b9f25f">next</a> = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f-&gt;<a class="code" href="structDdNode.html#a9422352d3b46de31b325d1cf18b9f25f">next</a>);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cuddInt_8h.html#aa5cad999b2a4a3dbbfe5c1da1d8bc028">cuddIsConstant</a>(f))</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="cuddInt_8c.html#ab69f928c3cca42f5b1330803de1d9199">ddClearFlag</a>(<a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(f));</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="cuddInt_8c.html#ab69f928c3cca42f5b1330803de1d9199">ddClearFlag</a>(<a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(<a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(f)));</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;}</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#a94f84201f91b7175907e72af2633f6f2"> 341</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BranchCondManager.html#a94f84201f91b7175907e72af2633f6f2">BranchCondManager::BddSupportStep</a>(<a class="code" href="structDdNode.html">BranchCond</a> * f, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;support)<span class="keyword"> const</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="cuddInt_8h.html#aa5cad999b2a4a3dbbfe5c1da1d8bc028">cuddIsConstant</a>(f) || <a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f-&gt;<a class="code" href="structDdNode.html#a9422352d3b46de31b325d1cf18b9f25f">next</a>))</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; support.set(f-&gt;<a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; BddSupportStep(<a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(f), support);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; BddSupportStep(<a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(<a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(f)), support);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="comment">/* Mark as visited. */</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; f-&gt;<a class="code" href="structDdNode.html#a9422352d3b46de31b325d1cf18b9f25f">next</a> = <a class="code" href="cudd_8h.html#ac4575f4314998362765264f64eccfe0c">Cudd_Complement</a>(f-&gt;<a class="code" href="structDdNode.html#a9422352d3b46de31b325d1cf18b9f25f">next</a>);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;}</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#aa241ee8c9d8ef17029dba67b737d8beb"> 354</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BranchCondManager.html#aa241ee8c9d8ef17029dba67b737d8beb">BranchCondManager::extractSubConds</a>(<a class="code" href="structDdNode.html">BranchCond</a> * f, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;support)<span class="keyword"> const</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; BddSupportStep( <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f), support);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="cuddInt_8c.html#ab69f928c3cca42f5b1330803de1d9199">ddClearFlag</a>(<a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f));</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;}</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#a2f745f39ea76d3cce7581cd4e260561d"> 363</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BranchCondManager.html#a2f745f39ea76d3cce7581cd4e260561d">BranchCondManager::dump</a>(<a class="code" href="structDdNode.html">BranchCond</a>* lhs, <a class="code" href="namespaceSVF.html#a424cc053c29ad7303699c529d1a2cc71">raw_ostream</a> &amp; O)</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="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>())</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; O &lt;&lt; <span class="stringliteral">&quot;T&quot;</span>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> support;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#acd773bd9dbf5161e488c827b0b71481d">extractSubConds</a>(lhs, support);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">for</span> (NodeBS::iterator iter = support.begin(); iter != support.end();</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; ++iter)</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="keywordtype">unsigned</span> rid = *iter;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; O &lt;&lt; rid &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;}</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="classSVF_1_1BranchCondManager.html#a930ece842bcdab283fb27e2a053bc8de"> 383</a></span>&#160;std::string <a class="code" href="classSVF_1_1BranchCondManager.html#a930ece842bcdab283fb27e2a053bc8de">BranchCondManager::dumpStr</a>(<a class="code" href="structDdNode.html">BranchCond</a>* lhs)<span class="keyword"> const</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; std::string str;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>())</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; str += <span class="stringliteral">&quot;T&quot;</span>;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> support;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classSVF_1_1CondManager.html#acd773bd9dbf5161e488c827b0b71481d">extractSubConds</a>(lhs, support);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">for</span> (NodeBS::iterator iter = support.begin(); iter != support.end();</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; ++iter)</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordtype">unsigned</span> rid = *iter;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordtype">char</span> int2str[16];</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; sprintf(int2str, <span class="stringliteral">&quot;%d&quot;</span>, rid);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; str += int2str;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; str += <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</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; <span class="keywordflow">return</span> str;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;}</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;</div><div class="ttc" id="classSVF_1_1BranchCondManager_html_a6c807df0d5627d3afda2359b658bc97c"><div class="ttname"><a href="classSVF_1_1BranchCondManager.html#a6c807df0d5627d3afda2359b658bc97c">SVF::BranchCondManager::createCond</a></div><div class="ttdeci">BranchCond * createCond(u32_t i)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00130">Conditions.h:130</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1CondManager_html_a0ba3cf86743de62bcd5fd38d8166bc90"><div class="ttname"><a href="classSVF_1_1CondManager.html#a0ba3cf86743de62bcd5fd38d8166bc90">SVF::CondManager::falseCond</a></div><div class="ttdeci">static CondExpr * falseCond</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00305">Conditions.h:305</a></div></div>
71
71
  <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>
72
72
  <div class="ttc" id="classSVF_1_1BranchCondManager_html_ac6fb7493ceb44406a4bd6a62a60a6363"><div class="ttname"><a href="classSVF_1_1BranchCondManager.html#ac6fb7493ceb44406a4bd6a62a60a6363">SVF::BranchCondManager::getTrueCond</a></div><div class="ttdeci">BranchCond * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00134">Conditions.h:134</a></div></div>
@@ -81,7 +81,6 @@ $(function() {
81
81
  <div class="ttc" id="classSVF_1_1CondManager_html_a087773d6ae6ed6af009a356dd7b61e11"><div class="ttname"><a href="classSVF_1_1CondManager.html#a087773d6ae6ed6af009a356dd7b61e11">SVF::CondManager::cxt</a></div><div class="ttdeci">z3::context cxt</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00302">Conditions.h:302</a></div></div>
82
82
  <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>
83
83
  <div class="ttc" id="cudd_8h_html_afbbecf4f6f78f92518f4d0a477d870b6"><div class="ttname"><a href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a></div><div class="ttdeci">#define Cudd_Regular(node)</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00373">cudd.h:373</a></div></div>
84
- <div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00077">SVFBasicTypes.h:77</a></div></div>
85
84
  <div class="ttc" id="SVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
86
85
  <div class="ttc" id="classSVF_1_1CondManager_html_ac735eb27ed4328f97ced87494683f7f1"><div class="ttname"><a href="classSVF_1_1CondManager.html#ac735eb27ed4328f97ced87494683f7f1">SVF::CondManager::branchCondManager</a></div><div class="ttdeci">BranchCondManager branchCondManager</div><div class="ttdoc">branch condition manager </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00309">Conditions.h:309</a></div></div>
87
86
  <div class="ttc" id="classSVF_1_1CondManager_html_aa307bb05b92907ccf8859b4bac53b796"><div class="ttname"><a href="classSVF_1_1CondManager.html#aa307bb05b92907ccf8859b4bac53b796">SVF::CondManager::CondManager</a></div><div class="ttdeci">CondManager()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8cpp_source.html#l00046">Conditions.cpp:46</a></div></div>
@@ -89,6 +88,7 @@ $(function() {
89
88
  <div class="ttc" id="cudd_8h_html_adfbb2fd5b9c884df0d684a86dc26a97d"><div class="ttname"><a href="cudd_8h.html#adfbb2fd5b9c884df0d684a86dc26a97d">Cudd_bddAndLimit</a></div><div class="ttdeci">DdNode * Cudd_bddAndLimit(DdManager *dd, DdNode *f, DdNode *g, unsigned int limit)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l03146">cuddInt.c:3146</a></div></div>
90
89
  <div class="ttc" id="cudd_8h_html_a6cbc77f8b658ac3c88a2549a84c58b38"><div class="ttname"><a href="cudd_8h.html#a6cbc77f8b658ac3c88a2549a84c58b38">Cudd_bddOrLimit</a></div><div class="ttdeci">DdNode * Cudd_bddOrLimit(DdManager *dd, DdNode *f, DdNode *g, unsigned int limit)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l03214">cuddInt.c:3214</a></div></div>
91
90
  <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>
91
+ <div class="ttc" id="namespaceSVF_html_abe09d99af006554a5c00803e9a89f9a6"><div class="ttname"><a href="namespaceSVF.html#abe09d99af006554a5c00803e9a89f9a6">SVF::s64_t</a></div><div class="ttdeci">signed s64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00078">SVFBasicTypes.h:78</a></div></div>
92
92
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a077caa1b10ab84d101d79fc7ea50db2d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVF::SVFUtil::writeWrnMsg</a></div><div class="ttdeci">void writeWrnMsg(std::string msg)</div><div class="ttdoc">Writes a message run through wrnMsg. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00069">SVFUtil.cpp:69</a></div></div>
93
93
  <div class="ttc" id="classSVF_1_1CondExpr_html"><div class="ttname"><a href="classSVF_1_1CondExpr.html">SVF::CondExpr</a></div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00042">Conditions.h:42</a></div></div>
94
94
  <div class="ttc" id="classSVF_1_1BranchCondManager_html_aa241ee8c9d8ef17029dba67b737d8beb"><div class="ttname"><a href="classSVF_1_1BranchCondManager.html#aa241ee8c9d8ef17029dba67b737d8beb">SVF::BranchCondManager::extractSubConds</a></div><div class="ttdeci">void extractSubConds(BranchCond *f, NodeBS &amp;support) const</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8cpp_source.html#l00354">Conditions.cpp:354</a></div></div>