svf-tools 1.0.438 → 1.0.441
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 +130 -0
- package/SVF-doxygen/html/html/ExeState_8h.html +139 -0
- package/SVF-doxygen/html/html/ExeState_8h_source.html +130 -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 +113 -0
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +1259 -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 +14 -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 +9 -9
- 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 +7 -3
- 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 +10 -4
- 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 +20 -6
- package/SVF-doxygen/html/html/functions_m.html +2 -3
- package/SVF-doxygen/html/html/functions_n.html +6 -8
- package/SVF-doxygen/html/html/functions_o.html +61 -21
- package/SVF-doxygen/html/html/functions_p.html +33 -41
- package/SVF-doxygen/html/html/functions_r.html +7 -6
- package/SVF-doxygen/html/html/functions_rela.html +78 -4
- package/SVF-doxygen/html/html/functions_s.html +30 -27
- package/SVF-doxygen/html/html/functions_t.html +12 -10
- 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 +16 -21
- package/SVF-doxygen/html/html/search/all_12.js +4 -3
- package/SVF-doxygen/html/html/search/all_13.js +17 -16
- package/SVF-doxygen/html/html/search/all_14.js +8 -7
- 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 +8 -4
- package/SVF-doxygen/html/html/search/all_6.js +6 -5
- 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 +19 -13
- package/SVF-doxygen/html/html/search/all_c.js +5 -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 +24 -15
- 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 +6 -5
- 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 +3 -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 +2 -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 +177 -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 +236 -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
|
@@ -66,7 +66,7 @@ $(function() {
|
|
|
66
66
|
<div class="title">ProgSlice.h</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="ProgSlice_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- ProgSlice.h -- Program slicing based on SVF----------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <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> <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> <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> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <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> <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> <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> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <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> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * ProgSlice.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: Apr 1, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifndef PROGSLICE_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define PROGSLICE_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="PathCondAllocator_8h.html">SABER/PathCondAllocator.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="WorkList_8h.html">Util/WorkList.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="SVFG_8h.html">Graphs/SVFG.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="DPItem_8h.html">Util/DPItem.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a4864972e12f3e95f06bcf2bf8c847b3a"> 45</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const SVFGNode*></a> <a class="code" href="classSVF_1_1ProgSlice.html#a4864972e12f3e95f06bcf2bf8c847b3a">SVFGNodeSet</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#af41c438baa739406a35bcb2e9ba431dd"> 46</a></span>  <span class="keyword">typedef</span> SVFGNodeSet::const_iterator <a class="code" href="classSVF_1_1ProgSlice.html#af41c438baa739406a35bcb2e9ba431dd">SVFGNodeSetIter</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a3dc89d666a0f369ca85e13632676e6aa"> 47</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CondExpr.html">PathCondAllocator::Condition</a> <a class="code" href="classSVF_1_1ProgSlice.html#a3dc89d666a0f369ca85e13632676e6aa">Condition</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ae16157bd0b66dfb3cc18b778a745ed00"> 48</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFGNode*, Condition*></a> <a class="code" href="classSVF_1_1ProgSlice.html#ae16157bd0b66dfb3cc18b778a745ed00">SVFGNodeToCondMap</a>; </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a684e44ade783439c6f77a8d84eed282c"> 50</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const SVFGNode*></a> <a class="code" href="classSVF_1_1ProgSlice.html#a684e44ade783439c6f77a8d84eed282c">VFWorkList</a>; </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ab13cc8f64fed5f06b11f7ca67cbc0dc5"> 51</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const BasicBlock*></a> <a class="code" href="classSVF_1_1ProgSlice.html#ab13cc8f64fed5f06b11f7ca67cbc0dc5">CFWorkList</a>; </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a76b91deacf7a66d142752f5a303386eb"> 54</a></span>  <a class="code" href="classSVF_1_1ProgSlice.html#a76b91deacf7a66d142752f5a303386eb">ProgSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src, <a class="code" href="classSVF_1_1PathCondAllocator.html">PathCondAllocator</a>* pa, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* graph):</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087">root</a>(src), <a class="code" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">partialReachable</a>(false), <a class="code" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">fullReachable</a>(false), <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>(false),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>(pa), <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a>(nullptr), <a class="code" href="classSVF_1_1ProgSlice.html#a06d79a32f9f550b068813324dac41460">finalCond</a>(pa-><a class="code" href="classSVF_1_1ProgSlice.html#a9150b694dd7b2e53ef7e78ea1b78094d">getFalseCond</a>()), <a class="code" href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde">svfg</a>(graph)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ad761a9848d2dab7700a7fdeb91c2454d"> 61</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1ProgSlice.html#ad761a9848d2dab7700a7fdeb91c2454d">~ProgSlice</a>()</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="classSVF_1_1ProgSlice.html#a899332b210414ac991b57e83851ee5be">destroy</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#aae54f4e8a827f55abe08762b69d9f84b"> 66</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1ProgSlice.html#aae54f4e8a827f55abe08762b69d9f84b">getForwardSliceSize</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.size();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  }</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a967fa01a8baae0dd086b5c09ae0faa7b"> 70</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1ProgSlice.html#a967fa01a8baae0dd086b5c09ae0faa7b">getBackwardSliceSize</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.size();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a0017e160c2a5412947c170f944e593bd"> 76</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#a0017e160c2a5412947c170f944e593bd">addToForwardSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.insert(node);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ac98eccef9fc2521b833a8c14b43e49e1"> 80</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac98eccef9fc2521b833a8c14b43e49e1">addToBackwardSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.insert(node);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a5a4b7f34001cc90f9b60222caee1bde6"> 84</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a5a4b7f34001cc90f9b60222caee1bde6">inForwardSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.find(node)!=<a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.end();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a066430ffa98a3fa0a5ad48d26e0450f7"> 88</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a066430ffa98a3fa0a5ad48d26e0450f7">inBackwardSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.find(node)!=<a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.end();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ae482fcb138aaf345586a39daa34ff895"> 92</a></span>  <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1ProgSlice.html#ae482fcb138aaf345586a39daa34ff895">forwardSliceBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.begin();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#add10d8fd041ac7e6eb611df8a6b1384b"> 96</a></span>  <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1ProgSlice.html#add10d8fd041ac7e6eb611df8a6b1384b">forwardSliceEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.end();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ab5810f8a7a994f0637c54b94d0367a89"> 100</a></span>  <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1ProgSlice.html#ab5810f8a7a994f0637c54b94d0367a89">backwardSliceBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.begin();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#aed4bedc716a3e252e44a6f28e677d61c"> 104</a></span>  <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1ProgSlice.html#aed4bedc716a3e252e44a6f28e677d61c">backwardSliceEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.end();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0"> 112</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* <a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087">root</a>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#acee5145fb261280a1f8187184e393aed"> 116</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#acee5145fb261280a1f8187184e393aed">addToSinks</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>.insert(node);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a03a1ef4d56958fa4a0c3a3a95806203d"> 120</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> SVFGNodeSet& <a class="code" href="classSVF_1_1ProgSlice.html#a03a1ef4d56958fa4a0c3a3a95806203d">getSinks</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2"> 124</a></span>  <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2">sinksBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>.begin();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31"> 128</a></span>  <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31">sinksEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>.end();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#af6f137be08ca0e743424ff07d679777d"> 132</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#af6f137be08ca0e743424ff07d679777d">setPartialReachable</a>()</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">partialReachable</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ae6102647fa4985142c293116516612cd"> 136</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#ae6102647fa4985142c293116516612cd">setAllReachable</a>()</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">fullReachable</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a397632ce0c523c4a54c5dc578606d14d"> 140</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a397632ce0c523c4a54c5dc578606d14d">setReachGlobal</a>()</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a3822badbbe9ac808296d5248f2dbf8e2"> 144</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a3822badbbe9ac808296d5248f2dbf8e2">isPartialReachable</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">partialReachable</a> || <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a2f96f034b7236791fe1d4d351174722e"> 148</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a2f96f034b7236791fe1d4d351174722e">isAllReachable</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">fullReachable</a> || <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a067480a9815fdb728cd259ef9b687e3e"> 152</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a067480a9815fdb728cd259ef9b687e3e">isReachGlobal</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#aa7979418bed24fcecfc6fa04532cd586">AllPathReachableSolve</a>();</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a62a9f2c107f27d6c04c30ef153ffb8ed">isSatisfiableForAll</a>();</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a45fb7711498bcba60e931c9c2a9ccec4">isSatisfiableForPairs</a>();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1ProgSlice.html#a8ae327bc7bf72f892d87730edfc67d0d">getCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge) <span class="keyword">const</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1ProgSlice.html#a07ce77afbf69d5e2a47afaa39eaea886">getRetSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge) <span class="keyword">const</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a37d2e74fd977ebf9bfbe881bbe1c4a95"> 171</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1ProgSlice.html#a37d2e74fd977ebf9bfbe881bbe1c4a95">condAnd</a>(Condition* lhs, Condition* rhs)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(lhs,rhs);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ac57638eaa2f656b8a7a5e3484c8e1265"> 175</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1ProgSlice.html#ac57638eaa2f656b8a7a5e3484c8e1265">condOr</a>(Condition* lhs, Condition* rhs)</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">condOr</a>(lhs,rhs);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#af90dd6f54db7bef80cd7e5c97e8dd193"> 179</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1ProgSlice.html#af90dd6f54db7bef80cd7e5c97e8dd193">condNeg</a>(Condition* cond)</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#ac1ed60a8f59a55811c97c83def3bb739">condNeg</a>(cond);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a50bb38398ecc422b6d10e0d77bb032c3"> 183</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1ProgSlice.html#a50bb38398ecc422b6d10e0d77bb032c3">getTrueCond</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a9150b694dd7b2e53ef7e78ea1b78094d"> 187</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1ProgSlice.html#a9150b694dd7b2e53ef7e78ea1b78094d">getFalseCond</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  }</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a39381b290a1bc3cc7d7e6d706a7392cc"> 191</a></span>  <span class="keyword">inline</span> std::string <a class="code" href="classSVF_1_1ProgSlice.html#a39381b290a1bc3cc7d7e6d706a7392cc">dumpCond</a>(Condition* cond)<span class="keyword"> const</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#aae773a674331bb80cc589835e0b16e4e">dumpCond</a>(cond);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  std::string <a class="code" href="classSVF_1_1ProgSlice.html#afac06b0be2b04cb8a65af21fd697b756">evalFinalCond</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab1fdec8d39c9890324718607d7464eab">annotatePaths</a>();</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a32ffd130984483b201c485da91ec467f"> 203</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* <a class="code" href="classSVF_1_1ProgSlice.html#a32ffd130984483b201c485da91ec467f">getSVFG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde">svfg</a>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#a899332b210414ac991b57e83851ee5be">destroy</a>();</div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ab514f387ae2122e919030c5006f1bbce"> 211</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab514f387ae2122e919030c5006f1bbce">clearCFCond</a>()</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#a3462dbe3d0f8df08e3b6a6c6ef0b065c">clearCFCond</a>();</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a15542937ee75195de1a3ffca18a168cf"> 219</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1ProgSlice.html#a15542937ee75195de1a3ffca18a168cf">getVFCond</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)<span class="keyword"> const</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  SVFGNodeToCondMap::const_iterator it = <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.find(node);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span>(it==<a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.end())</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a9150b694dd7b2e53ef7e78ea1b78094d">getFalseCond</a>();</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#add68dd06ab20899bc898d065ae2e82c0"> 228</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#add68dd06ab20899bc898d065ae2e82c0">setVFCond</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node, Condition* cond)</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  SVFGNodeToCondMap::iterator it = <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.find(node);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="comment">// until a fixed-point is reached (condition is not changed)</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.end() && <a class="code" href="classSVF_1_1ProgSlice.html#a52ecc421c235a8854792ca92829312e4">isEquivalentBranchCond</a>(it->second, cond))</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>[node] = cond;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ab945cc59c20bb4801f6e11120cc6940d"> 242</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1ProgSlice.html#ab945cc59c20bb4801f6e11120cc6940d">ComputeIntraVFGGuard</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* src, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* dst)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">ComputeIntraVFGGuard</a>(src,dst);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ae6ca91373bb2a5c2ddc3b20feb630fe6"> 246</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1ProgSlice.html#ae6ca91373bb2a5c2ddc3b20feb630fe6">ComputeInterCallVFGGuard</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* src, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* dst, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* callBB)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#a9c3361e3f37d640b177c3955f3c3667f">ComputeInterCallVFGGuard</a>(src,dst,callBB);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a0e1c3e7936361a27e876fa1a0678e6c5"> 250</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1ProgSlice.html#a0e1c3e7936361a27e876fa1a0678e6c5">ComputeInterRetVFGGuard</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* src, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* dst, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* retBB)</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#a5015e36d00ac59ef2b832019b8f922f5">ComputeInterRetVFGGuard</a>(src,dst,retBB);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a52ecc421c235a8854792ca92829312e4"> 256</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a52ecc421c235a8854792ca92829312e4">isEquivalentBranchCond</a>(<span class="keyword">const</span> Condition *lhs, <span class="keyword">const</span> Condition *rhs)<span class="keyword"> const </span>{</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#ad92e8909172d960de8a25f6ff0272261">isEquivalentBranchCond</a>(lhs, rhs);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  };</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div><div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a8b61702d8e35f066bb78e823f2c59ce6"> 263</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* <a class="code" href="classSVF_1_1ProgSlice.html#a8b61702d8e35f066bb78e823f2c59ce6">getSVFGNodeBB</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)<span class="keyword"> const</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = node-><a class="code" href="classSVF_1_1VFGNode.html#a0675465e11d1d42ee7e2b7ab3c5de829">getICFGNode</a>();</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">if</span>(SVFUtil::isa<NullPtrSVFGNode>(node) == <span class="keyword">false</span>)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> icfgNode-><a class="code" href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">getBB</a>();</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00275"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#afad8cd2f720bf01eedd825c3c418abc0"> 275</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* <a class="code" href="classSVF_1_1ProgSlice.html#afad8cd2f720bf01eedd825c3c418abc0">getCurSVFGNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a>;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  }</div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#aee72d029c185c24b2bf01cdc0dcb25d8"> 279</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#aee72d029c185c24b2bf01cdc0dcb25d8">setCurSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a> = node;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#a68f93a9271efcbb4728066a8d5639628">setCurEvalSVFGNode</a>(node);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#a2b8ad7aad51029106d88e81072e09a5e">setFinalCond</a>(Condition* cond)</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <a class="code" href="classSVF_1_1ProgSlice.html#a06d79a32f9f550b068813324dac41460">finalCond</a> = cond;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab"> 292</a></span>  SVFGNodeSet <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>; </div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0"> 293</a></span>  SVFGNodeSet <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>; </div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80"> 294</a></span>  SVFGNodeSet <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>; </div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087"> 295</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* <a class="code" href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087">root</a>; </div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce"> 296</a></span>  SVFGNodeToCondMap <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>; </div><div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9"> 297</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">partialReachable</a>; </div><div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f"> 298</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">fullReachable</a>; </div><div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5"> 299</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>; </div><div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5"> 300</a></span>  <a class="code" href="classSVF_1_1PathCondAllocator.html">PathCondAllocator</a>* <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>; </div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b"> 301</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a>; </div><div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a06d79a32f9f550b068813324dac41460"> 302</a></span>  Condition* <a class="code" href="classSVF_1_1ProgSlice.html#a06d79a32f9f550b068813324dac41460">finalCond</a>; </div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde"> 303</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* <a class="code" href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde">svfg</a>; </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> };</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="preprocessor">#endif </span><span class="comment">/* PROGSLICE_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1ProgSlice_html_aeda61b2786b128e8c45089de60dcafce"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">SVF::ProgSlice::svfgNodeToCondMap</a></div><div class="ttdeci">SVFGNodeToCondMap svfgNodeToCondMap</div><div class="ttdoc">map a SVFGNode to its path condition starting from root </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00296">ProgSlice.h:296</a></div></div>
|
|
69
|
+
<a href="ProgSlice_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- ProgSlice.h -- Program slicing based on SVF----------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <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> <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> <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> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <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> <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> <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> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <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> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * ProgSlice.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: Apr 1, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifndef PROGSLICE_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define PROGSLICE_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="PathCondAllocator_8h.html">SABER/PathCondAllocator.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="WorkList_8h.html">Util/WorkList.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="SVFG_8h.html">Graphs/SVFG.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="DPItem_8h.html">Util/DPItem.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a4864972e12f3e95f06bcf2bf8c847b3a"> 45</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const SVFGNode*></a> <a class="code" href="classSVF_1_1ProgSlice.html#a4864972e12f3e95f06bcf2bf8c847b3a">SVFGNodeSet</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#af41c438baa739406a35bcb2e9ba431dd"> 46</a></span>  <span class="keyword">typedef</span> SVFGNodeSet::const_iterator <a class="code" href="classSVF_1_1ProgSlice.html#af41c438baa739406a35bcb2e9ba431dd">SVFGNodeSetIter</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a3dc89d666a0f369ca85e13632676e6aa"> 47</a></span>  <span class="keyword">typedef</span> <a class="code" href="structDdNode.html">PathCondAllocator::Condition</a> <a class="code" href="classSVF_1_1ProgSlice.html#a3dc89d666a0f369ca85e13632676e6aa">Condition</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ae16157bd0b66dfb3cc18b778a745ed00"> 48</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFGNode*, Condition*></a> <a class="code" href="classSVF_1_1ProgSlice.html#ae16157bd0b66dfb3cc18b778a745ed00">SVFGNodeToCondMap</a>; </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a684e44ade783439c6f77a8d84eed282c"> 50</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const SVFGNode*></a> <a class="code" href="classSVF_1_1ProgSlice.html#a684e44ade783439c6f77a8d84eed282c">VFWorkList</a>; </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ab13cc8f64fed5f06b11f7ca67cbc0dc5"> 51</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const BasicBlock*></a> <a class="code" href="classSVF_1_1ProgSlice.html#ab13cc8f64fed5f06b11f7ca67cbc0dc5">CFWorkList</a>; </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a76b91deacf7a66d142752f5a303386eb"> 54</a></span>  <a class="code" href="classSVF_1_1ProgSlice.html#a76b91deacf7a66d142752f5a303386eb">ProgSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src, <a class="code" href="classSVF_1_1PathCondAllocator.html">PathCondAllocator</a>* pa, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* graph):</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087">root</a>(src), <a class="code" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">partialReachable</a>(false), <a class="code" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">fullReachable</a>(false), <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>(false),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>(pa), <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a>(nullptr), <a class="code" href="classSVF_1_1ProgSlice.html#a06d79a32f9f550b068813324dac41460">finalCond</a>(pa-><a class="code" href="classSVF_1_1ProgSlice.html#a9150b694dd7b2e53ef7e78ea1b78094d">getFalseCond</a>()), <a class="code" href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde">svfg</a>(graph)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ad761a9848d2dab7700a7fdeb91c2454d"> 61</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1ProgSlice.html#ad761a9848d2dab7700a7fdeb91c2454d">~ProgSlice</a>()</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="classSVF_1_1ProgSlice.html#a899332b210414ac991b57e83851ee5be">destroy</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#aae54f4e8a827f55abe08762b69d9f84b"> 66</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1ProgSlice.html#aae54f4e8a827f55abe08762b69d9f84b">getForwardSliceSize</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.size();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  }</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a967fa01a8baae0dd086b5c09ae0faa7b"> 70</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1ProgSlice.html#a967fa01a8baae0dd086b5c09ae0faa7b">getBackwardSliceSize</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.size();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a0017e160c2a5412947c170f944e593bd"> 76</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#a0017e160c2a5412947c170f944e593bd">addToForwardSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.insert(node);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ac98eccef9fc2521b833a8c14b43e49e1"> 80</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac98eccef9fc2521b833a8c14b43e49e1">addToBackwardSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.insert(node);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a5a4b7f34001cc90f9b60222caee1bde6"> 84</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a5a4b7f34001cc90f9b60222caee1bde6">inForwardSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.find(node)!=<a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.end();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a066430ffa98a3fa0a5ad48d26e0450f7"> 88</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a066430ffa98a3fa0a5ad48d26e0450f7">inBackwardSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.find(node)!=<a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.end();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ae482fcb138aaf345586a39daa34ff895"> 92</a></span>  <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1ProgSlice.html#ae482fcb138aaf345586a39daa34ff895">forwardSliceBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.begin();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#add10d8fd041ac7e6eb611df8a6b1384b"> 96</a></span>  <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1ProgSlice.html#add10d8fd041ac7e6eb611df8a6b1384b">forwardSliceEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.end();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ab5810f8a7a994f0637c54b94d0367a89"> 100</a></span>  <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1ProgSlice.html#ab5810f8a7a994f0637c54b94d0367a89">backwardSliceBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.begin();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#aed4bedc716a3e252e44a6f28e677d61c"> 104</a></span>  <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1ProgSlice.html#aed4bedc716a3e252e44a6f28e677d61c">backwardSliceEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.end();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0"> 112</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* <a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087">root</a>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#acee5145fb261280a1f8187184e393aed"> 116</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#acee5145fb261280a1f8187184e393aed">addToSinks</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>.insert(node);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a03a1ef4d56958fa4a0c3a3a95806203d"> 120</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> SVFGNodeSet& <a class="code" href="classSVF_1_1ProgSlice.html#a03a1ef4d56958fa4a0c3a3a95806203d">getSinks</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2"> 124</a></span>  <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2">sinksBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>.begin();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31"> 128</a></span>  <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31">sinksEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>.end();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#af6f137be08ca0e743424ff07d679777d"> 132</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#af6f137be08ca0e743424ff07d679777d">setPartialReachable</a>()</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">partialReachable</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ae6102647fa4985142c293116516612cd"> 136</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#ae6102647fa4985142c293116516612cd">setAllReachable</a>()</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">fullReachable</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a397632ce0c523c4a54c5dc578606d14d"> 140</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a397632ce0c523c4a54c5dc578606d14d">setReachGlobal</a>()</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a3822badbbe9ac808296d5248f2dbf8e2"> 144</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a3822badbbe9ac808296d5248f2dbf8e2">isPartialReachable</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">partialReachable</a> || <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a2f96f034b7236791fe1d4d351174722e"> 148</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a2f96f034b7236791fe1d4d351174722e">isAllReachable</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">fullReachable</a> || <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a067480a9815fdb728cd259ef9b687e3e"> 152</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a067480a9815fdb728cd259ef9b687e3e">isReachGlobal</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#aa7979418bed24fcecfc6fa04532cd586">AllPathReachableSolve</a>();</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a62a9f2c107f27d6c04c30ef153ffb8ed">isSatisfiableForAll</a>();</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a45fb7711498bcba60e931c9c2a9ccec4">isSatisfiableForPairs</a>();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1ProgSlice.html#a8ae327bc7bf72f892d87730edfc67d0d">getCallSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge) <span class="keyword">const</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1ProgSlice.html#a07ce77afbf69d5e2a47afaa39eaea886">getRetSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge) <span class="keyword">const</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a37d2e74fd977ebf9bfbe881bbe1c4a95"> 171</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1ProgSlice.html#a37d2e74fd977ebf9bfbe881bbe1c4a95">condAnd</a>(Condition* lhs, Condition* rhs)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(lhs,rhs);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ac57638eaa2f656b8a7a5e3484c8e1265"> 175</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1ProgSlice.html#ac57638eaa2f656b8a7a5e3484c8e1265">condOr</a>(Condition* lhs, Condition* rhs)</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">condOr</a>(lhs,rhs);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#af90dd6f54db7bef80cd7e5c97e8dd193"> 179</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1ProgSlice.html#af90dd6f54db7bef80cd7e5c97e8dd193">condNeg</a>(Condition* cond)</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#ac1ed60a8f59a55811c97c83def3bb739">condNeg</a>(cond);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a50bb38398ecc422b6d10e0d77bb032c3"> 183</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1ProgSlice.html#a50bb38398ecc422b6d10e0d77bb032c3">getTrueCond</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a9150b694dd7b2e53ef7e78ea1b78094d"> 187</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1ProgSlice.html#a9150b694dd7b2e53ef7e78ea1b78094d">getFalseCond</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  }</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a39381b290a1bc3cc7d7e6d706a7392cc"> 191</a></span>  <span class="keyword">inline</span> std::string <a class="code" href="classSVF_1_1ProgSlice.html#a39381b290a1bc3cc7d7e6d706a7392cc">dumpCond</a>(Condition* cond)<span class="keyword"> const</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#aae773a674331bb80cc589835e0b16e4e">dumpCond</a>(cond);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  std::string <a class="code" href="classSVF_1_1ProgSlice.html#afac06b0be2b04cb8a65af21fd697b756">evalFinalCond</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab1fdec8d39c9890324718607d7464eab">annotatePaths</a>();</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a32ffd130984483b201c485da91ec467f"> 203</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* <a class="code" href="classSVF_1_1ProgSlice.html#a32ffd130984483b201c485da91ec467f">getSVFG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde">svfg</a>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#a899332b210414ac991b57e83851ee5be">destroy</a>();</div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ab514f387ae2122e919030c5006f1bbce"> 211</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab514f387ae2122e919030c5006f1bbce">clearCFCond</a>()</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#a3462dbe3d0f8df08e3b6a6c6ef0b065c">clearCFCond</a>();</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a15542937ee75195de1a3ffca18a168cf"> 219</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1ProgSlice.html#a15542937ee75195de1a3ffca18a168cf">getVFCond</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)<span class="keyword"> const</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  SVFGNodeToCondMap::const_iterator it = <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.find(node);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span>(it==<a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.end())</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a9150b694dd7b2e53ef7e78ea1b78094d">getFalseCond</a>();</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#add68dd06ab20899bc898d065ae2e82c0"> 228</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#add68dd06ab20899bc898d065ae2e82c0">setVFCond</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node, Condition* cond)</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  SVFGNodeToCondMap::iterator it = <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.find(node);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="comment">// until a fixed-point is reached (condition is not changed)</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.end() && <a class="code" href="classSVF_1_1ProgSlice.html#a52ecc421c235a8854792ca92829312e4">isEquivalentBranchCond</a>(it->second, cond))</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>[node] = cond;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ab945cc59c20bb4801f6e11120cc6940d"> 242</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1ProgSlice.html#ab945cc59c20bb4801f6e11120cc6940d">ComputeIntraVFGGuard</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* src, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* dst)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">ComputeIntraVFGGuard</a>(src,dst);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ae6ca91373bb2a5c2ddc3b20feb630fe6"> 246</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1ProgSlice.html#ae6ca91373bb2a5c2ddc3b20feb630fe6">ComputeInterCallVFGGuard</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* src, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* dst, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* callBB)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#a9c3361e3f37d640b177c3955f3c3667f">ComputeInterCallVFGGuard</a>(src,dst,callBB);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a0e1c3e7936361a27e876fa1a0678e6c5"> 250</a></span>  <span class="keyword">inline</span> Condition* <a class="code" href="classSVF_1_1ProgSlice.html#a0e1c3e7936361a27e876fa1a0678e6c5">ComputeInterRetVFGGuard</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* src, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* dst, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* retBB)</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#a5015e36d00ac59ef2b832019b8f922f5">ComputeInterRetVFGGuard</a>(src,dst,retBB);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a52ecc421c235a8854792ca92829312e4"> 256</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a52ecc421c235a8854792ca92829312e4">isEquivalentBranchCond</a>(<span class="keyword">const</span> Condition *lhs, <span class="keyword">const</span> Condition *rhs)<span class="keyword"> const </span>{</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#ad92e8909172d960de8a25f6ff0272261">isEquivalentBranchCond</a>(lhs, rhs);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  };</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div><div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a8b61702d8e35f066bb78e823f2c59ce6"> 263</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* <a class="code" href="classSVF_1_1ProgSlice.html#a8b61702d8e35f066bb78e823f2c59ce6">getSVFGNodeBB</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)<span class="keyword"> const</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = node-><a class="code" href="classSVF_1_1VFGNode.html#a0675465e11d1d42ee7e2b7ab3c5de829">getICFGNode</a>();</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">if</span>(SVFUtil::isa<NullPtrSVFGNode>(node) == <span class="keyword">false</span>)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> icfgNode-><a class="code" href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">getBB</a>();</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00275"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#afad8cd2f720bf01eedd825c3c418abc0"> 275</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* <a class="code" href="classSVF_1_1ProgSlice.html#afad8cd2f720bf01eedd825c3c418abc0">getCurSVFGNode</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a>;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  }</div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#aee72d029c185c24b2bf01cdc0dcb25d8"> 279</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#aee72d029c185c24b2bf01cdc0dcb25d8">setCurSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a> = node;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>-><a class="code" href="classSVF_1_1PathCondAllocator.html#a68f93a9271efcbb4728066a8d5639628">setCurEvalSVFGNode</a>(node);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ProgSlice.html#a2b8ad7aad51029106d88e81072e09a5e">setFinalCond</a>(Condition* cond)</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <a class="code" href="classSVF_1_1ProgSlice.html#a06d79a32f9f550b068813324dac41460">finalCond</a> = cond;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab"> 292</a></span>  SVFGNodeSet <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>; </div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0"> 293</a></span>  SVFGNodeSet <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>; </div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80"> 294</a></span>  SVFGNodeSet <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>; </div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087"> 295</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* <a class="code" href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087">root</a>; </div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce"> 296</a></span>  SVFGNodeToCondMap <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>; </div><div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9"> 297</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">partialReachable</a>; </div><div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f"> 298</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">fullReachable</a>; </div><div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5"> 299</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>; </div><div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5"> 300</a></span>  <a class="code" href="classSVF_1_1PathCondAllocator.html">PathCondAllocator</a>* <a class="code" href="classSVF_1_1ProgSlice.html#adc27c77d68f54030bdbb714139a974e5">pathAllocator</a>; </div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b"> 301</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a>; </div><div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a06d79a32f9f550b068813324dac41460"> 302</a></span>  Condition* <a class="code" href="classSVF_1_1ProgSlice.html#a06d79a32f9f550b068813324dac41460">finalCond</a>; </div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde"> 303</a></span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* <a class="code" href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde">svfg</a>; </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> };</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="preprocessor">#endif </span><span class="comment">/* PROGSLICE_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1ProgSlice_html_aeda61b2786b128e8c45089de60dcafce"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">SVF::ProgSlice::svfgNodeToCondMap</a></div><div class="ttdeci">SVFGNodeToCondMap svfgNodeToCondMap</div><div class="ttdoc">map a SVFGNode to its path condition starting from root </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00296">ProgSlice.h:296</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1ProgSlice_html_ac1dc48ea64a89ce37394a22e609a0cd0"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">SVF::ProgSlice::getSource</a></div><div class="ttdeci">const SVFGNode * getSource() const</div><div class="ttdoc">root and sink operations </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00112">ProgSlice.h:112</a></div></div>
|
|
71
71
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ad92e8909172d960de8a25f6ff0272261"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ad92e8909172d960de8a25f6ff0272261">SVF::PathCondAllocator::isEquivalentBranchCond</a></div><div class="ttdeci">bool isEquivalentBranchCond(const Condition *lhs, const Condition *rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00201">PathCondAllocator.h:201</a></div></div>
|
|
72
72
|
<div class="ttc" id="classSVF_1_1ProgSlice_html_a39381b290a1bc3cc7d7e6d706a7392cc"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a39381b290a1bc3cc7d7e6d706a7392cc">SVF::ProgSlice::dumpCond</a></div><div class="ttdeci">std::string dumpCond(Condition *cond) const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00191">ProgSlice.h:191</a></div></div>
|
|
@@ -77,6 +77,7 @@ $(function() {
|
|
|
77
77
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a9c3361e3f37d640b177c3955f3c3667f"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a9c3361e3f37d640b177c3955f3c3667f">SVF::PathCondAllocator::ComputeInterCallVFGGuard</a></div><div class="ttdeci">virtual Condition * ComputeInterCallVFGGuard(const BasicBlock *src, const BasicBlock *dst, const BasicBlock *callBB)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00458">PathCondAllocator.cpp:458</a></div></div>
|
|
78
78
|
<div class="ttc" id="classSVF_1_1ProgSlice_html_a76b91deacf7a66d142752f5a303386eb"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a76b91deacf7a66d142752f5a303386eb">SVF::ProgSlice::ProgSlice</a></div><div class="ttdeci">ProgSlice(const SVFGNode *src, PathCondAllocator *pa, const SVFG *graph)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00054">ProgSlice.h:54</a></div></div>
|
|
79
79
|
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
|
|
80
|
+
<div class="ttc" id="structDdNode_html"><div class="ttname"><a href="structDdNode.html">DdNode</a></div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00264">cudd.h:264</a></div></div>
|
|
80
81
|
<div class="ttc" id="classSVF_1_1ProgSlice_html_a06d79a32f9f550b068813324dac41460"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a06d79a32f9f550b068813324dac41460">SVF::ProgSlice::finalCond</a></div><div class="ttdeci">Condition * finalCond</div><div class="ttdoc">final condition </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00302">ProgSlice.h:302</a></div></div>
|
|
81
82
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00095">PathCondAllocator.h:95</a></div></div>
|
|
82
83
|
<div class="ttc" id="classSVF_1_1ProgSlice_html_ae482fcb138aaf345586a39daa34ff895"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ae482fcb138aaf345586a39daa34ff895">SVF::ProgSlice::forwardSliceBegin</a></div><div class="ttdeci">SVFGNodeSetIter forwardSliceBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00092">ProgSlice.h:92</a></div></div>
|
|
@@ -101,7 +102,6 @@ $(function() {
|
|
|
101
102
|
<div class="ttc" id="classSVF_1_1ProgSlice_html_ab13cc8f64fed5f06b11f7ca67cbc0dc5"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab13cc8f64fed5f06b11f7ca67cbc0dc5">SVF::ProgSlice::CFWorkList</a></div><div class="ttdeci">FIFOWorkList< const BasicBlock * > CFWorkList</div><div class="ttdoc">worklist for control-flow guard computation </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00051">ProgSlice.h:51</a></div></div>
|
|
102
103
|
<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#l00081">SVFBasicTypes.h:81</a></div></div>
|
|
103
104
|
<div class="ttc" id="classSVF_1_1ProgSlice_html_ab945cc59c20bb4801f6e11120cc6940d"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab945cc59c20bb4801f6e11120cc6940d">SVF::ProgSlice::ComputeIntraVFGGuard</a></div><div class="ttdeci">Condition * ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Compute guards for value-flows. </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00242">ProgSlice.h:242</a></div></div>
|
|
104
|
-
<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#l00041">Conditions.h:41</a></div></div>
|
|
105
105
|
<div class="ttc" id="classSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
|
|
106
106
|
<div class="ttc" id="classSVF_1_1ProgSlice_html_a9150b694dd7b2e53ef7e78ea1b78094d"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a9150b694dd7b2e53ef7e78ea1b78094d">SVF::ProgSlice::getFalseCond</a></div><div class="ttdeci">Condition * getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00187">ProgSlice.h:187</a></div></div>
|
|
107
107
|
<div class="ttc" id="classSVF_1_1ProgSlice_html_a2b8ad7aad51029106d88e81072e09a5e"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a2b8ad7aad51029106d88e81072e09a5e">SVF::ProgSlice::setFinalCond</a></div><div class="ttdeci">void setFinalCond(Condition *cond)</div><div class="ttdoc">Set final condition after all path reachability analysis. </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00286">ProgSlice.h:286</a></div></div>
|
|
@@ -90,15 +90,15 @@ $(function() {
|
|
|
90
90
|
<div class="ttc" id="classSVF_1_1SVFGBuilder_html_a49cee21be46d6a3f65eec638714038ed"><div class="ttname"><a href="classSVF_1_1SVFGBuilder.html#a49cee21be46d6a3f65eec638714038ed">SVF::SVFGBuilder::buildMSSA</a></div><div class="ttdeci">virtual MemSSA * buildMSSA(BVDataPTAImpl *pta, bool ptrOnlyMSSA)</div><div class="ttdoc">Build Memory SSA. </div><div class="ttdef"><b>Definition:</b> <a href="SVFGBuilder_8cpp_source.html#l00115">SVFGBuilder.cpp:115</a></div></div>
|
|
91
91
|
<div class="ttc" id="MemSSA_8h_html"><div class="ttname"><a href="MemSSA_8h.html">MemSSA.h</a></div></div>
|
|
92
92
|
<div class="ttc" id="classSVF_1_1MemSSA_html"><div class="ttname"><a href="classSVF_1_1MemSSA.html">SVF::MemSSA</a></div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00046">MemSSA.h:46</a></div></div>
|
|
93
|
-
<div class="ttc" id="classSVF_1_1Options_html_a982b4cd71ccafd07d94f10a0a2e953c2"><div class="ttname"><a href="classSVF_1_1Options.html#a982b4cd71ccafd07d94f10a0a2e953c2">SVF::Options::SVFGWithIndirectCall</a></div><div class="ttdeci">static const llvm::cl::opt< bool > SVFGWithIndirectCall</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#
|
|
93
|
+
<div class="ttc" id="classSVF_1_1Options_html_a982b4cd71ccafd07d94f10a0a2e953c2"><div class="ttname"><a href="classSVF_1_1Options.html#a982b4cd71ccafd07d94f10a0a2e953c2">SVF::Options::SVFGWithIndirectCall</a></div><div class="ttdeci">static const llvm::cl::opt< bool > SVFGWithIndirectCall</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00157">Options.h:157</a></div></div>
|
|
94
94
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a89c40c8fad70f3aead6531261e5a3cc3"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a89c40c8fad70f3aead6531261e5a3cc3">SVF::MemSSA::performStat</a></div><div class="ttdeci">void performStat()</div><div class="ttdoc">Perform statistics. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00468">MemSSA.cpp:468</a></div></div>
|
|
95
95
|
<div class="ttc" id="classSVF_1_1VFG_html_ac2e2f555975063da3fa1932ac35802c6a8ed0b9aea88fbbbe91f33301bea0c9dd"><div class="ttname"><a href="classSVF_1_1VFG.html#ac2e2f555975063da3fa1932ac35802c6a8ed0b9aea88fbbbe91f33301bea0c9dd">SVF::VFG::PTRONLYSVFG_OPT</a></div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00057">VFG.h:57</a></div></div>
|
|
96
|
-
<div class="ttc" id="classSVF_1_1Options_html_a3061c75f7491dd737222b1b877721070"><div class="ttname"><a href="classSVF_1_1Options.html#a3061c75f7491dd737222b1b877721070">SVF::Options::DumpVFG</a></div><div class="ttdeci">static const llvm::cl::opt< bool > DumpVFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#
|
|
97
|
-
<div class="ttc" id="classSVF_1_1Options_html_a7704ff30e6fc5043313adf5c655bcd4a"><div class="ttname"><a href="classSVF_1_1Options.html#a7704ff30e6fc5043313adf5c655bcd4a">SVF::Options::OPTSVFG</a></div><div class="ttdeci">static llvm::cl::opt< bool > OPTSVFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#
|
|
96
|
+
<div class="ttc" id="classSVF_1_1Options_html_a3061c75f7491dd737222b1b877721070"><div class="ttname"><a href="classSVF_1_1Options.html#a3061c75f7491dd737222b1b877721070">SVF::Options::DumpVFG</a></div><div class="ttdeci">static const llvm::cl::opt< bool > DumpVFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00121">Options.h:121</a></div></div>
|
|
97
|
+
<div class="ttc" id="classSVF_1_1Options_html_a7704ff30e6fc5043313adf5c655bcd4a"><div class="ttname"><a href="classSVF_1_1Options.html#a7704ff30e6fc5043313adf5c655bcd4a">SVF::Options::OPTSVFG</a></div><div class="ttdeci">static llvm::cl::opt< bool > OPTSVFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00159">Options.h:159</a></div></div>
|
|
98
98
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
99
99
|
<div class="ttc" id="namespaceSVF_html_aecbb42b8e9d17fa0189c50dda9fd5fdd"><div class="ttname"><a href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">SVF::DominatorTree</a></div><div class="ttdeci">llvm::DominatorTree DominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00143">BasicTypes.h:143</a></div></div>
|
|
100
|
-
<div class="ttc" id="classSVF_1_1Options_html_a097255cb1373feaaaf2fe60c998862d5"><div class="ttname"><a href="classSVF_1_1Options.html#a097255cb1373feaaaf2fe60c998862d5">SVF::Options::DumpMSSA</a></div><div class="ttdeci">static const llvm::cl::opt< bool > DumpMSSA</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#
|
|
101
|
-
<div class="ttc" id="classSVF_1_1Options_html_a78ce4bd2e80e7b87ff0ee52edd1db403"><div class="ttname"><a href="classSVF_1_1Options.html#a78ce4bd2e80e7b87ff0ee52edd1db403">SVF::Options::SingleVFG</a></div><div class="ttdeci">static const llvm::cl::opt< bool > SingleVFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#
|
|
100
|
+
<div class="ttc" id="classSVF_1_1Options_html_a097255cb1373feaaaf2fe60c998862d5"><div class="ttname"><a href="classSVF_1_1Options.html#a097255cb1373feaaaf2fe60c998862d5">SVF::Options::DumpMSSA</a></div><div class="ttdeci">static const llvm::cl::opt< bool > DumpMSSA</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00151">Options.h:151</a></div></div>
|
|
101
|
+
<div class="ttc" id="classSVF_1_1Options_html_a78ce4bd2e80e7b87ff0ee52edd1db403"><div class="ttname"><a href="classSVF_1_1Options.html#a78ce4bd2e80e7b87ff0ee52edd1db403">SVF::Options::SingleVFG</a></div><div class="ttdeci">static const llvm::cl::opt< bool > SingleVFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00158">Options.h:158</a></div></div>
|
|
102
102
|
<div class="ttc" id="Options_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
|
|
103
103
|
<div class="ttc" id="SVFBasicTypes_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00156">SVFBasicTypes.h:156</a></div></div>
|
|
104
104
|
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00195">BasicTypes.h:195</a></div></div>
|