svf-tools 1.0.438 → 1.0.439
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.
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/BDDExpr_8cpp.html +81 -0
- package/SVF-doxygen/html/html/BDDExpr_8cpp_source.html +122 -0
- package/SVF-doxygen/html/html/BDDExpr_8h.html +98 -0
- package/SVF-doxygen/html/html/BDDExpr_8h_source.html +131 -0
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/DPItem_8h.html +1 -1
- package/SVF-doxygen/html/html/DPItem_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ExeState_8cpp.html +82 -0
- package/SVF-doxygen/html/html/ExeState_8cpp_source.html +127 -0
- package/SVF-doxygen/html/html/ExeState_8h.html +139 -0
- package/SVF-doxygen/html/html/ExeState_8h_source.html +128 -0
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8cpp.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/IRAnnotator_8h.html +2 -2
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Options_8cpp_source.html +113 -114
- package/SVF-doxygen/html/html/Options_8h.html +0 -1
- package/SVF-doxygen/html/html/Options_8h_source.html +115 -117
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +4 -5
- package/SVF-doxygen/html/html/PathCondAllocator_8h.html +1 -1
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +24 -24
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8cpp.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SrcSnkDDA_8h.html +3 -3
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +6 -6
- package/SVF-doxygen/html/html/SrcSnkSolver_8h.html +96 -0
- package/SVF-doxygen/html/html/SrcSnkSolver_8h_source.html +113 -0
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp.html +3 -3
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h.html +2 -2
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/Z3Expr_8h.html +99 -0
- package/SVF-doxygen/html/html/Z3Expr_8h_source.html +126 -0
- package/SVF-doxygen/html/html/annotated.html +272 -275
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1BDDExprManager-members.html +117 -0
- package/SVF-doxygen/html/html/classSVF_1_1BDDExprManager.html +1318 -0
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +0 -9
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1DPItem.html +3 -4
- package/SVF-doxygen/html/html/classSVF_1_1DPItem.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +76 -76
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +64 -64
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1ExeState-members.html +111 -0
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +1173 -0
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +78 -78
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +64 -64
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +74 -74
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +68 -68
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +102 -103
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +115 -141
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +131 -132
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +66 -66
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +86 -86
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkSolver-members.html +106 -0
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkSolver.html +937 -0
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkSolver.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1StmtDPItem.html +2 -3
- package/SVF-doxygen/html/html/classSVF_1_1StmtDPItem.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1Z3Expr-members.html +46 -15
- package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +1451 -104
- package/SVF-doxygen/html/html/classes.html +96 -96
- package/SVF-doxygen/html/html/dir_66541c162fd98954e2c32089ba9a721f.html +2 -0
- package/SVF-doxygen/html/html/dir_770a542efe75a1b68c109cb4e4290224.html +2 -0
- package/SVF-doxygen/html/html/dir_862d3276083eaac55caed79b9120bf29.html +4 -4
- package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +6 -10
- package/SVF-doxygen/html/html/dir_ea25a8a5b2904424d8a51916f8b475b2.html +2 -0
- package/SVF-doxygen/html/html/dir_fdb79cd259bf25322a80ea604c9317b5.html +2 -0
- package/SVF-doxygen/html/html/files.html +42 -40
- package/SVF-doxygen/html/html/functions.html +2 -2
- package/SVF-doxygen/html/html/functions_0x7e.html +9 -21
- package/SVF-doxygen/html/html/functions_a.html +8 -16
- package/SVF-doxygen/html/html/functions_b.html +21 -34
- package/SVF-doxygen/html/html/functions_c.html +33 -63
- package/SVF-doxygen/html/html/functions_d.html +3 -6
- package/SVF-doxygen/html/html/functions_e.html +11 -13
- package/SVF-doxygen/html/html/functions_enum.html +0 -6
- package/SVF-doxygen/html/html/functions_eval_b.html +0 -6
- package/SVF-doxygen/html/html/functions_f.html +6 -6
- package/SVF-doxygen/html/html/functions_func.html +8 -19
- package/SVF-doxygen/html/html/functions_func_0x7e.html +9 -21
- package/SVF-doxygen/html/html/functions_func_b.html +12 -15
- package/SVF-doxygen/html/html/functions_func_c.html +23 -38
- package/SVF-doxygen/html/html/functions_func_d.html +4 -7
- package/SVF-doxygen/html/html/functions_func_e.html +5 -4
- package/SVF-doxygen/html/html/functions_func_f.html +5 -5
- package/SVF-doxygen/html/html/functions_func_g.html +48 -49
- package/SVF-doxygen/html/html/functions_func_h.html +2 -7
- package/SVF-doxygen/html/html/functions_func_i.html +33 -21
- package/SVF-doxygen/html/html/functions_func_l.html +6 -3
- package/SVF-doxygen/html/html/functions_func_m.html +0 -1
- package/SVF-doxygen/html/html/functions_func_n.html +5 -4
- package/SVF-doxygen/html/html/functions_func_o.html +11 -13
- package/SVF-doxygen/html/html/functions_func_p.html +7 -17
- package/SVF-doxygen/html/html/functions_func_r.html +8 -5
- package/SVF-doxygen/html/html/functions_func_s.html +16 -13
- package/SVF-doxygen/html/html/functions_func_t.html +3 -1
- package/SVF-doxygen/html/html/functions_func_v.html +1 -7
- package/SVF-doxygen/html/html/functions_func_z.html +3 -3
- package/SVF-doxygen/html/html/functions_g.html +51 -52
- package/SVF-doxygen/html/html/functions_h.html +3 -8
- package/SVF-doxygen/html/html/functions_i.html +44 -32
- package/SVF-doxygen/html/html/functions_l.html +18 -7
- package/SVF-doxygen/html/html/functions_m.html +2 -3
- package/SVF-doxygen/html/html/functions_n.html +10 -12
- package/SVF-doxygen/html/html/functions_o.html +64 -24
- package/SVF-doxygen/html/html/functions_p.html +24 -34
- package/SVF-doxygen/html/html/functions_r.html +8 -7
- package/SVF-doxygen/html/html/functions_rela.html +78 -4
- package/SVF-doxygen/html/html/functions_s.html +31 -26
- package/SVF-doxygen/html/html/functions_t.html +9 -9
- package/SVF-doxygen/html/html/functions_type_b.html +2 -6
- package/SVF-doxygen/html/html/functions_type_c.html +4 -4
- package/SVF-doxygen/html/html/functions_type_e.html +0 -3
- package/SVF-doxygen/html/html/functions_type_g.html +5 -5
- package/SVF-doxygen/html/html/functions_type_i.html +4 -7
- package/SVF-doxygen/html/html/functions_type_l.html +3 -0
- package/SVF-doxygen/html/html/functions_type_n.html +2 -2
- package/SVF-doxygen/html/html/functions_type_p.html +0 -4
- package/SVF-doxygen/html/html/functions_type_v.html +3 -0
- package/SVF-doxygen/html/html/functions_type_w.html +2 -2
- package/SVF-doxygen/html/html/functions_v.html +10 -13
- package/SVF-doxygen/html/html/functions_vars.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_b.html +2 -5
- package/SVF-doxygen/html/html/functions_vars_c.html +3 -10
- package/SVF-doxygen/html/html/functions_vars_e.html +1 -4
- package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_i.html +1 -4
- package/SVF-doxygen/html/html/functions_vars_l.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_n.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_p.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_s.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_t.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_v.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_w.html +1 -1
- package/SVF-doxygen/html/html/functions_w.html +12 -8
- package/SVF-doxygen/html/html/functions_z.html +3 -13
- package/SVF-doxygen/html/html/globals.html +3 -0
- package/SVF-doxygen/html/html/globals_defs.html +3 -0
- package/SVF-doxygen/html/html/globals_defs_f.html +3 -0
- package/SVF-doxygen/html/html/globals_f.html +5 -2
- package/SVF-doxygen/html/html/globals_s.html +6 -6
- package/SVF-doxygen/html/html/hierarchy.html +422 -425
- package/SVF-doxygen/html/html/menudata.js +4 -4
- package/SVF-doxygen/html/html/namespaceSVF.html +10 -57
- package/SVF-doxygen/html/html/namespacemembers_c.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_type.html +1 -7
- package/SVF-doxygen/html/html/namespacemembers_v.html +0 -6
- package/SVF-doxygen/html/html/search/all_0.js +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +3 -4
- package/SVF-doxygen/html/html/search/all_10.js +12 -17
- package/SVF-doxygen/html/html/search/all_12.js +3 -2
- package/SVF-doxygen/html/html/search/all_13.js +18 -17
- package/SVF-doxygen/html/html/search/all_14.js +7 -6
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +3 -6
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_1a.js +3 -5
- package/SVF-doxygen/html/html/search/all_1b.js +4 -8
- package/SVF-doxygen/html/html/search/all_2.js +13 -14
- package/SVF-doxygen/html/html/search/all_3.js +14 -24
- package/SVF-doxygen/html/html/search/all_4.js +3 -3
- package/SVF-doxygen/html/html/search/all_5.js +7 -4
- package/SVF-doxygen/html/html/search/all_6.js +5 -4
- package/SVF-doxygen/html/html/search/all_7.js +28 -25
- package/SVF-doxygen/html/html/search/all_8.js +4 -3
- package/SVF-doxygen/html/html/search/all_9.js +18 -12
- package/SVF-doxygen/html/html/search/all_c.js +4 -2
- package/SVF-doxygen/html/html/search/all_d.js +2 -2
- package/SVF-doxygen/html/html/search/all_e.js +5 -5
- package/SVF-doxygen/html/html/search/all_f.js +25 -16
- package/SVF-doxygen/html/html/search/classes_1.js +1 -2
- package/SVF-doxygen/html/html/search/classes_12.js +1 -2
- package/SVF-doxygen/html/html/search/classes_14.js +1 -2
- package/SVF-doxygen/html/html/search/classes_2.js +0 -3
- package/SVF-doxygen/html/html/search/classes_4.js +1 -0
- package/SVF-doxygen/html/html/search/classes_7.js +3 -1
- package/SVF-doxygen/html/html/search/classes_d.js +0 -1
- package/SVF-doxygen/html/html/search/classes_f.js +1 -0
- package/SVF-doxygen/html/html/search/defines_0.js +1 -0
- package/SVF-doxygen/html/html/search/defines_5.js +1 -0
- package/SVF-doxygen/html/html/search/enums_1.js +0 -2
- package/SVF-doxygen/html/html/search/enumvalues_1.js +0 -2
- package/SVF-doxygen/html/html/search/files_1.js +2 -0
- package/SVF-doxygen/html/html/search/files_12.html +26 -0
- package/SVF-doxygen/html/html/search/files_12.js +4 -0
- package/SVF-doxygen/html/html/search/files_2.js +0 -3
- package/SVF-doxygen/html/html/search/files_4.js +2 -0
- package/SVF-doxygen/html/html/search/files_c.js +0 -1
- package/SVF-doxygen/html/html/search/files_d.js +1 -0
- package/SVF-doxygen/html/html/search/functions_0.js +1 -4
- package/SVF-doxygen/html/html/search/functions_1.js +8 -9
- package/SVF-doxygen/html/html/search/functions_10.js +7 -6
- package/SVF-doxygen/html/html/search/functions_11.js +2 -1
- package/SVF-doxygen/html/html/search/functions_13.js +0 -2
- package/SVF-doxygen/html/html/search/functions_15.js +2 -2
- package/SVF-doxygen/html/html/search/functions_16.js +4 -8
- package/SVF-doxygen/html/html/search/functions_2.js +5 -8
- package/SVF-doxygen/html/html/search/functions_3.js +3 -3
- package/SVF-doxygen/html/html/search/functions_4.js +2 -1
- package/SVF-doxygen/html/html/search/functions_5.js +3 -3
- package/SVF-doxygen/html/html/search/functions_6.js +25 -22
- package/SVF-doxygen/html/html/search/functions_7.js +2 -3
- package/SVF-doxygen/html/html/search/functions_8.js +12 -6
- package/SVF-doxygen/html/html/search/functions_a.js +1 -0
- package/SVF-doxygen/html/html/search/functions_b.js +1 -1
- package/SVF-doxygen/html/html/search/functions_c.js +2 -1
- package/SVF-doxygen/html/html/search/functions_d.js +7 -7
- package/SVF-doxygen/html/html/search/functions_e.js +5 -8
- package/SVF-doxygen/html/html/search/functions_f.js +2 -1
- package/SVF-doxygen/html/html/search/related_0.js +1 -2
- package/SVF-doxygen/html/html/search/related_1.js +1 -2
- package/SVF-doxygen/html/html/search/related_2.js +1 -1
- package/SVF-doxygen/html/html/search/related_3.js +2 -1
- package/SVF-doxygen/html/html/search/related_4.js +2 -2
- package/SVF-doxygen/html/html/search/related_5.js +1 -2
- package/SVF-doxygen/html/html/search/related_6.js +4 -1
- package/SVF-doxygen/html/html/search/related_7.js +2 -4
- package/SVF-doxygen/html/html/search/related_8.js +18 -1
- package/SVF-doxygen/html/html/search/related_9.js +4 -6
- package/SVF-doxygen/html/html/search/related_a.js +1 -2
- package/SVF-doxygen/html/html/search/related_b.js +7 -2
- package/SVF-doxygen/html/html/search/related_c.html +26 -0
- package/SVF-doxygen/html/html/search/related_c.js +5 -0
- package/SVF-doxygen/html/html/search/related_d.html +26 -0
- package/SVF-doxygen/html/html/search/related_d.js +5 -0
- package/SVF-doxygen/html/html/search/searchdata.js +4 -4
- package/SVF-doxygen/html/html/search/typedefs_1.js +1 -2
- package/SVF-doxygen/html/html/search/typedefs_14.js +1 -2
- package/SVF-doxygen/html/html/search/typedefs_15.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_2.js +4 -4
- package/SVF-doxygen/html/html/search/typedefs_4.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_6.js +3 -3
- package/SVF-doxygen/html/html/search/typedefs_8.js +3 -4
- package/SVF-doxygen/html/html/search/typedefs_b.js +1 -0
- package/SVF-doxygen/html/html/search/typedefs_d.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_f.js +0 -1
- package/SVF-doxygen/html/html/search/variables_0.js +1 -1
- package/SVF-doxygen/html/html/search/variables_10.js +1 -1
- package/SVF-doxygen/html/html/search/variables_13.js +0 -1
- package/SVF-doxygen/html/html/search/variables_14.js +3 -3
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/search/variables_16.js +1 -1
- package/SVF-doxygen/html/html/search/variables_17.js +1 -1
- package/SVF-doxygen/html/html/search/variables_2.js +1 -2
- package/SVF-doxygen/html/html/search/variables_3.js +4 -6
- package/SVF-doxygen/html/html/search/variables_5.js +1 -2
- package/SVF-doxygen/html/html/search/variables_6.js +1 -1
- package/SVF-doxygen/html/html/search/variables_9.js +1 -2
- package/SVF-doxygen/html/html/search/variables_c.js +1 -0
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +1 -2
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1ExeState_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1ExeState_01_4.html +131 -0
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1Z3Expr_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1Z3Expr_01_4.html +131 -0
- package/include/SABER/PathCondAllocator.h +4 -4
- package/include/SABER/SrcSnkDDA.h +2 -2
- package/include/{Util/CFLSolver.h → SABER/SrcSnkSolver.h} +5 -5
- package/include/{Util → SVF-FE}/IRAnnotator.h +0 -0
- package/include/Util/BDDExpr.h +182 -0
- package/include/Util/DPItem.h +1 -1
- package/include/Util/ExeState.h +172 -0
- package/include/Util/Options.h +0 -3
- package/include/Util/Z3Expr.h +235 -0
- package/include/WPA/FlowSensitiveTBHC.h +1 -1
- package/include/{Util → WPA}/TypeBasedHeapCloning.h +0 -0
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
- package/lib/SABER/PathCondAllocator.cpp +1 -1
- package/lib/Util/BDDExpr.cpp +206 -0
- package/lib/Util/ExeState.cpp +248 -0
- package/lib/Util/Options.cpp +0 -11
- package/lib/Util/SVFUtil.cpp +1 -1
- package/lib/WPA/FlowSensitive.cpp +1 -1
- package/lib/{Util → WPA}/TypeBasedHeapCloning.cpp +1 -1
- package/package.json +1 -1
- package/include/Util/Conditions.h +0 -421
- package/include/Util/PathDPItem.h +0 -310
- package/lib/Util/Conditions.cpp +0 -440
|
@@ -1,421 +0,0 @@
|
|
|
1
|
-
//===- Conditions.h -- Context/Path BDD conditions----------------------------//
|
|
2
|
-
//
|
|
3
|
-
// SVF: Static Value-Flow Analysis
|
|
4
|
-
//
|
|
5
|
-
// Copyright (C) <2013-2017> <Yulei Sui>
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
// This program is free software: you can redistribute it and/or modify
|
|
9
|
-
// it under the terms of the GNU General Public License as published by
|
|
10
|
-
// the Free Software Foundation, either version 3 of the License, or
|
|
11
|
-
// (at your option) any later version.
|
|
12
|
-
|
|
13
|
-
// This program is distributed in the hope that it will be useful,
|
|
14
|
-
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
-
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
-
// GNU General Public License for more details.
|
|
17
|
-
|
|
18
|
-
// You should have received a copy of the GNU General Public License
|
|
19
|
-
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
20
|
-
//
|
|
21
|
-
//===----------------------------------------------------------------------===//
|
|
22
|
-
|
|
23
|
-
/*
|
|
24
|
-
* Condition.h
|
|
25
|
-
*
|
|
26
|
-
* Created on: Oct 19, 2021
|
|
27
|
-
* Author: Yulei and Xiao
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
#ifndef BITVECTORCOND_H_
|
|
31
|
-
#define BITVECTORCOND_H_
|
|
32
|
-
|
|
33
|
-
#include "Util/BasicTypes.h"
|
|
34
|
-
#include <cstdio>
|
|
35
|
-
|
|
36
|
-
#include "CUDD/cuddInt.h"
|
|
37
|
-
#include "z3++.h"
|
|
38
|
-
|
|
39
|
-
namespace SVF {
|
|
40
|
-
|
|
41
|
-
class CondExpr {
|
|
42
|
-
public:
|
|
43
|
-
|
|
44
|
-
enum CondExprKind {
|
|
45
|
-
BDDK, Z3K
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
CondExpr(CondExprKind _k) : condExprK(_k) {
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
virtual ~CondExpr() {
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/// get Condition kind
|
|
56
|
-
inline CondExprKind getCondKind() const {
|
|
57
|
-
return condExprK;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
private:
|
|
61
|
-
CondExprKind condExprK;
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
class Z3Expr : public CondExpr {
|
|
65
|
-
public:
|
|
66
|
-
typedef z3::expr Z3Cond;
|
|
67
|
-
|
|
68
|
-
Z3Expr(const z3::expr &_e) : CondExpr(Z3K), e(_e) {
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
virtual ~Z3Expr() {
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
const Z3Cond &getExpr() const {
|
|
76
|
-
return e;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/// get ctx
|
|
80
|
-
inline z3::context &getContext() const {
|
|
81
|
-
return getExpr().ctx();
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/// get id
|
|
85
|
-
inline NodeID getId() const {
|
|
86
|
-
return getExpr().id();
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
90
|
-
//@{
|
|
91
|
-
static inline bool classof(const Z3Expr *) {
|
|
92
|
-
return true;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
static inline bool classof(const CondExpr *cond) {
|
|
96
|
-
return cond->getCondKind() == Z3K;
|
|
97
|
-
}
|
|
98
|
-
//@}
|
|
99
|
-
|
|
100
|
-
private:
|
|
101
|
-
Z3Cond e;
|
|
102
|
-
|
|
103
|
-
};
|
|
104
|
-
|
|
105
|
-
class BDDExpr : public CondExpr {
|
|
106
|
-
|
|
107
|
-
public:
|
|
108
|
-
typedef DdNode BDDCond;
|
|
109
|
-
|
|
110
|
-
BDDExpr(BDDCond *_bddCond) : CondExpr(BDDK), bddCond(_bddCond) {
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/// get BDD condition
|
|
114
|
-
BDDCond *getBDDCond() const {
|
|
115
|
-
return bddCond;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
119
|
-
//@{
|
|
120
|
-
static inline bool classof(const BDDExpr *) {
|
|
121
|
-
return true;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
static inline bool classof(const CondExpr *cond) {
|
|
125
|
-
return cond->getCondKind() == BDDK;
|
|
126
|
-
}
|
|
127
|
-
//@}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
private:
|
|
131
|
-
BDDCond *bddCond;
|
|
132
|
-
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
class CondManager {
|
|
136
|
-
|
|
137
|
-
public:
|
|
138
|
-
enum CondMgrKind {
|
|
139
|
-
BDDMgrK, Z3MgrK
|
|
140
|
-
};
|
|
141
|
-
|
|
142
|
-
private:
|
|
143
|
-
static CondManager *condMgr;
|
|
144
|
-
|
|
145
|
-
protected:
|
|
146
|
-
/// Constructor
|
|
147
|
-
CondManager() {}
|
|
148
|
-
|
|
149
|
-
public:
|
|
150
|
-
typedef Map<const CondExpr *, const Instruction *> CondToTermInstMap; // map a condition to its branch instruction
|
|
151
|
-
static u32_t totalCondNum; // a counter for fresh condition
|
|
152
|
-
/// Singleton design here to make sure we only have one instance during any analysis
|
|
153
|
-
//@{
|
|
154
|
-
static CondManager *getCondMgr(CondMgrKind _condMgrKind);
|
|
155
|
-
|
|
156
|
-
static void releaseCondMgr() {
|
|
157
|
-
delete condMgr;
|
|
158
|
-
condMgr = nullptr;
|
|
159
|
-
}
|
|
160
|
-
//@}
|
|
161
|
-
|
|
162
|
-
/// Destructor
|
|
163
|
-
virtual ~CondManager() {};
|
|
164
|
-
|
|
165
|
-
/// Create a fresh condition to encode each program branch
|
|
166
|
-
virtual CondExpr *createFreshBranchCond(const Instruction *inst) = 0;
|
|
167
|
-
|
|
168
|
-
/// Return the number of condition expressions
|
|
169
|
-
virtual u32_t getCondNumber() = 0;
|
|
170
|
-
|
|
171
|
-
/// Return the unique true condition
|
|
172
|
-
inline CondExpr *getTrueCond() const {
|
|
173
|
-
return trueCond;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
/// Return the unique false condition
|
|
177
|
-
inline CondExpr *getFalseCond() const {
|
|
178
|
-
return falseCond;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
/// Operations on conditions.
|
|
182
|
-
//@{
|
|
183
|
-
virtual CondExpr *AND(CondExpr *lhs, CondExpr *rhs) = 0;
|
|
184
|
-
|
|
185
|
-
virtual CondExpr *OR(CondExpr *lhs, CondExpr *rhs) = 0;
|
|
186
|
-
|
|
187
|
-
virtual CondExpr *NEG(CondExpr *lhs) = 0;
|
|
188
|
-
//@}
|
|
189
|
-
|
|
190
|
-
virtual bool isNegCond(const CondExpr *cond) const = 0;
|
|
191
|
-
|
|
192
|
-
/// Whether the condition is satisfiable
|
|
193
|
-
virtual bool isSatisfiable(const CondExpr *cond) = 0;
|
|
194
|
-
|
|
195
|
-
/// Whether lhs and rhs are equivalent branch conditions
|
|
196
|
-
virtual bool isEquivalentBranchCond(const CondExpr *lhs, const CondExpr *rhs) = 0;
|
|
197
|
-
|
|
198
|
-
/// Whether **All Paths** are reachable
|
|
199
|
-
bool isAllPathReachable(const CondExpr *e);
|
|
200
|
-
|
|
201
|
-
/// Get condition using condition id (z3 ast id)
|
|
202
|
-
virtual CondExpr *getCond(u32_t id) const = 0;
|
|
203
|
-
|
|
204
|
-
/// Get/Set llvm conditional expression
|
|
205
|
-
//{@
|
|
206
|
-
inline const Instruction *getCondInst(const CondExpr *cond) const {
|
|
207
|
-
CondToTermInstMap::const_iterator it = condToInstMap.find(cond);
|
|
208
|
-
assert(it != condToInstMap.end() && "this should be a fresh condition");
|
|
209
|
-
return it->second;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
inline void setCondInst(const CondExpr *cond, const Instruction *inst) {
|
|
213
|
-
assert(condToInstMap.find(cond) == condToInstMap.end() && "this should be a fresh condition");
|
|
214
|
-
condToInstMap[cond] = inst;
|
|
215
|
-
}
|
|
216
|
-
//@}
|
|
217
|
-
|
|
218
|
-
/// Return memory usage for this condition manager
|
|
219
|
-
virtual std::string getMemUsage() = 0;
|
|
220
|
-
|
|
221
|
-
/// Return string format of this expression
|
|
222
|
-
virtual std::string dumpStr(const CondExpr *e) const = 0;
|
|
223
|
-
|
|
224
|
-
/// Extract sub conditions of this expression
|
|
225
|
-
virtual void extractSubConds(const CondExpr *cond, NodeBS &support) const = 0;
|
|
226
|
-
|
|
227
|
-
protected:
|
|
228
|
-
static CondExpr *trueCond;
|
|
229
|
-
static CondExpr *falseCond;
|
|
230
|
-
|
|
231
|
-
private:
|
|
232
|
-
|
|
233
|
-
CondToTermInstMap condToInstMap; ///< map condition to llvm instruction
|
|
234
|
-
|
|
235
|
-
};
|
|
236
|
-
|
|
237
|
-
/**
|
|
238
|
-
* Z3 Condition Manager
|
|
239
|
-
*/
|
|
240
|
-
class Z3Manager : public CondManager {
|
|
241
|
-
friend class CondManager;
|
|
242
|
-
|
|
243
|
-
public:
|
|
244
|
-
typedef Z3Expr::Z3Cond Z3Cond;
|
|
245
|
-
typedef Map<u32_t, Z3Expr *> IDToCondExprMap;
|
|
246
|
-
|
|
247
|
-
private:
|
|
248
|
-
/// Constructor
|
|
249
|
-
Z3Manager();
|
|
250
|
-
|
|
251
|
-
IDToCondExprMap idToCondExprMap;
|
|
252
|
-
z3::context cxt;
|
|
253
|
-
z3::solver sol;
|
|
254
|
-
NodeBS negConds;
|
|
255
|
-
|
|
256
|
-
public:
|
|
257
|
-
|
|
258
|
-
/// Destructor
|
|
259
|
-
virtual ~Z3Manager();
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
inline u32_t getCondNumber() override {
|
|
263
|
-
return sol.get_model().size();
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
/// Preprocess the condition, e.g., Compressing using And-Inverter-Graph
|
|
267
|
-
z3::expr simplify(const z3::expr &expr) const;
|
|
268
|
-
|
|
269
|
-
/// Given an id, get its condition
|
|
270
|
-
CondExpr *getCond(u32_t i) const override {
|
|
271
|
-
auto it = idToCondExprMap.find(i);
|
|
272
|
-
assert(it != idToCondExprMap.end() && "condition not found!");
|
|
273
|
-
return it->second;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
CondExpr *createFreshBranchCond(const Instruction *inst) override;
|
|
277
|
-
|
|
278
|
-
Z3Expr *getOrAddZ3Cond(const Z3Cond &z3Cond);
|
|
279
|
-
|
|
280
|
-
/// Operations on conditions.
|
|
281
|
-
//@{
|
|
282
|
-
CondExpr *AND(CondExpr *lhs, CondExpr *rhs) override;
|
|
283
|
-
|
|
284
|
-
CondExpr *OR(CondExpr *lhs, CondExpr *rhs) override;
|
|
285
|
-
|
|
286
|
-
CondExpr *NEG(CondExpr *lhs) override;
|
|
287
|
-
//@}
|
|
288
|
-
|
|
289
|
-
bool isSatisfiable(const CondExpr *cond) override;
|
|
290
|
-
|
|
291
|
-
bool isEquivalentBranchCond(const CondExpr *lhs, const CondExpr *rhs) override;
|
|
292
|
-
|
|
293
|
-
inline void setNegCondInst(const CondExpr *cond, const Instruction *inst) {
|
|
294
|
-
setCondInst(cond, inst);
|
|
295
|
-
const Z3Expr *z3CondExpr = SVFUtil::dyn_cast<Z3Expr>(cond);
|
|
296
|
-
assert(z3CondExpr && "not z3 condition.");
|
|
297
|
-
negConds.set(z3CondExpr->getId());
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
bool isNegCond(const CondExpr *cond) const override {
|
|
301
|
-
const Z3Expr *z3CondExpr = SVFUtil::dyn_cast<Z3Expr>(cond);
|
|
302
|
-
assert(z3CondExpr && "not z3 condition.");
|
|
303
|
-
return negConds.test(z3CondExpr->getId());
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
void extractSubConds(const CondExpr *f, NodeBS &support) const override;
|
|
307
|
-
|
|
308
|
-
std::string dumpStr(const CondExpr *e) const override;
|
|
309
|
-
|
|
310
|
-
inline std::string getMemUsage() override {
|
|
311
|
-
return "";
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
/// Print out one particular expression
|
|
315
|
-
void printDbg(const CondExpr *e);
|
|
316
|
-
|
|
317
|
-
/// Dump out all expressions
|
|
318
|
-
void printModel();
|
|
319
|
-
};
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
/**
|
|
323
|
-
* BDD Condition Manager
|
|
324
|
-
*/
|
|
325
|
-
class BDDManager : public CondManager {
|
|
326
|
-
friend class CondManager;
|
|
327
|
-
|
|
328
|
-
public:
|
|
329
|
-
typedef BDDExpr::BDDCond BDDCond;
|
|
330
|
-
typedef Map<BDDCond *, BDDExpr *> BDDToBDDCondExpr;
|
|
331
|
-
typedef Map<u32_t, BDDCond *> IndexToBDDCond;
|
|
332
|
-
|
|
333
|
-
private:
|
|
334
|
-
|
|
335
|
-
/// Constructor
|
|
336
|
-
BDDManager();
|
|
337
|
-
|
|
338
|
-
inline BDDCond *BddOne() const {
|
|
339
|
-
return Cudd_ReadOne(m_bdd_mgr);
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
inline BDDCond *BddZero() const {
|
|
343
|
-
return Cudd_ReadLogicZero(m_bdd_mgr);
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
DdManager *m_bdd_mgr;
|
|
347
|
-
BDDToBDDCondExpr bddToBddCondExprMap;
|
|
348
|
-
IndexToBDDCond indexToBddCondMap;
|
|
349
|
-
|
|
350
|
-
public:
|
|
351
|
-
|
|
352
|
-
/// Destructor
|
|
353
|
-
virtual ~BDDManager();
|
|
354
|
-
|
|
355
|
-
BDDCond *createCond(u32_t i) {
|
|
356
|
-
assert(indexToBddCondMap.find(i) == indexToBddCondMap.end() &&
|
|
357
|
-
"This should be fresh index to create new BDD");
|
|
358
|
-
BDDCond *bddCond = Cudd_bddIthVar(m_bdd_mgr, i);
|
|
359
|
-
return indexToBddCondMap.emplace(i, bddCond).first->second;
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
/// Given an index, get its condition
|
|
363
|
-
CondExpr *getCond(u32_t i) const override {
|
|
364
|
-
auto it = indexToBddCondMap.find(i);
|
|
365
|
-
assert(it != indexToBddCondMap.end() && "condition not found!");
|
|
366
|
-
auto it2 = bddToBddCondExprMap.find(it->second);
|
|
367
|
-
assert(it2 != bddToBddCondExprMap.end() && "condition not found!");
|
|
368
|
-
return it2->second;
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
CondExpr *createFreshBranchCond(const Instruction *inst) override;
|
|
372
|
-
|
|
373
|
-
inline u32_t getCondNumber() override {
|
|
374
|
-
return Cudd_ReadNodeCount(m_bdd_mgr);
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
BDDExpr *getOrAddBranchCond(BDDCond *bddCond);
|
|
378
|
-
|
|
379
|
-
/// Operations on conditions.
|
|
380
|
-
//@{
|
|
381
|
-
CondExpr *AND(CondExpr *lhs, CondExpr *rhs) override;
|
|
382
|
-
|
|
383
|
-
CondExpr *OR(CondExpr *lhs, CondExpr *rhs) override;
|
|
384
|
-
|
|
385
|
-
CondExpr *NEG(CondExpr *lhs) override;
|
|
386
|
-
//@}
|
|
387
|
-
|
|
388
|
-
bool isNegCond(const CondExpr *cond) const override {
|
|
389
|
-
return false;
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
bool isEquivalentBranchCond(const CondExpr *lhs, const CondExpr *rhs) override {
|
|
393
|
-
return lhs == rhs;
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
bool isSatisfiable(const CondExpr *cond) override;
|
|
397
|
-
|
|
398
|
-
/**
|
|
399
|
-
* Utilities for dumping conditions. These methods use global functions from CUDD
|
|
400
|
-
* package and they can be removed outside this class scope to be used by others.
|
|
401
|
-
*/
|
|
402
|
-
void ddClearFlag(BDDCond *f) const;
|
|
403
|
-
|
|
404
|
-
void BddSupportStep(BDDCond *f, NodeBS &support) const;
|
|
405
|
-
|
|
406
|
-
void extractSubConds(const CondExpr *f, NodeBS &support) const override;
|
|
407
|
-
|
|
408
|
-
void dump(const CondExpr *lhs, OutStream &O);
|
|
409
|
-
|
|
410
|
-
std::string dumpStr(const CondExpr *e) const override;
|
|
411
|
-
|
|
412
|
-
inline std::string getMemUsage() override {
|
|
413
|
-
return std::to_string(Cudd_ReadMemoryInUse(m_bdd_mgr));
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
};
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
} // End namespace SVF
|
|
420
|
-
|
|
421
|
-
#endif /* BITVECTORCOND_H_ */
|