svf-tools 1.0.837 → 1.0.839
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/AndersenSCD_8cpp_source.html +1 -1
- package/SVF-doxygen/html/Andersen_8cpp_source.html +20 -16
- package/SVF-doxygen/html/Andersen_8h_source.html +2 -2
- package/SVF-doxygen/html/BoundedZ3Expr_8cpp_source.html +1 -1
- package/SVF-doxygen/html/CFLAlias_8cpp_source.html +2 -2
- package/SVF-doxygen/html/CFLBase_8cpp_source.html +4 -4
- package/SVF-doxygen/html/CFLGraphBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/CFLSVFGBuilder_8cpp.html +86 -0
- package/SVF-doxygen/html/CFLSVFGBuilder_8cpp_source.html +195 -0
- package/SVF-doxygen/html/CFLSVFGBuilder_8h.html +98 -0
- package/SVF-doxygen/html/CFLSVFGBuilder_8h_source.html +148 -0
- package/SVF-doxygen/html/CFLVF_8cpp_source.html +4 -4
- package/SVF-doxygen/html/CFLVF_8h.html +1 -1
- package/SVF-doxygen/html/CFLVF_8h_source.html +5 -5
- package/SVF-doxygen/html/CHGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ConsG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/DCHG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/DDAPass_8cpp_source.html +9 -9
- package/SVF-doxygen/html/DDAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/DDAVFSolver_8h_source.html +1 -1
- package/SVF-doxygen/html/DoubleFreeChecker_8cpp_source.html +5 -5
- package/SVF-doxygen/html/DoubleFreeChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/ExtAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/FSMPTA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/FileChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/FileChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/FlowSensitive_8cpp_source.html +3 -3
- package/SVF-doxygen/html/ICFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/IRGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/LLVMModule_8cpp_source.html +2 -2
- package/SVF-doxygen/html/LeakChecker_8cpp_source.html +3 -3
- package/SVF-doxygen/html/LeakChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/LockResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MHP_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MTAAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MTAResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MTAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MemRegion_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MemSSA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/Options_8cpp_source.html +825 -892
- package/SVF-doxygen/html/Options_8h_source.html +275 -297
- package/SVF-doxygen/html/PointerAnalysisImpl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +12 -12
- package/SVF-doxygen/html/ProgSlice_8cpp_source.html +170 -136
- package/SVF-doxygen/html/ProgSlice_8h_source.html +314 -298
- package/SVF-doxygen/html/SVFGBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/SVFGOPT_8cpp_source.html +4 -4
- package/SVF-doxygen/html/SVFGOPT_8h_source.html +5 -5
- package/SVF-doxygen/html/SVFGReadWrite_8cpp_source.html +2 -2
- package/SVF-doxygen/html/SVFG_8cpp_source.html +32 -32
- package/SVF-doxygen/html/SVFG_8h_source.html +446 -444
- package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFIR_8cpp_source.html +2 -2
- package/SVF-doxygen/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFVariables_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SaberCondAllocator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/SaberCondAllocator_8h_source.html +246 -235
- package/SVF-doxygen/html/SaberSVFGBuilder_8cpp.html +1 -0
- package/SVF-doxygen/html/SaberSVFGBuilder_8cpp_source.html +272 -266
- package/SVF-doxygen/html/SaberSVFGBuilder_8h_source.html +75 -62
- package/SVF-doxygen/html/SrcSnkDDA_8cpp_source.html +261 -260
- package/SVF-doxygen/html/SrcSnkDDA_8h_source.html +18 -18
- package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/SymbolTableInfo_8cpp_source.html +3 -3
- package/SVF-doxygen/html/TCT_8cpp_source.html +1 -1
- package/SVF-doxygen/html/TypeAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/VFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/VersionedFlowSensitive_8cpp_source.html +4 -4
- package/SVF-doxygen/html/WPAPass_8cpp_source.html +5 -5
- package/SVF-doxygen/html/Z3Expr_8cpp_source.html +1 -1
- package/SVF-doxygen/html/annotated.html +377 -376
- package/SVF-doxygen/html/classSVF_1_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1Andersen.html +18 -14
- package/SVF-doxygen/html/classSVF_1_1AndersenBase.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1AndersenSCD.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1BVDataPTAImpl.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1BoundedZ3Expr.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CFLAlias.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1CFLBase.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1CFLGraphBuilder.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CFLSVFGBuilder-members.html +121 -0
- package/SVF-doxygen/html/classSVF_1_1CFLSVFGBuilder.html +473 -0
- package/SVF-doxygen/html/classSVF_1_1CFLSVFGBuilder.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1CFLVF-members.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CFLVF.html +11 -11
- package/SVF-doxygen/html/classSVF_1_1CHGBuilder.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ConstraintNode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CopyStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1DCHGraph.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1DDAPass.html +9 -9
- package/SVF-doxygen/html/classSVF_1_1DDAStat.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1DDAVFSolver.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1DoubleFreeChecker.html +6 -6
- package/SVF-doxygen/html/classSVF_1_1ExtAPI.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1FileChecker.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1FlowDDA.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1FlowSensitive.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1FlowSensitiveStat.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1GepObjVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1GepStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1GepValVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ICFG.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1LeakChecker.html +6 -6
- package/SVF-doxygen/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1LockResultValidator.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MHP.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MRGenerator.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MTAAnnotator.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MTAResultValidator.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MTASVFGBuilder.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1MTAStat.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MemSSA.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1ObjTypeInfo.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1Options-members.html +64 -73
- package/SVF-doxygen/html/classSVF_1_1Options.html +128 -362
- package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +12 -12
- package/SVF-doxygen/html/classSVF_1_1ProgSlice-members.html +25 -22
- package/SVF-doxygen/html/classSVF_1_1ProgSlice.html +493 -366
- package/SVF-doxygen/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFG-members.html +182 -181
- package/SVF-doxygen/html/classSVF_1_1SVFG.html +326 -300
- package/SVF-doxygen/html/classSVF_1_1SVFGBuilder.html +6 -5
- package/SVF-doxygen/html/classSVF_1_1SVFGBuilder.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1SVFGOPT.html +11 -11
- package/SVF-doxygen/html/classSVF_1_1SVFIR.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +7 -7
- package/SVF-doxygen/html/classSVF_1_1SaberCondAllocator-members.html +22 -19
- package/SVF-doxygen/html/classSVF_1_1SaberCondAllocator.html +239 -160
- package/SVF-doxygen/html/classSVF_1_1SaberSVFGBuilder-members.html +11 -9
- package/SVF-doxygen/html/classSVF_1_1SaberSVFGBuilder.html +348 -286
- package/SVF-doxygen/html/classSVF_1_1SaberSVFGBuilder.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SrcSnkDDA.html +263 -261
- package/SVF-doxygen/html/classSVF_1_1StoreStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1SymbolTableInfo.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1TCT.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1TypeAnalysis.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1VFG.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1VersionedFlowSensitive.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1WPAPass.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1Z3Expr.html +1 -1
- package/SVF-doxygen/html/classes.html +95 -94
- package/SVF-doxygen/html/dir_1b8e404556d3e8597ae60437f0a084bf.html +2 -0
- package/SVF-doxygen/html/dir_8a9c8659eb68b9cbd3fead4690588a47.html +2 -0
- package/SVF-doxygen/html/files.html +6 -4
- package/SVF-doxygen/html/functions_b.html +7 -6
- package/SVF-doxygen/html/functions_c.html +38 -29
- package/SVF-doxygen/html/functions_d.html +0 -15
- package/SVF-doxygen/html/functions_f.html +9 -9
- package/SVF-doxygen/html/functions_func_b.html +3 -2
- package/SVF-doxygen/html/functions_func_c.html +29 -23
- package/SVF-doxygen/html/functions_func_g.html +14 -10
- package/SVF-doxygen/html/functions_func_r.html +6 -5
- package/SVF-doxygen/html/functions_func_s.html +20 -17
- package/SVF-doxygen/html/functions_func_~.html +3 -0
- package/SVF-doxygen/html/functions_g.html +10 -6
- package/SVF-doxygen/html/functions_m.html +4 -7
- package/SVF-doxygen/html/functions_n.html +6 -5
- package/SVF-doxygen/html/functions_p.html +15 -14
- package/SVF-doxygen/html/functions_r.html +10 -6
- package/SVF-doxygen/html/functions_rela_c.html +3 -0
- package/SVF-doxygen/html/functions_s.html +24 -21
- package/SVF-doxygen/html/functions_t.html +5 -11
- package/SVF-doxygen/html/functions_type_n.html +2 -1
- package/SVF-doxygen/html/functions_type_s.html +6 -1
- package/SVF-doxygen/html/functions_type_w.html +1 -0
- package/SVF-doxygen/html/functions_v.html +4 -6
- package/SVF-doxygen/html/functions_vars_d.html +0 -15
- package/SVF-doxygen/html/functions_vars_m.html +1 -4
- package/SVF-doxygen/html/functions_vars_p.html +3 -0
- package/SVF-doxygen/html/functions_vars_r.html +3 -0
- package/SVF-doxygen/html/functions_vars_s.html +2 -7
- package/SVF-doxygen/html/functions_vars_t.html +0 -6
- package/SVF-doxygen/html/functions_w.html +3 -2
- package/SVF-doxygen/html/functions_~.html +3 -0
- package/SVF-doxygen/html/hierarchy.html +2 -1
- package/SVF-doxygen/html/namespaceSVF.html +2 -0
- package/SVF-doxygen/html/search/all_10.js +207 -206
- package/SVF-doxygen/html/search/all_11.js +115 -114
- package/SVF-doxygen/html/search/all_12.js +335 -335
- package/SVF-doxygen/html/search/all_13.js +190 -192
- package/SVF-doxygen/html/search/all_14.js +67 -67
- package/SVF-doxygen/html/search/all_15.js +167 -167
- package/SVF-doxygen/html/search/all_16.js +63 -63
- package/SVF-doxygen/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/search/all_18.js +1 -1
- package/SVF-doxygen/html/search/all_19.js +11 -11
- package/SVF-doxygen/html/search/all_1a.js +26 -25
- package/SVF-doxygen/html/search/all_2.js +2 -2
- package/SVF-doxygen/html/search/all_3.js +466 -462
- package/SVF-doxygen/html/search/all_4.js +230 -235
- package/SVF-doxygen/html/search/all_5.js +119 -119
- package/SVF-doxygen/html/search/all_6.js +226 -226
- package/SVF-doxygen/html/search/all_7.js +804 -803
- package/SVF-doxygen/html/search/all_9.js +3 -3
- package/SVF-doxygen/html/search/all_b.js +1 -1
- package/SVF-doxygen/html/search/all_c.js +1 -1
- package/SVF-doxygen/html/search/all_d.js +184 -185
- package/SVF-doxygen/html/search/all_e.js +207 -207
- package/SVF-doxygen/html/search/all_f.js +116 -116
- package/SVF-doxygen/html/search/classes_10.js +73 -73
- package/SVF-doxygen/html/search/classes_11.js +15 -15
- package/SVF-doxygen/html/search/classes_12.js +2 -2
- package/SVF-doxygen/html/search/classes_13.js +10 -10
- package/SVF-doxygen/html/search/classes_14.js +14 -14
- package/SVF-doxygen/html/search/classes_15.js +1 -1
- package/SVF-doxygen/html/search/classes_2.js +37 -36
- package/SVF-doxygen/html/search/classes_3.js +37 -37
- package/SVF-doxygen/html/search/classes_4.js +9 -9
- package/SVF-doxygen/html/search/classes_5.js +28 -28
- package/SVF-doxygen/html/search/classes_6.js +104 -104
- package/SVF-doxygen/html/search/classes_7.js +34 -34
- package/SVF-doxygen/html/search/classes_8.js +56 -56
- package/SVF-doxygen/html/search/classes_9.js +1 -1
- package/SVF-doxygen/html/search/classes_a.js +12 -12
- package/SVF-doxygen/html/search/classes_b.js +29 -29
- package/SVF-doxygen/html/search/classes_c.js +6 -6
- package/SVF-doxygen/html/search/classes_d.js +18 -18
- package/SVF-doxygen/html/search/classes_e.js +36 -36
- package/SVF-doxygen/html/search/classes_f.js +25 -25
- package/SVF-doxygen/html/search/defines_0.js +3 -3
- package/SVF-doxygen/html/search/defines_1.js +2 -2
- package/SVF-doxygen/html/search/defines_2.js +30 -30
- package/SVF-doxygen/html/search/defines_3.js +20 -20
- package/SVF-doxygen/html/search/defines_4.js +2 -2
- package/SVF-doxygen/html/search/defines_5.js +4 -4
- package/SVF-doxygen/html/search/defines_6.js +2 -2
- package/SVF-doxygen/html/search/defines_7.js +5 -5
- package/SVF-doxygen/html/search/defines_8.js +11 -11
- package/SVF-doxygen/html/search/defines_9.js +9 -9
- package/SVF-doxygen/html/search/defines_a.js +2 -2
- package/SVF-doxygen/html/search/defines_b.js +1 -1
- package/SVF-doxygen/html/search/defines_c.js +3 -3
- package/SVF-doxygen/html/search/defines_d.js +2 -2
- package/SVF-doxygen/html/search/defines_e.js +7 -7
- package/SVF-doxygen/html/search/defines_f.js +3 -3
- package/SVF-doxygen/html/search/enums_0.js +3 -3
- package/SVF-doxygen/html/search/enums_1.js +2 -2
- package/SVF-doxygen/html/search/enums_10.js +1 -1
- package/SVF-doxygen/html/search/enums_11.js +1 -1
- package/SVF-doxygen/html/search/enums_2.js +8 -8
- package/SVF-doxygen/html/search/enums_3.js +1 -1
- package/SVF-doxygen/html/search/enums_4.js +3 -3
- package/SVF-doxygen/html/search/enums_5.js +1 -1
- package/SVF-doxygen/html/search/enums_6.js +2 -2
- package/SVF-doxygen/html/search/enums_7.js +2 -2
- package/SVF-doxygen/html/search/enums_8.js +4 -4
- package/SVF-doxygen/html/search/enums_9.js +1 -1
- package/SVF-doxygen/html/search/enums_a.js +1 -1
- package/SVF-doxygen/html/search/enums_b.js +7 -7
- package/SVF-doxygen/html/search/enums_c.js +1 -1
- package/SVF-doxygen/html/search/enums_d.js +4 -4
- package/SVF-doxygen/html/search/enums_e.js +2 -2
- package/SVF-doxygen/html/search/enums_f.js +4 -4
- package/SVF-doxygen/html/search/enumvalues_0.js +14 -14
- package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
- package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
- package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
- package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
- package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
- package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
- package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
- package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
- package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
- package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
- package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
- package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_7.js +9 -9
- package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
- package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
- package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
- package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
- package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
- package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
- package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
- package/SVF-doxygen/html/search/files_0.js +13 -13
- package/SVF-doxygen/html/search/files_1.js +7 -7
- package/SVF-doxygen/html/search/files_10.js +8 -8
- package/SVF-doxygen/html/search/files_11.js +8 -8
- package/SVF-doxygen/html/search/files_12.js +2 -2
- package/SVF-doxygen/html/search/files_2.js +57 -55
- package/SVF-doxygen/html/search/files_3.js +14 -14
- package/SVF-doxygen/html/search/files_4.js +5 -5
- package/SVF-doxygen/html/search/files_5.js +13 -13
- package/SVF-doxygen/html/search/files_6.js +9 -9
- package/SVF-doxygen/html/search/files_7.js +14 -14
- package/SVF-doxygen/html/search/files_8.js +13 -13
- package/SVF-doxygen/html/search/files_9.js +18 -18
- package/SVF-doxygen/html/search/files_a.js +3 -3
- package/SVF-doxygen/html/search/files_b.js +2 -2
- package/SVF-doxygen/html/search/files_c.js +20 -20
- package/SVF-doxygen/html/search/files_d.js +4 -4
- package/SVF-doxygen/html/search/files_e.js +62 -62
- package/SVF-doxygen/html/search/files_f.js +8 -8
- package/SVF-doxygen/html/search/functions_0.js +13 -13
- package/SVF-doxygen/html/search/functions_1.js +362 -362
- package/SVF-doxygen/html/search/functions_10.js +140 -140
- package/SVF-doxygen/html/search/functions_11.js +139 -139
- package/SVF-doxygen/html/search/functions_12.js +289 -288
- package/SVF-doxygen/html/search/functions_13.js +59 -59
- package/SVF-doxygen/html/search/functions_14.js +39 -39
- package/SVF-doxygen/html/search/functions_15.js +71 -71
- package/SVF-doxygen/html/search/functions_16.js +32 -32
- package/SVF-doxygen/html/search/functions_17.js +3 -3
- package/SVF-doxygen/html/search/functions_18.js +173 -172
- package/SVF-doxygen/html/search/functions_2.js +89 -89
- package/SVF-doxygen/html/search/functions_3.js +260 -258
- package/SVF-doxygen/html/search/functions_4.js +78 -78
- package/SVF-doxygen/html/search/functions_5.js +53 -53
- package/SVF-doxygen/html/search/functions_6.js +60 -60
- package/SVF-doxygen/html/search/functions_7.js +856 -855
- package/SVF-doxygen/html/search/functions_8.js +149 -149
- package/SVF-doxygen/html/search/functions_9.js +424 -424
- package/SVF-doxygen/html/search/functions_a.js +30 -30
- package/SVF-doxygen/html/search/functions_b.js +2 -2
- package/SVF-doxygen/html/search/functions_c.js +25 -25
- package/SVF-doxygen/html/search/functions_d.js +79 -79
- package/SVF-doxygen/html/search/functions_e.js +35 -35
- package/SVF-doxygen/html/search/functions_f.js +56 -56
- package/SVF-doxygen/html/search/namespaces_0.js +1 -1
- package/SVF-doxygen/html/search/namespaces_1.js +7 -7
- package/SVF-doxygen/html/search/related_0.js +2 -2
- package/SVF-doxygen/html/search/related_1.js +2 -2
- package/SVF-doxygen/html/search/related_2.js +3 -2
- package/SVF-doxygen/html/search/related_3.js +2 -2
- package/SVF-doxygen/html/search/related_4.js +2 -2
- package/SVF-doxygen/html/search/related_5.js +1 -1
- package/SVF-doxygen/html/search/related_6.js +2 -2
- package/SVF-doxygen/html/search/related_7.js +4 -4
- package/SVF-doxygen/html/search/related_8.js +2 -2
- package/SVF-doxygen/html/search/related_9.js +4 -4
- package/SVF-doxygen/html/search/related_a.js +19 -19
- package/SVF-doxygen/html/search/related_b.js +4 -4
- package/SVF-doxygen/html/search/related_c.js +2 -2
- package/SVF-doxygen/html/search/related_d.js +12 -12
- package/SVF-doxygen/html/search/related_e.js +2 -2
- package/SVF-doxygen/html/search/related_f.js +2 -2
- package/SVF-doxygen/html/search/typedefs_10.js +17 -16
- package/SVF-doxygen/html/search/typedefs_11.js +13 -13
- package/SVF-doxygen/html/search/typedefs_12.js +11 -11
- package/SVF-doxygen/html/search/typedefs_13.js +33 -33
- package/SVF-doxygen/html/search/typedefs_14.js +8 -8
- package/SVF-doxygen/html/search/typedefs_c.js +1 -1
- package/SVF-doxygen/html/search/variables_0.js +151 -151
- package/SVF-doxygen/html/search/variables_1.js +75 -75
- package/SVF-doxygen/html/search/variables_10.js +98 -97
- package/SVF-doxygen/html/search/variables_11.js +45 -44
- package/SVF-doxygen/html/search/variables_12.js +90 -92
- package/SVF-doxygen/html/search/variables_13.js +4 -6
- package/SVF-doxygen/html/search/variables_2.js +38 -38
- package/SVF-doxygen/html/search/variables_3.js +142 -142
- package/SVF-doxygen/html/search/variables_4.js +50 -55
- package/SVF-doxygen/html/search/variables_5.js +37 -37
- package/SVF-doxygen/html/search/variables_6.js +66 -66
- package/SVF-doxygen/html/search/variables_7.js +34 -34
- package/SVF-doxygen/html/search/variables_8.js +7 -7
- package/SVF-doxygen/html/search/variables_9.js +78 -78
- package/SVF-doxygen/html/search/variables_a.js +4 -4
- package/SVF-doxygen/html/search/variables_b.js +10 -10
- package/SVF-doxygen/html/search/variables_c.js +45 -45
- package/SVF-doxygen/html/search/variables_d.js +55 -56
- package/SVF-doxygen/html/search/variables_e.js +123 -123
- package/SVF-doxygen/html/search/variables_f.js +30 -30
- package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/svf-ex_8cpp.html +1 -1
- package/SVF-doxygen/html/svf-ex_8cpp_source.html +1 -1
- package/package.json +1 -1
- package/svf/include/CFL/CFLSVFGBuilder.h +58 -0
- package/svf/include/CFL/CFLVF.h +2 -2
- package/svf/include/Graphs/SVFG.h +1 -0
- package/svf/include/SABER/ProgSlice.h +11 -0
- package/svf/include/SABER/SaberCondAllocator.h +8 -0
- package/svf/include/SABER/SaberSVFGBuilder.h +12 -2
- package/svf/include/Util/Options.h +1 -14
- package/svf/lib/CFL/CFLSVFGBuilder.cpp +100 -0
- package/svf/lib/SABER/ProgSlice.cpp +48 -1
- package/svf/lib/SABER/SaberSVFGBuilder.cpp +5 -0
- package/svf/lib/SABER/SrcSnkDDA.cpp +1 -0
- package/svf/lib/Util/Options.cpp +6 -64
- package/svf/lib/WPA/Andersen.cpp +5 -2
|
@@ -95,6 +95,8 @@ Public Types</h2></td></tr>
|
|
|
95
95
|
<tr class="memitem:a7076e2b7e187a295824189f30ca894e5"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList</a>< const <a class="el" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ProgSlice.html#a7076e2b7e187a295824189f30ca894e5">CFWorkList</a></td></tr>
|
|
96
96
|
<tr class="memdesc:a7076e2b7e187a295824189f30ca894e5"><td class="mdescLeft"> </td><td class="mdescRight">worklist for control-flow guard computation <a href="classSVF_1_1ProgSlice.html#a7076e2b7e187a295824189f30ca894e5">More...</a><br /></td></tr>
|
|
97
97
|
<tr class="separator:a7076e2b7e187a295824189f30ca894e5"><td class="memSeparator" colspan="2"> </td></tr>
|
|
98
|
+
<tr class="memitem:a256122a6455854a99131b807f7eb8335"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classSVF_1_1SaberCondAllocator.html#a1e5ab069ebb4d17f04788a37fa616cab">SaberCondAllocator::SVFGNodeToSVFGNodeSetMap</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ProgSlice.html#a256122a6455854a99131b807f7eb8335">SVFGNodeToSVFGNodeSetMap</a></td></tr>
|
|
99
|
+
<tr class="separator:a256122a6455854a99131b807f7eb8335"><td class="memSeparator" colspan="2"> </td></tr>
|
|
98
100
|
</table><table class="memberdecls">
|
|
99
101
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
|
|
100
102
|
Public Member Functions</h2></td></tr>
|
|
@@ -214,6 +216,11 @@ Protected Member Functions</h2></td></tr>
|
|
|
214
216
|
<tr class="memitem:af55830503ef47b4b1c15c0e5b3cd6a3f"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ProgSlice.html#af55830503ef47b4b1c15c0e5b3cd6a3f">setFinalCond</a> (const <a class="el" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> &cond)</td></tr>
|
|
215
217
|
<tr class="memdesc:af55830503ef47b4b1c15c0e5b3cd6a3f"><td class="mdescLeft"> </td><td class="mdescRight">Set final condition after all path reachability analysis. <a href="classSVF_1_1ProgSlice.html#af55830503ef47b4b1c15c0e5b3cd6a3f">More...</a><br /></td></tr>
|
|
216
218
|
<tr class="separator:af55830503ef47b4b1c15c0e5b3cd6a3f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
219
|
+
<tr class="memitem:abe0cc350db350bd4e9a9973c9052fc41"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ProgSlice.html#abe0cc350db350bd4e9a9973c9052fc41">computeInvalidCondFromRemovedSUVFEdge</a> (const <a class="el" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVFGNode</a> *cur)</td></tr>
|
|
220
|
+
<tr class="memdesc:abe0cc350db350bd4e9a9973c9052fc41"><td class="mdescLeft"> </td><td class="mdescRight">Compute invalid branch condition stemming from removed strong update value-flow edges. <a href="classSVF_1_1ProgSlice.html#abe0cc350db350bd4e9a9973c9052fc41">More...</a><br /></td></tr>
|
|
221
|
+
<tr class="separator:abe0cc350db350bd4e9a9973c9052fc41"><td class="memSeparator" colspan="2"> </td></tr>
|
|
222
|
+
<tr class="memitem:a174a74103c69afbbff58d30f5a41404c"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classSVF_1_1ProgSlice.html#a256122a6455854a99131b807f7eb8335">SVFGNodeToSVFGNodeSetMap</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1ProgSlice.html#a174a74103c69afbbff58d30f5a41404c">getRemovedSUVFEdges</a> () const</td></tr>
|
|
223
|
+
<tr class="separator:a174a74103c69afbbff58d30f5a41404c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
217
224
|
</table><table class="memberdecls">
|
|
218
225
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
|
|
219
226
|
Private Attributes</h2></td></tr>
|
|
@@ -340,6 +347,22 @@ Private Attributes</h2></td></tr>
|
|
|
340
347
|
|
|
341
348
|
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00056">56</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
342
349
|
|
|
350
|
+
</div>
|
|
351
|
+
</div>
|
|
352
|
+
<a id="a256122a6455854a99131b807f7eb8335"></a>
|
|
353
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a256122a6455854a99131b807f7eb8335">◆ </a></span>SVFGNodeToSVFGNodeSetMap</h2>
|
|
354
|
+
|
|
355
|
+
<div class="memitem">
|
|
356
|
+
<div class="memproto">
|
|
357
|
+
<table class="memname">
|
|
358
|
+
<tr>
|
|
359
|
+
<td class="memname">typedef <a class="el" href="classSVF_1_1SaberCondAllocator.html#a1e5ab069ebb4d17f04788a37fa616cab">SaberCondAllocator::SVFGNodeToSVFGNodeSetMap</a> <a class="el" href="classSVF_1_1ProgSlice.html#a256122a6455854a99131b807f7eb8335">SVF::ProgSlice::SVFGNodeToSVFGNodeSetMap</a></td>
|
|
360
|
+
</tr>
|
|
361
|
+
</table>
|
|
362
|
+
</div><div class="memdoc">
|
|
363
|
+
|
|
364
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00061">61</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
365
|
+
|
|
343
366
|
</div>
|
|
344
367
|
</div>
|
|
345
368
|
<a id="a684e44ade783439c6f77a8d84eed282c"></a>
|
|
@@ -403,12 +426,12 @@ Private Attributes</h2></td></tr>
|
|
|
403
426
|
|
|
404
427
|
<p>Constructor. </p>
|
|
405
428
|
|
|
406
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
407
|
-
<div class="fragment"><div class="line"><a name="
|
|
408
|
-
<div class="line"><a name="
|
|
409
|
-
<div class="line"><a name="
|
|
410
|
-
<div class="line"><a name="
|
|
411
|
-
<div class="line"><a name="
|
|
429
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00065">65</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
430
|
+
<div class="fragment"><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  :</div>
|
|
431
|
+
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087">root</a>(src), <a class="code" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">partialReachable</a>(<span class="keyword">false</span>), <a class="code" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">fullReachable</a>(<span class="keyword">false</span>), <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>(<span class="keyword">false</span>),</div>
|
|
432
|
+
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>(pa), <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a>(<span class="keyword">nullptr</span>), <a class="code" href="classSVF_1_1ProgSlice.html#a011fcd4f081926e808e15630cb2d4b47">finalCond</a>(pa->getFalseCond()), <a class="code" href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde">svfg</a>(graph)</div>
|
|
433
|
+
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  {</div>
|
|
434
|
+
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  }</div>
|
|
412
435
|
</div><!-- fragment -->
|
|
413
436
|
</div>
|
|
414
437
|
</div>
|
|
@@ -437,10 +460,10 @@ Private Attributes</h2></td></tr>
|
|
|
437
460
|
|
|
438
461
|
<p>Destructor. </p>
|
|
439
462
|
|
|
440
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
441
|
-
<div class="fragment"><div class="line"><a name="
|
|
442
|
-
<div class="line"><a name="
|
|
443
|
-
<div class="line"><a name="
|
|
463
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00072">72</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
464
|
+
<div class="fragment"><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div>
|
|
465
|
+
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="classSVF_1_1ProgSlice.html#a899332b210414ac991b57e83851ee5be">destroy</a>();</div>
|
|
466
|
+
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  }</div>
|
|
444
467
|
</div><!-- fragment -->
|
|
445
468
|
</div>
|
|
446
469
|
</div>
|
|
@@ -469,10 +492,10 @@ Private Attributes</h2></td></tr>
|
|
|
469
492
|
</table>
|
|
470
493
|
</div><div class="memdoc">
|
|
471
494
|
|
|
472
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
473
|
-
<div class="fragment"><div class="line"><a name="
|
|
474
|
-
<div class="line"><a name="
|
|
475
|
-
<div class="line"><a name="
|
|
495
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00091">91</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
496
|
+
<div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {</div>
|
|
497
|
+
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.insert(node);</div>
|
|
498
|
+
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div>
|
|
476
499
|
</div><!-- fragment -->
|
|
477
500
|
</div>
|
|
478
501
|
</div>
|
|
@@ -502,10 +525,10 @@ Private Attributes</h2></td></tr>
|
|
|
502
525
|
|
|
503
526
|
<p>Forward and backward slice operations. </p>
|
|
504
527
|
|
|
505
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
506
|
-
<div class="fragment"><div class="line"><a name="
|
|
507
|
-
<div class="line"><a name="
|
|
508
|
-
<div class="line"><a name="
|
|
528
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00087">87</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
529
|
+
<div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  {</div>
|
|
530
|
+
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.insert(node);</div>
|
|
531
|
+
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div>
|
|
509
532
|
</div><!-- fragment -->
|
|
510
533
|
</div>
|
|
511
534
|
</div>
|
|
@@ -533,10 +556,10 @@ Private Attributes</h2></td></tr>
|
|
|
533
556
|
</table>
|
|
534
557
|
</div><div class="memdoc">
|
|
535
558
|
|
|
536
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
537
|
-
<div class="fragment"><div class="line"><a name="
|
|
538
|
-
<div class="line"><a name="
|
|
539
|
-
<div class="line"><a name="
|
|
559
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00127">127</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
560
|
+
<div class="fragment"><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div>
|
|
561
|
+
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>.insert(node);</div>
|
|
562
|
+
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div>
|
|
540
563
|
</div><!-- fragment -->
|
|
541
564
|
</div>
|
|
542
565
|
</div>
|
|
@@ -572,41 +595,43 @@ Private Attributes</h2></td></tr>
|
|
|
572
595
|
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div>
|
|
573
596
|
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = worklist.pop();</div>
|
|
574
597
|
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="classSVF_1_1ProgSlice.html#aee72d029c185c24b2bf01cdc0dcb25d8">setCurSVFGNode</a>(node);</div>
|
|
575
|
-
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> 
|
|
576
|
-
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <
|
|
577
|
-
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> 
|
|
578
|
-
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> 
|
|
579
|
-
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> 
|
|
580
|
-
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="
|
|
581
|
-
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> 
|
|
582
|
-
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> 
|
|
583
|
-
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> 
|
|
584
|
-
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <
|
|
585
|
-
<div class="line"><a name="
|
|
586
|
-
<div class="line"><a name="
|
|
587
|
-
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <
|
|
588
|
-
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> 
|
|
589
|
-
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> 
|
|
590
|
-
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> 
|
|
591
|
-
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> 
|
|
592
|
-
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> 
|
|
593
|
-
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> 
|
|
594
|
-
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> 
|
|
595
|
-
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> 
|
|
596
|
-
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> 
|
|
597
|
-
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  </div>
|
|
598
|
-
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> 
|
|
599
|
-
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> 
|
|
600
|
-
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> 
|
|
601
|
-
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> 
|
|
602
|
-
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> 
|
|
603
|
-
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> 
|
|
604
|
-
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> 
|
|
605
|
-
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> 
|
|
606
|
-
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> 
|
|
607
|
-
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> 
|
|
608
|
-
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> 
|
|
609
|
-
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> 
|
|
598
|
+
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  </div>
|
|
599
|
+
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> invalidCond = <a class="code" href="classSVF_1_1ProgSlice.html#abe0cc350db350bd4e9a9973c9052fc41">computeInvalidCondFromRemovedSUVFEdge</a>(node);</div>
|
|
600
|
+
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> cond = <a class="code" href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">getVFCond</a>(node);</div>
|
|
601
|
+
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> it = node-><a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), eit = node-><a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); it!=eit; ++it)</div>
|
|
602
|
+
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div>
|
|
603
|
+
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = (*it);</div>
|
|
604
|
+
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* succ = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div>
|
|
605
|
+
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ProgSlice.html#a066430ffa98a3fa0a5ad48d26e0450f7">inBackwardSlice</a>(succ))</div>
|
|
606
|
+
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  {</div>
|
|
607
|
+
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> vfCond;</div>
|
|
608
|
+
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* nodeBB = <a class="code" href="classSVF_1_1ProgSlice.html#abca08cad9cadc72caf6743df3ff934e7">getSVFGNodeBB</a>(node);</div>
|
|
609
|
+
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* succBB = <a class="code" href="classSVF_1_1ProgSlice.html#abca08cad9cadc72caf6743df3ff934e7">getSVFGNodeBB</a>(succ);</div>
|
|
610
|
+
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="classSVF_1_1ProgSlice.html#ab514f387ae2122e919030c5006f1bbce">clearCFCond</a>();</div>
|
|
611
|
+
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  </div>
|
|
612
|
+
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span>(edge-><a class="code" href="classSVF_1_1VFGEdge.html#a4352297ef44c4eff1efe2f348cce6fe9">isCallVFGEdge</a>())</div>
|
|
613
|
+
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  {</div>
|
|
614
|
+
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  vfCond = <a class="code" href="classSVF_1_1ProgSlice.html#a7a3ba7e6c08d84f82690a594e286205f">ComputeInterCallVFGGuard</a>(nodeBB,succBB, <a class="code" href="classSVF_1_1ProgSlice.html#a8ae327bc7bf72f892d87730edfc67d0d">getCallSite</a>(edge)->getParent());</div>
|
|
615
|
+
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div>
|
|
616
|
+
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(edge-><a class="code" href="classSVF_1_1VFGEdge.html#a3937eef974c3953f1d1e7d64c5a24ff3">isRetVFGEdge</a>())</div>
|
|
617
|
+
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div>
|
|
618
|
+
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  vfCond = <a class="code" href="classSVF_1_1ProgSlice.html#ab7311a806f1c3899b5a4de106eac24b7">ComputeInterRetVFGGuard</a>(nodeBB,succBB, <a class="code" href="classSVF_1_1ProgSlice.html#a07ce77afbf69d5e2a47afaa39eaea886">getRetSite</a>(edge)->getParent());</div>
|
|
619
|
+
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div>
|
|
620
|
+
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">else</span></div>
|
|
621
|
+
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  vfCond = <a class="code" href="classSVF_1_1ProgSlice.html#ae7f6f66b7e70cf872dc572b073f6d67b">ComputeIntraVFGGuard</a>(nodeBB,succBB);</div>
|
|
622
|
+
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  vfCond = <a class="code" href="classSVF_1_1ProgSlice.html#aceb26d08f0d12367e4726e1ff0e25953">condAnd</a>(vfCond, <a class="code" href="classSVF_1_1ProgSlice.html#a0dfd466a758dd0be4c2bc5832c50fbd8">condNeg</a>(invalidCond));</div>
|
|
623
|
+
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> succPathCond = <a class="code" href="classSVF_1_1ProgSlice.html#aceb26d08f0d12367e4726e1ff0e25953">condAnd</a>(cond, vfCond);</div>
|
|
624
|
+
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ProgSlice.html#ab5de7bf99935818ef1b0962e36b8624c">setVFCond</a>(succ, <a class="code" href="classSVF_1_1ProgSlice.html#a3e729aba81cd64e8628df630f5a0f416">condOr</a>(<a class="code" href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">getVFCond</a>(succ), succPathCond) ))</div>
|
|
625
|
+
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  worklist.push(succ);</div>
|
|
626
|
+
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div>
|
|
627
|
+
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  </div>
|
|
628
|
+
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" node ("</span> << node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() <<</div>
|
|
629
|
+
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="stringliteral">") --> "</span> << <span class="stringliteral">"succ ("</span> << succ-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() << <span class="stringliteral">") condition: "</span> << <a class="code" href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">getVFCond</a>(succ) << <span class="stringliteral">"\n"</span>);</div>
|
|
630
|
+
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div>
|
|
631
|
+
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div>
|
|
632
|
+
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  </div>
|
|
633
|
+
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a62a9f2c107f27d6c04c30ef153ffb8ed">isSatisfiableForAll</a>();</div>
|
|
634
|
+
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> }</div>
|
|
610
635
|
</div><!-- fragment -->
|
|
611
636
|
</div>
|
|
612
637
|
</div>
|
|
@@ -633,10 +658,10 @@ Private Attributes</h2></td></tr>
|
|
|
633
658
|
</table>
|
|
634
659
|
</div><div class="memdoc">
|
|
635
660
|
|
|
636
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
637
|
-
<div class="fragment"><div class="line"><a name="
|
|
638
|
-
<div class="line"><a name="
|
|
639
|
-
<div class="line"><a name="
|
|
661
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00111">111</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
662
|
+
<div class="fragment"><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  {</div>
|
|
663
|
+
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.begin();</div>
|
|
664
|
+
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div>
|
|
640
665
|
</div><!-- fragment -->
|
|
641
666
|
</div>
|
|
642
667
|
</div>
|
|
@@ -663,10 +688,10 @@ Private Attributes</h2></td></tr>
|
|
|
663
688
|
</table>
|
|
664
689
|
</div><div class="memdoc">
|
|
665
690
|
|
|
666
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
667
|
-
<div class="fragment"><div class="line"><a name="
|
|
668
|
-
<div class="line"><a name="
|
|
669
|
-
<div class="line"><a name="
|
|
691
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00115">115</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
692
|
+
<div class="fragment"><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  {</div>
|
|
693
|
+
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.end();</div>
|
|
694
|
+
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div>
|
|
670
695
|
</div><!-- fragment -->
|
|
671
696
|
</div>
|
|
672
697
|
</div>
|
|
@@ -696,10 +721,10 @@ Private Attributes</h2></td></tr>
|
|
|
696
721
|
<p>Clear Control flow conditions before each VF computation. </p>
|
|
697
722
|
<p>TODO: how to clean z3 memory</p>
|
|
698
723
|
|
|
699
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
700
|
-
<div class="fragment"><div class="line"><a name="
|
|
701
|
-
<div class="line"><a name="
|
|
702
|
-
<div class="line"><a name="
|
|
724
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00221">221</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
725
|
+
<div class="fragment"><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  {</div>
|
|
726
|
+
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-><a class="code" href="classSVF_1_1SaberCondAllocator.html#a5406e73b860c419143035ee3774e7c1c">clearCFCond</a>();</div>
|
|
727
|
+
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  }</div>
|
|
703
728
|
</div><!-- fragment -->
|
|
704
729
|
</div>
|
|
705
730
|
</div>
|
|
@@ -743,10 +768,10 @@ Private Attributes</h2></td></tr>
|
|
|
743
768
|
</table>
|
|
744
769
|
</div><div class="memdoc">
|
|
745
770
|
|
|
746
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
747
|
-
<div class="fragment"><div class="line"><a name="
|
|
748
|
-
<div class="line"><a name="
|
|
749
|
-
<div class="line"><a name="
|
|
771
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00256">256</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
772
|
+
<div class="fragment"><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  {</div>
|
|
773
|
+
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-><a class="code" href="classSVF_1_1SaberCondAllocator.html#aedb63308f8980bbaf2b6c1bd2826a710">ComputeInterCallVFGGuard</a>(src,dst,callBB);</div>
|
|
774
|
+
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  }</div>
|
|
750
775
|
</div><!-- fragment -->
|
|
751
776
|
</div>
|
|
752
777
|
</div>
|
|
@@ -790,10 +815,10 @@ Private Attributes</h2></td></tr>
|
|
|
790
815
|
</table>
|
|
791
816
|
</div><div class="memdoc">
|
|
792
817
|
|
|
793
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
794
|
-
<div class="fragment"><div class="line"><a name="
|
|
795
|
-
<div class="line"><a name="
|
|
796
|
-
<div class="line"><a name="
|
|
818
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00260">260</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
819
|
+
<div class="fragment"><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  {</div>
|
|
820
|
+
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-><a class="code" href="classSVF_1_1SaberCondAllocator.html#a8bb7f9ce20b5a640aa48c32176f429bf">ComputeInterRetVFGGuard</a>(src,dst,retBB);</div>
|
|
821
|
+
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  }</div>
|
|
797
822
|
</div><!-- fragment -->
|
|
798
823
|
</div>
|
|
799
824
|
</div>
|
|
@@ -833,10 +858,78 @@ Private Attributes</h2></td></tr>
|
|
|
833
858
|
|
|
834
859
|
<p>Compute guards for value-flows. </p>
|
|
835
860
|
|
|
836
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
837
|
-
<div class="fragment"><div class="line"><a name="
|
|
838
|
-
<div class="line"><a name="
|
|
839
|
-
<div class="line"><a name="
|
|
861
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00252">252</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
862
|
+
<div class="fragment"><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  {</div>
|
|
863
|
+
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-><a class="code" href="classSVF_1_1SaberCondAllocator.html#af77d3631664b21a16818f54b03b5a832">ComputeIntraVFGGuard</a>(src,dst);</div>
|
|
864
|
+
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  }</div>
|
|
865
|
+
</div><!-- fragment -->
|
|
866
|
+
</div>
|
|
867
|
+
</div>
|
|
868
|
+
<a id="abe0cc350db350bd4e9a9973c9052fc41"></a>
|
|
869
|
+
<h2 class="memtitle"><span class="permalink"><a href="#abe0cc350db350bd4e9a9973c9052fc41">◆ </a></span>computeInvalidCondFromRemovedSUVFEdge()</h2>
|
|
870
|
+
|
|
871
|
+
<div class="memitem">
|
|
872
|
+
<div class="memproto">
|
|
873
|
+
<table class="mlabels">
|
|
874
|
+
<tr>
|
|
875
|
+
<td class="mlabels-left">
|
|
876
|
+
<table class="memname">
|
|
877
|
+
<tr>
|
|
878
|
+
<td class="memname"><a class="el" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">ProgSlice::Condition</a> ProgSlice::computeInvalidCondFromRemovedSUVFEdge </td>
|
|
879
|
+
<td>(</td>
|
|
880
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVFGNode</a> * </td>
|
|
881
|
+
<td class="paramname"><em>cur</em></td><td>)</td>
|
|
882
|
+
<td></td>
|
|
883
|
+
</tr>
|
|
884
|
+
</table>
|
|
885
|
+
</td>
|
|
886
|
+
<td class="mlabels-right">
|
|
887
|
+
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
|
888
|
+
</tr>
|
|
889
|
+
</table>
|
|
890
|
+
</div><div class="memdoc">
|
|
891
|
+
|
|
892
|
+
<p>Compute invalid branch condition stemming from removed strong update value-flow edges. </p>
|
|
893
|
+
<p>Compute invalid branch condition stemming from removed strong update value-flow edges</p>
|
|
894
|
+
<p>Fix issue: <a href="https://github.com/SVF-tools/SVF/issues/1306">https://github.com/SVF-tools/SVF/issues/1306</a> Line 11->13 is removed due to a strong update at Line 13, which means Line 11 is unreachable to Line 13 on the value flow graph. However on the control flow graph they are still considered as reachable, making the vf guard on Line 11 -> Line 15 a true condition (should consider the infeasible branch Line 11 -> Line 13) Therefore, we collect this infeasible branch condition (condition on Line 11 -> Line 13, <code>a == b</code>) as an invalid condition (invalidCond), and add the negation of invalidCond when computing value flow guard starting from the source of the SU. In this example, we add <code>a != b</code> on Line 11 -> Line 15.</p>
|
|
895
|
+
<dl class="params"><dt>Parameters</dt><dd>
|
|
896
|
+
<table class="params">
|
|
897
|
+
<tr><td class="paramname">cur</td><td>current <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node </td></tr>
|
|
898
|
+
</table>
|
|
899
|
+
</dd>
|
|
900
|
+
</dl>
|
|
901
|
+
<dl class="section return"><dt>Returns</dt><dd>invalid branch condition </dd></dl>
|
|
902
|
+
|
|
903
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00108">108</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
|
|
904
|
+
<div class="fragment"><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> {</div>
|
|
905
|
+
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const SVFBasicBlock*></a> validOutBBs; <span class="comment">// the BBs of valid successors</span></div>
|
|
906
|
+
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> it = cur-><a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), eit = cur-><a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); it!=eit; ++it)</div>
|
|
907
|
+
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  {</div>
|
|
908
|
+
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = (*it);</div>
|
|
909
|
+
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* succ = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div>
|
|
910
|
+
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ProgSlice.html#a066430ffa98a3fa0a5ad48d26e0450f7">inBackwardSlice</a>(succ))</div>
|
|
911
|
+
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  {</div>
|
|
912
|
+
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  validOutBBs.insert(<a class="code" href="classSVF_1_1ProgSlice.html#abca08cad9cadc72caf6743df3ff934e7">getSVFGNodeBB</a>(succ));</div>
|
|
913
|
+
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div>
|
|
914
|
+
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div>
|
|
915
|
+
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> invalidCond = <a class="code" href="classSVF_1_1ProgSlice.html#a9d81f792b6a8b15395a63d06daf56573">getFalseCond</a>();</div>
|
|
916
|
+
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keyword">auto</span> suVFEdgesIt = <a class="code" href="classSVF_1_1ProgSlice.html#a174a74103c69afbbff58d30f5a41404c">getRemovedSUVFEdges</a>().find(cur);</div>
|
|
917
|
+
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">if</span> (suVFEdgesIt != <a class="code" href="classSVF_1_1ProgSlice.html#a174a74103c69afbbff58d30f5a41404c">getRemovedSUVFEdges</a>().end())</div>
|
|
918
|
+
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  {</div>
|
|
919
|
+
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &succ: suVFEdgesIt->second)</div>
|
|
920
|
+
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  {</div>
|
|
921
|
+
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span> (!validOutBBs.count(<a class="code" href="classSVF_1_1ProgSlice.html#abca08cad9cadc72caf6743df3ff934e7">getSVFGNodeBB</a>(succ)))</div>
|
|
922
|
+
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  {</div>
|
|
923
|
+
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// removed vfg node does not reside in the BBs of valid successors</span></div>
|
|
924
|
+
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *nodeBB = <a class="code" href="classSVF_1_1ProgSlice.html#abca08cad9cadc72caf6743df3ff934e7">getSVFGNodeBB</a>(cur);</div>
|
|
925
|
+
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *succBB = <a class="code" href="classSVF_1_1ProgSlice.html#abca08cad9cadc72caf6743df3ff934e7">getSVFGNodeBB</a>(succ);</div>
|
|
926
|
+
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="classSVF_1_1ProgSlice.html#ab514f387ae2122e919030c5006f1bbce">clearCFCond</a>();</div>
|
|
927
|
+
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  invalidCond = <a class="code" href="classSVF_1_1ProgSlice.html#a3e729aba81cd64e8628df630f5a0f416">condOr</a>(invalidCond, <a class="code" href="classSVF_1_1ProgSlice.html#ae7f6f66b7e70cf872dc572b073f6d67b">ComputeIntraVFGGuard</a>(nodeBB, succBB));</div>
|
|
928
|
+
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div>
|
|
929
|
+
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div>
|
|
930
|
+
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div>
|
|
931
|
+
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">return</span> invalidCond;</div>
|
|
932
|
+
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> }</div>
|
|
840
933
|
</div><!-- fragment -->
|
|
841
934
|
</div>
|
|
842
935
|
</div>
|
|
@@ -876,10 +969,10 @@ Private Attributes</h2></td></tr>
|
|
|
876
969
|
|
|
877
970
|
<p>Condition operations. </p>
|
|
878
971
|
|
|
879
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
880
|
-
<div class="fragment"><div class="line"><a name="
|
|
881
|
-
<div class="line"><a name="
|
|
882
|
-
<div class="line"><a name="
|
|
972
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00182">182</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
973
|
+
<div class="fragment"><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  {</div>
|
|
974
|
+
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-><a class="code" href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">condAnd</a>(lhs,rhs);</div>
|
|
975
|
+
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div>
|
|
883
976
|
</div><!-- fragment -->
|
|
884
977
|
</div>
|
|
885
978
|
</div>
|
|
@@ -907,10 +1000,10 @@ Private Attributes</h2></td></tr>
|
|
|
907
1000
|
</table>
|
|
908
1001
|
</div><div class="memdoc">
|
|
909
1002
|
|
|
910
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
911
|
-
<div class="fragment"><div class="line"><a name="
|
|
912
|
-
<div class="line"><a name="
|
|
913
|
-
<div class="line"><a name="
|
|
1003
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00190">190</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1004
|
+
<div class="fragment"><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  {</div>
|
|
1005
|
+
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-><a class="code" href="classSVF_1_1SaberCondAllocator.html#a620d53b9af8dd30523c478f4e9655817">condNeg</a>(cond);</div>
|
|
1006
|
+
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div>
|
|
914
1007
|
</div><!-- fragment -->
|
|
915
1008
|
</div>
|
|
916
1009
|
</div>
|
|
@@ -948,10 +1041,10 @@ Private Attributes</h2></td></tr>
|
|
|
948
1041
|
</table>
|
|
949
1042
|
</div><div class="memdoc">
|
|
950
1043
|
|
|
951
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
952
|
-
<div class="fragment"><div class="line"><a name="
|
|
953
|
-
<div class="line"><a name="
|
|
954
|
-
<div class="line"><a name="
|
|
1044
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00186">186</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1045
|
+
<div class="fragment"><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  {</div>
|
|
1046
|
+
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-><a class="code" href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">condOr</a>(lhs,rhs);</div>
|
|
1047
|
+
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  }</div>
|
|
955
1048
|
</div><!-- fragment -->
|
|
956
1049
|
</div>
|
|
957
1050
|
</div>
|
|
@@ -980,9 +1073,9 @@ Private Attributes</h2></td></tr>
|
|
|
980
1073
|
|
|
981
1074
|
<p>Release memory. </p>
|
|
982
1075
|
|
|
983
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#
|
|
984
|
-
<div class="fragment"><div class="line"><a name="
|
|
985
|
-
<div class="line"><a name="
|
|
1076
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00246">246</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
|
|
1077
|
+
<div class="fragment"><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> {</div>
|
|
1078
|
+
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> }</div>
|
|
986
1079
|
</div><!-- fragment -->
|
|
987
1080
|
</div>
|
|
988
1081
|
</div>
|
|
@@ -1010,10 +1103,10 @@ Private Attributes</h2></td></tr>
|
|
|
1010
1103
|
</table>
|
|
1011
1104
|
</div><div class="memdoc">
|
|
1012
1105
|
|
|
1013
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1014
|
-
<div class="fragment"><div class="line"><a name="
|
|
1015
|
-
<div class="line"><a name="
|
|
1016
|
-
<div class="line"><a name="
|
|
1106
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00202">202</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1107
|
+
<div class="fragment"><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  {</div>
|
|
1108
|
+
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-><a class="code" href="classSVF_1_1SaberCondAllocator.html#a100c1962eac6d7af420defc827a025ed">dumpCond</a>(cond);</div>
|
|
1109
|
+
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  }</div>
|
|
1017
1110
|
</div><!-- fragment -->
|
|
1018
1111
|
</div>
|
|
1019
1112
|
</div>
|
|
@@ -1037,30 +1130,30 @@ Private Attributes</h2></td></tr>
|
|
|
1037
1130
|
<p>Atom – a propositional variable: a, b, c Literal – an atom or its negation: a, ~a Clause – A disjunction of some literals: a \vee b CNF formula – a conjunction of some clauses: (a \vee b ) \wedge (c \vee d) </p>
|
|
1038
1131
|
<p>print leak path after eliminating duplicated element</p>
|
|
1039
1132
|
|
|
1040
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#
|
|
1041
|
-
<div class="fragment"><div class="line"><a name="
|
|
1042
|
-
<div class="line"><a name="
|
|
1043
|
-
<div class="line"><a name="
|
|
1044
|
-
<div class="line"><a name="
|
|
1045
|
-
<div class="line"><a name="
|
|
1046
|
-
<div class="line"><a name="
|
|
1047
|
-
<div class="line"><a name="
|
|
1048
|
-
<div class="line"><a name="
|
|
1049
|
-
<div class="line"><a name="
|
|
1050
|
-
<div class="line"><a name="
|
|
1051
|
-
<div class="line"><a name="
|
|
1052
|
-
<div class="line"><a name="
|
|
1053
|
-
<div class="line"><a name="
|
|
1054
|
-
<div class="line"><a name="
|
|
1055
|
-
<div class="line"><a name="
|
|
1056
|
-
<div class="line"><a name="
|
|
1057
|
-
<div class="line"><a name="
|
|
1058
|
-
<div class="line"><a name="
|
|
1059
|
-
<div class="line"><a name="
|
|
1060
|
-
<div class="line"><a name="
|
|
1061
|
-
<div class="line"><a name="
|
|
1062
|
-
<div class="line"><a name="
|
|
1063
|
-
<div class="line"><a name="
|
|
1133
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00220">220</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
|
|
1134
|
+
<div class="fragment"><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> {</div>
|
|
1135
|
+
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
1136
|
+
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  std::stringstream rawstr(str);</div>
|
|
1137
|
+
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<std::string></a> locations;</div>
|
|
1138
|
+
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> elems = <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-><a class="code" href="classSVF_1_1SaberCondAllocator.html#a87205db039579f05214507c48d6befec">exactCondElem</a>(<a class="code" href="classSVF_1_1ProgSlice.html#a011fcd4f081926e808e15630cb2d4b47">finalCond</a>);</div>
|
|
1139
|
+
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  </div>
|
|
1140
|
+
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> it = elems.<a class="code" href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">begin</a>(), eit = elems.<a class="code" href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">end</a>(); it!=eit; ++it)</div>
|
|
1141
|
+
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  {</div>
|
|
1142
|
+
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* tinst = <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-><a class="code" href="classSVF_1_1SaberCondAllocator.html#a1d8b90edf6ec679a97282ba60c07134d">getCondInst</a>(*it);</div>
|
|
1143
|
+
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-><a class="code" href="classSVF_1_1SaberCondAllocator.html#ad5d27f65374025b6a105ea7a92cbdb50">isNegCond</a>(*it))</div>
|
|
1144
|
+
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  locations.insert(tinst-><a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>()+<span class="stringliteral">"|False"</span>);</div>
|
|
1145
|
+
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">else</span></div>
|
|
1146
|
+
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  locations.insert(tinst-><a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>()+<span class="stringliteral">"|True"</span>);</div>
|
|
1147
|
+
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div>
|
|
1148
|
+
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  </div>
|
|
1149
|
+
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<std::string>::iterator</a> iter = locations.begin(), eiter = locations.end();</div>
|
|
1150
|
+
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  iter!=eiter; ++iter)</div>
|
|
1151
|
+
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  {</div>
|
|
1152
|
+
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  rawstr << <span class="stringliteral">"\t\t --> ("</span> << *iter << <span class="stringliteral">") \n"</span>;</div>
|
|
1153
|
+
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  }</div>
|
|
1154
|
+
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  </div>
|
|
1155
|
+
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
1156
|
+
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> }</div>
|
|
1064
1157
|
</div><!-- fragment -->
|
|
1065
1158
|
</div>
|
|
1066
1159
|
</div>
|
|
@@ -1082,20 +1175,20 @@ Private Attributes</h2></td></tr>
|
|
|
1082
1175
|
|
|
1083
1176
|
<p>Add final condition to eventStack. </p>
|
|
1084
1177
|
|
|
1085
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#
|
|
1086
|
-
<div class="fragment"><div class="line"><a name="
|
|
1087
|
-
<div class="line"><a name="
|
|
1088
|
-
<div class="line"><a name="
|
|
1089
|
-
<div class="line"><a name="
|
|
1090
|
-
<div class="line"><a name="
|
|
1091
|
-
<div class="line"><a name="
|
|
1092
|
-
<div class="line"><a name="
|
|
1093
|
-
<div class="line"><a name="
|
|
1094
|
-
<div class="line"><a name="
|
|
1095
|
-
<div class="line"><a name="
|
|
1096
|
-
<div class="line"><a name="
|
|
1097
|
-
<div class="line"><a name="
|
|
1098
|
-
<div class="line"><a name="
|
|
1178
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00196">196</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
|
|
1179
|
+
<div class="fragment"><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> {</div>
|
|
1180
|
+
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> elems = <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-><a class="code" href="classSVF_1_1SaberCondAllocator.html#a87205db039579f05214507c48d6befec">exactCondElem</a>(<a class="code" href="classSVF_1_1ProgSlice.html#a011fcd4f081926e808e15630cb2d4b47">finalCond</a>);</div>
|
|
1181
|
+
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> it = elems.<a class="code" href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">begin</a>(), eit = elems.<a class="code" href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">end</a>(); it!=eit; ++it)</div>
|
|
1182
|
+
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  {</div>
|
|
1183
|
+
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* tinst = <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-><a class="code" href="classSVF_1_1SaberCondAllocator.html#a1d8b90edf6ec679a97282ba60c07134d">getCondInst</a>(*it);</div>
|
|
1184
|
+
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-><a class="code" href="classSVF_1_1SaberCondAllocator.html#ad5d27f65374025b6a105ea7a92cbdb50">isNegCond</a>(*it))</div>
|
|
1185
|
+
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  eventStack.push_back(<a class="code" href="classSVF_1_1SVFBugEvent.html">SVFBugEvent</a>(</div>
|
|
1186
|
+
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="classSVF_1_1SVFBugEvent.html#a4d0c0744525bc445a64176c3808377f3a070acf2c72c74cba55b5acea3db9c854">SVFBugEvent::Branch</a>|((((<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)<span class="keyword">false</span>) << 4) & <a class="code" href="SVFBugReport_8h.html#a6c7cd1f1c2372251f51de3a8392faeec">BRANCHFLAGMASK</a>), tinst));</div>
|
|
1187
|
+
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">else</span></div>
|
|
1188
|
+
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  eventStack.push_back(<a class="code" href="classSVF_1_1SVFBugEvent.html">SVFBugEvent</a>(</div>
|
|
1189
|
+
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="classSVF_1_1SVFBugEvent.html#a4d0c0744525bc445a64176c3808377f3a070acf2c72c74cba55b5acea3db9c854">SVFBugEvent::Branch</a>|((((<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)<span class="keyword">true</span>) << 4) & <a class="code" href="SVFBugReport_8h.html#a6c7cd1f1c2372251f51de3a8392faeec">BRANCHFLAGMASK</a>), tinst));</div>
|
|
1190
|
+
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div>
|
|
1191
|
+
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> }</div>
|
|
1099
1192
|
</div><!-- fragment -->
|
|
1100
1193
|
</div>
|
|
1101
1194
|
</div>
|
|
@@ -1122,10 +1215,10 @@ Private Attributes</h2></td></tr>
|
|
|
1122
1215
|
</table>
|
|
1123
1216
|
</div><div class="memdoc">
|
|
1124
1217
|
|
|
1125
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1126
|
-
<div class="fragment"><div class="line"><a name="
|
|
1127
|
-
<div class="line"><a name="
|
|
1128
|
-
<div class="line"><a name="
|
|
1218
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00103">103</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1219
|
+
<div class="fragment"><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div>
|
|
1220
|
+
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.begin();</div>
|
|
1221
|
+
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div>
|
|
1129
1222
|
</div><!-- fragment -->
|
|
1130
1223
|
</div>
|
|
1131
1224
|
</div>
|
|
@@ -1152,10 +1245,10 @@ Private Attributes</h2></td></tr>
|
|
|
1152
1245
|
</table>
|
|
1153
1246
|
</div><div class="memdoc">
|
|
1154
1247
|
|
|
1155
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1156
|
-
<div class="fragment"><div class="line"><a name="
|
|
1157
|
-
<div class="line"><a name="
|
|
1158
|
-
<div class="line"><a name="
|
|
1248
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00107">107</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1249
|
+
<div class="fragment"><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  {</div>
|
|
1250
|
+
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.end();</div>
|
|
1251
|
+
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div>
|
|
1159
1252
|
</div><!-- fragment -->
|
|
1160
1253
|
</div>
|
|
1161
1254
|
</div>
|
|
@@ -1182,10 +1275,10 @@ Private Attributes</h2></td></tr>
|
|
|
1182
1275
|
</table>
|
|
1183
1276
|
</div><div class="memdoc">
|
|
1184
1277
|
|
|
1185
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1186
|
-
<div class="fragment"><div class="line"><a name="
|
|
1187
|
-
<div class="line"><a name="
|
|
1188
|
-
<div class="line"><a name="
|
|
1278
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00081">81</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1279
|
+
<div class="fragment"><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div>
|
|
1280
|
+
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">backwardslice</a>.size();</div>
|
|
1281
|
+
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div>
|
|
1189
1282
|
</div><!-- fragment -->
|
|
1190
1283
|
</div>
|
|
1191
1284
|
</div>
|
|
@@ -1207,14 +1300,14 @@ Private Attributes</h2></td></tr>
|
|
|
1207
1300
|
|
|
1208
1301
|
<p>Get callsite ID and get returnsiteID from SVFGEdge. </p>
|
|
1209
1302
|
|
|
1210
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#
|
|
1211
|
-
<div class="fragment"><div class="line"><a name="
|
|
1212
|
-
<div class="line"><a name="
|
|
1213
|
-
<div class="line"><a name="
|
|
1214
|
-
<div class="line"><a name="
|
|
1215
|
-
<div class="line"><a name="
|
|
1216
|
-
<div class="line"><a name="
|
|
1217
|
-
<div class="line"><a name="
|
|
1303
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00179">179</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
|
|
1304
|
+
<div class="fragment"><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> {</div>
|
|
1305
|
+
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  assert(edge-><a class="code" href="classSVF_1_1VFGEdge.html#a4352297ef44c4eff1efe2f348cce6fe9">isCallVFGEdge</a>() && <span class="stringliteral">"not a call svfg edge?"</span>);</div>
|
|
1306
|
+
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallDirSVFGEdge.html">CallDirSVFGEdge</a>* callEdge = SVFUtil::dyn_cast<CallDirSVFGEdge>(edge))</div>
|
|
1307
|
+
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a32ffd130984483b201c485da91ec467f">getSVFG</a>()-><a class="code" href="classSVF_1_1VFG.html#a246cce511b8e9164a7c1760d1983f492">getCallSite</a>(callEdge->getCallSiteId());</div>
|
|
1308
|
+
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">else</span></div>
|
|
1309
|
+
<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#a32ffd130984483b201c485da91ec467f">getSVFG</a>()-><a class="code" href="classSVF_1_1VFG.html#a246cce511b8e9164a7c1760d1983f492">getCallSite</a>(SVFUtil::cast<CallIndSVFGEdge>(edge)->getCallSiteId());</div>
|
|
1310
|
+
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> }</div>
|
|
1218
1311
|
</div><!-- fragment -->
|
|
1219
1312
|
</div>
|
|
1220
1313
|
</div>
|
|
@@ -1243,10 +1336,10 @@ Private Attributes</h2></td></tr>
|
|
|
1243
1336
|
|
|
1244
1337
|
<p>Get/set current <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node. </p>
|
|
1245
1338
|
|
|
1246
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1247
|
-
<div class="fragment"><div class="line"><a name="
|
|
1248
|
-
<div class="line"><a name="
|
|
1249
|
-
<div class="line"><a name="
|
|
1339
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00286">286</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1340
|
+
<div class="fragment"><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  {</div>
|
|
1341
|
+
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a>;</div>
|
|
1342
|
+
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div>
|
|
1250
1343
|
</div><!-- fragment -->
|
|
1251
1344
|
</div>
|
|
1252
1345
|
</div>
|
|
@@ -1273,10 +1366,10 @@ Private Attributes</h2></td></tr>
|
|
|
1273
1366
|
</table>
|
|
1274
1367
|
</div><div class="memdoc">
|
|
1275
1368
|
|
|
1276
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1277
|
-
<div class="fragment"><div class="line"><a name="
|
|
1278
|
-
<div class="line"><a name="
|
|
1279
|
-
<div class="line"><a name="
|
|
1369
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00198">198</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1370
|
+
<div class="fragment"><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  {</div>
|
|
1371
|
+
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-><a class="code" href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">getFalseCond</a>();</div>
|
|
1372
|
+
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div>
|
|
1280
1373
|
</div><!-- fragment -->
|
|
1281
1374
|
</div>
|
|
1282
1375
|
</div>
|
|
@@ -1303,10 +1396,40 @@ Private Attributes</h2></td></tr>
|
|
|
1303
1396
|
</table>
|
|
1304
1397
|
</div><div class="memdoc">
|
|
1305
1398
|
|
|
1306
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1307
|
-
<div class="fragment"><div class="line"><a name="
|
|
1308
|
-
<div class="line"><a name="
|
|
1309
|
-
<div class="line"><a name="
|
|
1399
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00077">77</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1400
|
+
<div class="fragment"><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  {</div>
|
|
1401
|
+
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">forwardslice</a>.size();</div>
|
|
1402
|
+
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div>
|
|
1403
|
+
</div><!-- fragment -->
|
|
1404
|
+
</div>
|
|
1405
|
+
</div>
|
|
1406
|
+
<a id="a174a74103c69afbbff58d30f5a41404c"></a>
|
|
1407
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a174a74103c69afbbff58d30f5a41404c">◆ </a></span>getRemovedSUVFEdges()</h2>
|
|
1408
|
+
|
|
1409
|
+
<div class="memitem">
|
|
1410
|
+
<div class="memproto">
|
|
1411
|
+
<table class="mlabels">
|
|
1412
|
+
<tr>
|
|
1413
|
+
<td class="mlabels-left">
|
|
1414
|
+
<table class="memname">
|
|
1415
|
+
<tr>
|
|
1416
|
+
<td class="memname">const <a class="el" href="classSVF_1_1ProgSlice.html#a256122a6455854a99131b807f7eb8335">SVFGNodeToSVFGNodeSetMap</a>& SVF::ProgSlice::getRemovedSUVFEdges </td>
|
|
1417
|
+
<td>(</td>
|
|
1418
|
+
<td class="paramname"></td><td>)</td>
|
|
1419
|
+
<td> const</td>
|
|
1420
|
+
</tr>
|
|
1421
|
+
</table>
|
|
1422
|
+
</td>
|
|
1423
|
+
<td class="mlabels-right">
|
|
1424
|
+
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
|
|
1425
|
+
</tr>
|
|
1426
|
+
</table>
|
|
1427
|
+
</div><div class="memdoc">
|
|
1428
|
+
|
|
1429
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00305">305</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1430
|
+
<div class="fragment"><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  {</div>
|
|
1431
|
+
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-><a class="code" href="classSVF_1_1SaberCondAllocator.html#aaac0aab3bb5c3533889779b4f63bd6a4">getRemovedSUVFEdges</a>();</div>
|
|
1432
|
+
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  }</div>
|
|
1310
1433
|
</div><!-- fragment -->
|
|
1311
1434
|
</div>
|
|
1312
1435
|
</div>
|
|
@@ -1326,14 +1449,14 @@ Private Attributes</h2></td></tr>
|
|
|
1326
1449
|
</table>
|
|
1327
1450
|
</div><div class="memdoc">
|
|
1328
1451
|
|
|
1329
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#
|
|
1330
|
-
<div class="fragment"><div class="line"><a name="
|
|
1331
|
-
<div class="line"><a name="
|
|
1332
|
-
<div class="line"><a name="
|
|
1333
|
-
<div class="line"><a name="
|
|
1334
|
-
<div class="line"><a name="
|
|
1335
|
-
<div class="line"><a name="
|
|
1336
|
-
<div class="line"><a name="
|
|
1452
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00187">187</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
|
|
1453
|
+
<div class="fragment"><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> {</div>
|
|
1454
|
+
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  assert(edge-><a class="code" href="classSVF_1_1VFGEdge.html#a3937eef974c3953f1d1e7d64c5a24ff3">isRetVFGEdge</a>() && <span class="stringliteral">"not a return svfg edge?"</span>);</div>
|
|
1455
|
+
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetDirSVFGEdge.html">RetDirSVFGEdge</a>* callEdge = SVFUtil::dyn_cast<RetDirSVFGEdge>(edge))</div>
|
|
1456
|
+
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a32ffd130984483b201c485da91ec467f">getSVFG</a>()-><a class="code" href="classSVF_1_1VFG.html#a246cce511b8e9164a7c1760d1983f492">getCallSite</a>(callEdge->getCallSiteId());</div>
|
|
1457
|
+
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">else</span></div>
|
|
1458
|
+
<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#a32ffd130984483b201c485da91ec467f">getSVFG</a>()-><a class="code" href="classSVF_1_1VFG.html#a246cce511b8e9164a7c1760d1983f492">getCallSite</a>(SVFUtil::cast<RetIndSVFGEdge>(edge)->getCallSiteId());</div>
|
|
1459
|
+
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> }</div>
|
|
1337
1460
|
</div><!-- fragment -->
|
|
1338
1461
|
</div>
|
|
1339
1462
|
</div>
|
|
@@ -1360,10 +1483,10 @@ Private Attributes</h2></td></tr>
|
|
|
1360
1483
|
</table>
|
|
1361
1484
|
</div><div class="memdoc">
|
|
1362
1485
|
|
|
1363
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1364
|
-
<div class="fragment"><div class="line"><a name="
|
|
1365
|
-
<div class="line"><a name="
|
|
1366
|
-
<div class="line"><a name="
|
|
1486
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00131">131</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1487
|
+
<div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div>
|
|
1488
|
+
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>;</div>
|
|
1489
|
+
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div>
|
|
1367
1490
|
</div><!-- fragment -->
|
|
1368
1491
|
</div>
|
|
1369
1492
|
</div>
|
|
@@ -1392,10 +1515,10 @@ Private Attributes</h2></td></tr>
|
|
|
1392
1515
|
|
|
1393
1516
|
<p>root and sink operations </p>
|
|
1394
1517
|
|
|
1395
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1396
|
-
<div class="fragment"><div class="line"><a name="
|
|
1397
|
-
<div class="line"><a name="
|
|
1398
|
-
<div class="line"><a name="
|
|
1518
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00123">123</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1519
|
+
<div class="fragment"><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  {</div>
|
|
1520
|
+
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087">root</a>;</div>
|
|
1521
|
+
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div>
|
|
1399
1522
|
</div><!-- fragment -->
|
|
1400
1523
|
</div>
|
|
1401
1524
|
</div>
|
|
@@ -1422,10 +1545,10 @@ Private Attributes</h2></td></tr>
|
|
|
1422
1545
|
</table>
|
|
1423
1546
|
</div><div class="memdoc">
|
|
1424
1547
|
|
|
1425
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1426
|
-
<div class="fragment"><div class="line"><a name="
|
|
1427
|
-
<div class="line"><a name="
|
|
1428
|
-
<div class="line"><a name="
|
|
1548
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00213">213</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1549
|
+
<div class="fragment"><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div>
|
|
1550
|
+
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde">svfg</a>;</div>
|
|
1551
|
+
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div>
|
|
1429
1552
|
</div><!-- fragment -->
|
|
1430
1553
|
</div>
|
|
1431
1554
|
</div>
|
|
@@ -1454,15 +1577,15 @@ Private Attributes</h2></td></tr>
|
|
|
1454
1577
|
</div><div class="memdoc">
|
|
1455
1578
|
<p>Return the basic block where a SVFGNode resides in a SVFGNode may not in a basic block if it is not a program statement (e.g. PAGEdge is an global assignment or NullPtrSVFGNode) </p>
|
|
1456
1579
|
|
|
1457
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1458
|
-
<div class="fragment"><div class="line"><a name="
|
|
1459
|
-
<div class="line"><a name="
|
|
1460
|
-
<div class="line"><a name="
|
|
1461
|
-
<div class="line"><a name="
|
|
1462
|
-
<div class="line"><a name="
|
|
1463
|
-
<div class="line"><a name="
|
|
1464
|
-
<div class="line"><a name="
|
|
1465
|
-
<div class="line"><a name="
|
|
1580
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00274">274</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1581
|
+
<div class="fragment"><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  {</div>
|
|
1582
|
+
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keyword">const</span> ICFGNode* icfgNode = node->getICFGNode();</div>
|
|
1583
|
+
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">if</span>(SVFUtil::isa<NullPtrSVFGNode>(node) == <span class="keyword">false</span>)</div>
|
|
1584
|
+
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  {</div>
|
|
1585
|
+
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">return</span> icfgNode->getBB();</div>
|
|
1586
|
+
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div>
|
|
1587
|
+
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
|
1588
|
+
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div>
|
|
1466
1589
|
</div><!-- fragment -->
|
|
1467
1590
|
</div>
|
|
1468
1591
|
</div>
|
|
@@ -1489,10 +1612,10 @@ Private Attributes</h2></td></tr>
|
|
|
1489
1612
|
</table>
|
|
1490
1613
|
</div><div class="memdoc">
|
|
1491
1614
|
|
|
1492
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1493
|
-
<div class="fragment"><div class="line"><a name="
|
|
1494
|
-
<div class="line"><a name="
|
|
1495
|
-
<div class="line"><a name="
|
|
1615
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00194">194</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1616
|
+
<div class="fragment"><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div>
|
|
1617
|
+
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-><a class="code" href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">getTrueCond</a>();</div>
|
|
1618
|
+
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div>
|
|
1496
1619
|
</div><!-- fragment -->
|
|
1497
1620
|
</div>
|
|
1498
1621
|
</div>
|
|
@@ -1522,15 +1645,15 @@ Private Attributes</h2></td></tr>
|
|
|
1522
1645
|
|
|
1523
1646
|
<p>Get/set VF (value-flow) and CF (control-flow) conditions. </p>
|
|
1524
1647
|
|
|
1525
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1526
|
-
<div class="fragment"><div class="line"><a name="
|
|
1527
|
-
<div class="line"><a name="
|
|
1528
|
-
<div class="line"><a name="
|
|
1529
|
-
<div class="line"><a name="
|
|
1530
|
-
<div class="line"><a name="
|
|
1531
|
-
<div class="line"><a name="
|
|
1532
|
-
<div class="line"><a name="
|
|
1533
|
-
<div class="line"><a name="
|
|
1648
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00229">229</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1649
|
+
<div class="fragment"><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  {</div>
|
|
1650
|
+
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  SVFGNodeToCondMap::const_iterator it = <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.find(node);</div>
|
|
1651
|
+
<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())</div>
|
|
1652
|
+
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  {</div>
|
|
1653
|
+
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#a9d81f792b6a8b15395a63d06daf56573">getFalseCond</a>();</div>
|
|
1654
|
+
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  }</div>
|
|
1655
|
+
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">return</span> it->second;</div>
|
|
1656
|
+
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  }</div>
|
|
1534
1657
|
</div><!-- fragment -->
|
|
1535
1658
|
</div>
|
|
1536
1659
|
</div>
|
|
@@ -1558,10 +1681,10 @@ Private Attributes</h2></td></tr>
|
|
|
1558
1681
|
</table>
|
|
1559
1682
|
</div><div class="memdoc">
|
|
1560
1683
|
|
|
1561
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1562
|
-
<div class="fragment"><div class="line"><a name="
|
|
1563
|
-
<div class="line"><a name="
|
|
1564
|
-
<div class="line"><a name="
|
|
1684
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00099">99</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1685
|
+
<div class="fragment"><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div>
|
|
1686
|
+
<div class="line"><a name="l00101"></a><span class="lineno"> 101</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>
|
|
1687
|
+
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div>
|
|
1565
1688
|
</div><!-- fragment -->
|
|
1566
1689
|
</div>
|
|
1567
1690
|
</div>
|
|
@@ -1589,10 +1712,10 @@ Private Attributes</h2></td></tr>
|
|
|
1589
1712
|
</table>
|
|
1590
1713
|
</div><div class="memdoc">
|
|
1591
1714
|
|
|
1592
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1593
|
-
<div class="fragment"><div class="line"><a name="
|
|
1594
|
-
<div class="line"><a name="
|
|
1595
|
-
<div class="line"><a name="
|
|
1715
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00095">95</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1716
|
+
<div class="fragment"><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  {</div>
|
|
1717
|
+
<div class="line"><a name="l00097"></a><span class="lineno"> 97</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>
|
|
1718
|
+
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div>
|
|
1596
1719
|
</div><!-- fragment -->
|
|
1597
1720
|
</div>
|
|
1598
1721
|
</div>
|
|
@@ -1619,10 +1742,10 @@ Private Attributes</h2></td></tr>
|
|
|
1619
1742
|
</table>
|
|
1620
1743
|
</div><div class="memdoc">
|
|
1621
1744
|
|
|
1622
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1623
|
-
<div class="fragment"><div class="line"><a name="
|
|
1624
|
-
<div class="line"><a name="
|
|
1625
|
-
<div class="line"><a name="
|
|
1745
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00159">159</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1746
|
+
<div class="fragment"><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  {</div>
|
|
1747
|
+
<div class="line"><a name="l00161"></a><span class="lineno"> 161</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>
|
|
1748
|
+
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div>
|
|
1626
1749
|
</div><!-- fragment -->
|
|
1627
1750
|
</div>
|
|
1628
1751
|
</div>
|
|
@@ -1660,10 +1783,10 @@ Private Attributes</h2></td></tr>
|
|
|
1660
1783
|
</table>
|
|
1661
1784
|
</div><div class="memdoc">
|
|
1662
1785
|
|
|
1663
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1664
|
-
<div class="fragment"><div class="line"><a name="
|
|
1665
|
-
<div class="line"><a name="
|
|
1666
|
-
<div class="line"><a name="
|
|
1786
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00266">266</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1787
|
+
<div class="fragment"><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  {</div>
|
|
1788
|
+
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-><a class="code" href="classSVF_1_1SaberCondAllocator.html#aa9027574586fd4fbb12039f595ecec71">isEquivalentBranchCond</a>(lhs, rhs);</div>
|
|
1789
|
+
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  };</div>
|
|
1667
1790
|
</div><!-- fragment -->
|
|
1668
1791
|
</div>
|
|
1669
1792
|
</div>
|
|
@@ -1690,10 +1813,10 @@ Private Attributes</h2></td></tr>
|
|
|
1690
1813
|
</table>
|
|
1691
1814
|
</div><div class="memdoc">
|
|
1692
1815
|
|
|
1693
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1694
|
-
<div class="fragment"><div class="line"><a name="
|
|
1695
|
-
<div class="line"><a name="
|
|
1696
|
-
<div class="line"><a name="
|
|
1816
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00155">155</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1817
|
+
<div class="fragment"><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  {</div>
|
|
1818
|
+
<div class="line"><a name="l00157"></a><span class="lineno"> 157</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>
|
|
1819
|
+
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div>
|
|
1697
1820
|
</div><!-- fragment -->
|
|
1698
1821
|
</div>
|
|
1699
1822
|
</div>
|
|
@@ -1720,10 +1843,10 @@ Private Attributes</h2></td></tr>
|
|
|
1720
1843
|
</table>
|
|
1721
1844
|
</div><div class="memdoc">
|
|
1722
1845
|
|
|
1723
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1724
|
-
<div class="fragment"><div class="line"><a name="
|
|
1725
|
-
<div class="line"><a name="
|
|
1726
|
-
<div class="line"><a name="
|
|
1846
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00163">163</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1847
|
+
<div class="fragment"><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  {</div>
|
|
1848
|
+
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a>;</div>
|
|
1849
|
+
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  }</div>
|
|
1727
1850
|
</div><!-- fragment -->
|
|
1728
1851
|
</div>
|
|
1729
1852
|
</div>
|
|
@@ -1743,18 +1866,18 @@ Private Attributes</h2></td></tr>
|
|
|
1743
1866
|
</div><div class="memdoc">
|
|
1744
1867
|
<p>Solve by computing disjunction of conditions from all sinks (e.g., memory leak) </p>
|
|
1745
1868
|
|
|
1746
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#
|
|
1747
|
-
<div class="fragment"><div class="line"><a name="
|
|
1748
|
-
<div class="line"><a name="
|
|
1749
|
-
<div class="line"><a name="
|
|
1750
|
-
<div class="line"><a name="
|
|
1751
|
-
<div class="line"><a name="
|
|
1752
|
-
<div class="line"><a name="
|
|
1753
|
-
<div class="line"><a name="
|
|
1754
|
-
<div class="line"><a name="
|
|
1755
|
-
<div class="line"><a name="
|
|
1756
|
-
<div class="line"><a name="
|
|
1757
|
-
<div class="line"><a name="
|
|
1869
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00142">142</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
|
|
1870
|
+
<div class="fragment"><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> {</div>
|
|
1871
|
+
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  </div>
|
|
1872
|
+
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> guard = <a class="code" href="classSVF_1_1ProgSlice.html#a9d81f792b6a8b15395a63d06daf56573">getFalseCond</a>();</div>
|
|
1873
|
+
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1ProgSlice.html#af41c438baa739406a35bcb2e9ba431dd">SVFGNodeSetIter</a> it = <a class="code" href="classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2">sinksBegin</a>(), eit = <a class="code" href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31">sinksEnd</a>(); it!=eit; ++it)</div>
|
|
1874
|
+
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div>
|
|
1875
|
+
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  guard = <a class="code" href="classSVF_1_1ProgSlice.html#a3e729aba81cd64e8628df630f5a0f416">condOr</a>(guard,<a class="code" href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">getVFCond</a>(*it));</div>
|
|
1876
|
+
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div>
|
|
1877
|
+
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="classSVF_1_1ProgSlice.html#af55830503ef47b4b1c15c0e5b3cd6a3f">setFinalCond</a>(guard);</div>
|
|
1878
|
+
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  </div>
|
|
1879
|
+
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-><a class="code" href="classSVF_1_1SaberCondAllocator.html#a246da0431273c312800459aa85d80a86">isAllPathReachable</a>(guard);</div>
|
|
1880
|
+
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> }</div>
|
|
1758
1881
|
</div><!-- fragment -->
|
|
1759
1882
|
</div>
|
|
1760
1883
|
</div>
|
|
@@ -1774,26 +1897,26 @@ Private Attributes</h2></td></tr>
|
|
|
1774
1897
|
</div><div class="memdoc">
|
|
1775
1898
|
<p>Solve by analysing each pair of sinks (e.g., double free) </p>
|
|
1776
1899
|
|
|
1777
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#
|
|
1778
|
-
<div class="fragment"><div class="line"><a name="
|
|
1779
|
-
<div class="line"><a name="
|
|
1780
|
-
<div class="line"><a name="
|
|
1781
|
-
<div class="line"><a name="
|
|
1782
|
-
<div class="line"><a name="
|
|
1783
|
-
<div class="line"><a name="
|
|
1784
|
-
<div class="line"><a name="
|
|
1785
|
-
<div class="line"><a name="
|
|
1786
|
-
<div class="line"><a name="
|
|
1787
|
-
<div class="line"><a name="
|
|
1788
|
-
<div class="line"><a name="
|
|
1789
|
-
<div class="line"><a name="
|
|
1790
|
-
<div class="line"><a name="
|
|
1791
|
-
<div class="line"><a name="
|
|
1792
|
-
<div class="line"><a name="
|
|
1793
|
-
<div class="line"><a name="
|
|
1794
|
-
<div class="line"><a name="
|
|
1795
|
-
<div class="line"><a name="
|
|
1796
|
-
<div class="line"><a name="
|
|
1900
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8cpp_source.html#l00158">158</a> of file <a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a>.</p>
|
|
1901
|
+
<div class="fragment"><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> {</div>
|
|
1902
|
+
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  </div>
|
|
1903
|
+
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1ProgSlice.html#af41c438baa739406a35bcb2e9ba431dd">SVFGNodeSetIter</a> it = <a class="code" href="classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2">sinksBegin</a>(), eit = <a class="code" href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31">sinksEnd</a>(); it!=eit; ++it)</div>
|
|
1904
|
+
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  {</div>
|
|
1905
|
+
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1ProgSlice.html#af41c438baa739406a35bcb2e9ba431dd">SVFGNodeSetIter</a> sit = it, esit = <a class="code" href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31">sinksEnd</a>(); sit!=esit; ++sit)</div>
|
|
1906
|
+
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  {</div>
|
|
1907
|
+
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span>(*it == *sit)</div>
|
|
1908
|
+
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">continue</span>;</div>
|
|
1909
|
+
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">Condition</a> guard = <a class="code" href="classSVF_1_1ProgSlice.html#aceb26d08f0d12367e4726e1ff0e25953">condAnd</a>(<a class="code" href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">getVFCond</a>(*sit),<a class="code" href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">getVFCond</a>(*it));</div>
|
|
1910
|
+
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1ProgSlice.html#a6c63e9641e4d3d3f2f8c4a73bfba7a07">isEquivalentBranchCond</a>(guard, <a class="code" href="classSVF_1_1ProgSlice.html#a9d81f792b6a8b15395a63d06daf56573">getFalseCond</a>()))</div>
|
|
1911
|
+
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  {</div>
|
|
1912
|
+
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="classSVF_1_1ProgSlice.html#af55830503ef47b4b1c15c0e5b3cd6a3f">setFinalCond</a>(guard);</div>
|
|
1913
|
+
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
1914
|
+
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div>
|
|
1915
|
+
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div>
|
|
1916
|
+
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div>
|
|
1917
|
+
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  </div>
|
|
1918
|
+
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
1919
|
+
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> }</div>
|
|
1797
1920
|
</div><!-- fragment -->
|
|
1798
1921
|
</div>
|
|
1799
1922
|
</div>
|
|
@@ -1820,10 +1943,10 @@ Private Attributes</h2></td></tr>
|
|
|
1820
1943
|
</table>
|
|
1821
1944
|
</div><div class="memdoc">
|
|
1822
1945
|
|
|
1823
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1824
|
-
<div class="fragment"><div class="line"><a name="
|
|
1825
|
-
<div class="line"><a name="
|
|
1826
|
-
<div class="line"><a name="
|
|
1946
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00147">147</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1947
|
+
<div class="fragment"><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  {</div>
|
|
1948
|
+
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">fullReachable</a> = <span class="keyword">true</span>;</div>
|
|
1949
|
+
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div>
|
|
1827
1950
|
</div><!-- fragment -->
|
|
1828
1951
|
</div>
|
|
1829
1952
|
</div>
|
|
@@ -1851,11 +1974,11 @@ Private Attributes</h2></td></tr>
|
|
|
1851
1974
|
</table>
|
|
1852
1975
|
</div><div class="memdoc">
|
|
1853
1976
|
|
|
1854
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1855
|
-
<div class="fragment"><div class="line"><a name="
|
|
1856
|
-
<div class="line"><a name="
|
|
1857
|
-
<div class="line"><a name="
|
|
1858
|
-
<div class="line"><a name="
|
|
1977
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00290">290</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
1978
|
+
<div class="fragment"><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  {</div>
|
|
1979
|
+
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">_curSVFGNode</a> = node;</div>
|
|
1980
|
+
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <a class="code" href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">pathAllocator</a>-><a class="code" href="classSVF_1_1SaberCondAllocator.html#ae717f565b947a72651c0de19bf6bcca0">setCurEvalSVFGNode</a>(node);</div>
|
|
1981
|
+
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div>
|
|
1859
1982
|
</div><!-- fragment -->
|
|
1860
1983
|
</div>
|
|
1861
1984
|
</div>
|
|
@@ -1885,10 +2008,10 @@ Private Attributes</h2></td></tr>
|
|
|
1885
2008
|
|
|
1886
2009
|
<p>Set final condition after all path reachability analysis. </p>
|
|
1887
2010
|
|
|
1888
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1889
|
-
<div class="fragment"><div class="line"><a name="
|
|
1890
|
-
<div class="line"><a name="
|
|
1891
|
-
<div class="line"><a name="
|
|
2011
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00297">297</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
2012
|
+
<div class="fragment"><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  {</div>
|
|
2013
|
+
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <a class="code" href="classSVF_1_1ProgSlice.html#a011fcd4f081926e808e15630cb2d4b47">finalCond</a> = cond;</div>
|
|
2014
|
+
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div>
|
|
1892
2015
|
</div><!-- fragment -->
|
|
1893
2016
|
</div>
|
|
1894
2017
|
</div>
|
|
@@ -1915,10 +2038,10 @@ Private Attributes</h2></td></tr>
|
|
|
1915
2038
|
</table>
|
|
1916
2039
|
</div><div class="memdoc">
|
|
1917
2040
|
|
|
1918
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1919
|
-
<div class="fragment"><div class="line"><a name="
|
|
1920
|
-
<div class="line"><a name="
|
|
1921
|
-
<div class="line"><a name="
|
|
2041
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00143">143</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
2042
|
+
<div class="fragment"><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  {</div>
|
|
2043
|
+
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">partialReachable</a> = <span class="keyword">true</span>;</div>
|
|
2044
|
+
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div>
|
|
1922
2045
|
</div><!-- fragment -->
|
|
1923
2046
|
</div>
|
|
1924
2047
|
</div>
|
|
@@ -1945,10 +2068,10 @@ Private Attributes</h2></td></tr>
|
|
|
1945
2068
|
</table>
|
|
1946
2069
|
</div><div class="memdoc">
|
|
1947
2070
|
|
|
1948
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1949
|
-
<div class="fragment"><div class="line"><a name="
|
|
1950
|
-
<div class="line"><a name="
|
|
1951
|
-
<div class="line"><a name="
|
|
2071
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00151">151</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
2072
|
+
<div class="fragment"><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  {</div>
|
|
2073
|
+
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">reachGlob</a> = <span class="keyword">true</span>;</div>
|
|
2074
|
+
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div>
|
|
1952
2075
|
</div><!-- fragment -->
|
|
1953
2076
|
</div>
|
|
1954
2077
|
</div>
|
|
@@ -1986,16 +2109,16 @@ Private Attributes</h2></td></tr>
|
|
|
1986
2109
|
</table>
|
|
1987
2110
|
</div><div class="memdoc">
|
|
1988
2111
|
|
|
1989
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
1990
|
-
<div class="fragment"><div class="line"><a name="
|
|
1991
|
-
<div class="line"><a name="
|
|
1992
|
-
<div class="line"><a name="
|
|
1993
|
-
<div class="line"><a name="
|
|
1994
|
-
<div class="line"><a name="
|
|
1995
|
-
<div class="line"><a name="
|
|
1996
|
-
<div class="line"><a name="
|
|
1997
|
-
<div class="line"><a name="
|
|
1998
|
-
<div class="line"><a name="
|
|
2112
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00238">238</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
2113
|
+
<div class="fragment"><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  {</div>
|
|
2114
|
+
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  SVFGNodeToCondMap::iterator it = <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>.find(node);</div>
|
|
2115
|
+
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="comment">// until a fixed-point is reached (condition is not changed)</span></div>
|
|
2116
|
+
<div class="line"><a name="l00242"></a><span class="lineno"> 242</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#a6c63e9641e4d3d3f2f8c4a73bfba7a07">isEquivalentBranchCond</a>(it->second, cond))</div>
|
|
2117
|
+
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2118
|
+
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  </div>
|
|
2119
|
+
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <a class="code" href="classSVF_1_1ProgSlice.html#aeda61b2786b128e8c45089de60dcafce">svfgNodeToCondMap</a>[node] = cond;</div>
|
|
2120
|
+
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
2121
|
+
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  }</div>
|
|
1999
2122
|
</div><!-- fragment -->
|
|
2000
2123
|
</div>
|
|
2001
2124
|
</div>
|
|
@@ -2022,10 +2145,10 @@ Private Attributes</h2></td></tr>
|
|
|
2022
2145
|
</table>
|
|
2023
2146
|
</div><div class="memdoc">
|
|
2024
2147
|
|
|
2025
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
2026
|
-
<div class="fragment"><div class="line"><a name="
|
|
2027
|
-
<div class="line"><a name="
|
|
2028
|
-
<div class="line"><a name="
|
|
2148
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00135">135</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
2149
|
+
<div class="fragment"><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  {</div>
|
|
2150
|
+
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>.begin();</div>
|
|
2151
|
+
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div>
|
|
2029
2152
|
</div><!-- fragment -->
|
|
2030
2153
|
</div>
|
|
2031
2154
|
</div>
|
|
@@ -2052,10 +2175,10 @@ Private Attributes</h2></td></tr>
|
|
|
2052
2175
|
</table>
|
|
2053
2176
|
</div><div class="memdoc">
|
|
2054
2177
|
|
|
2055
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
2056
|
-
<div class="fragment"><div class="line"><a name="
|
|
2057
|
-
<div class="line"><a name="
|
|
2058
|
-
<div class="line"><a name="
|
|
2178
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00139">139</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
2179
|
+
<div class="fragment"><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  {</div>
|
|
2180
|
+
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">sinks</a>.end();</div>
|
|
2181
|
+
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div>
|
|
2059
2182
|
</div><!-- fragment -->
|
|
2060
2183
|
</div>
|
|
2061
2184
|
</div>
|
|
@@ -2082,7 +2205,7 @@ Private Attributes</h2></td></tr>
|
|
|
2082
2205
|
|
|
2083
2206
|
<p>current svfg node during guard computation </p>
|
|
2084
2207
|
|
|
2085
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
2208
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00320">320</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
2086
2209
|
|
|
2087
2210
|
</div>
|
|
2088
2211
|
</div>
|
|
@@ -2108,7 +2231,7 @@ Private Attributes</h2></td></tr>
|
|
|
2108
2231
|
|
|
2109
2232
|
<p>the backward slice </p>
|
|
2110
2233
|
|
|
2111
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
2234
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00312">312</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
2112
2235
|
|
|
2113
2236
|
</div>
|
|
2114
2237
|
</div>
|
|
@@ -2134,7 +2257,7 @@ Private Attributes</h2></td></tr>
|
|
|
2134
2257
|
|
|
2135
2258
|
<p>final condition </p>
|
|
2136
2259
|
|
|
2137
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
2260
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00321">321</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
2138
2261
|
|
|
2139
2262
|
</div>
|
|
2140
2263
|
</div>
|
|
@@ -2160,7 +2283,7 @@ Private Attributes</h2></td></tr>
|
|
|
2160
2283
|
|
|
2161
2284
|
<p>the forward slice </p>
|
|
2162
2285
|
|
|
2163
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
2286
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00311">311</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
2164
2287
|
|
|
2165
2288
|
</div>
|
|
2166
2289
|
</div>
|
|
@@ -2186,7 +2309,7 @@ Private Attributes</h2></td></tr>
|
|
|
2186
2309
|
|
|
2187
2310
|
<p>reachable from all paths </p>
|
|
2188
2311
|
|
|
2189
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
2312
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00317">317</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
2190
2313
|
|
|
2191
2314
|
</div>
|
|
2192
2315
|
</div>
|
|
@@ -2212,7 +2335,7 @@ Private Attributes</h2></td></tr>
|
|
|
2212
2335
|
|
|
2213
2336
|
<p>reachable from some paths </p>
|
|
2214
2337
|
|
|
2215
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
2338
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00316">316</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
2216
2339
|
|
|
2217
2340
|
</div>
|
|
2218
2341
|
</div>
|
|
@@ -2238,7 +2361,7 @@ Private Attributes</h2></td></tr>
|
|
|
2238
2361
|
|
|
2239
2362
|
<p>path condition allocator </p>
|
|
2240
2363
|
|
|
2241
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
2364
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00319">319</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
2242
2365
|
|
|
2243
2366
|
</div>
|
|
2244
2367
|
</div>
|
|
@@ -2264,7 +2387,7 @@ Private Attributes</h2></td></tr>
|
|
|
2264
2387
|
|
|
2265
2388
|
<p>Whether slice reach a global. </p>
|
|
2266
2389
|
|
|
2267
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
2390
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00318">318</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
2268
2391
|
|
|
2269
2392
|
</div>
|
|
2270
2393
|
</div>
|
|
@@ -2290,7 +2413,7 @@ Private Attributes</h2></td></tr>
|
|
|
2290
2413
|
|
|
2291
2414
|
<p>root node on the slice </p>
|
|
2292
2415
|
|
|
2293
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
2416
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00314">314</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
2294
2417
|
|
|
2295
2418
|
</div>
|
|
2296
2419
|
</div>
|
|
@@ -2316,7 +2439,7 @@ Private Attributes</h2></td></tr>
|
|
|
2316
2439
|
|
|
2317
2440
|
<p>a set of sink nodes </p>
|
|
2318
2441
|
|
|
2319
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
2442
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00313">313</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
2320
2443
|
|
|
2321
2444
|
</div>
|
|
2322
2445
|
</div>
|
|
@@ -2342,7 +2465,7 @@ Private Attributes</h2></td></tr>
|
|
|
2342
2465
|
|
|
2343
2466
|
<p><a class="el" href="classSVF_1_1SVFG.html">SVFG</a>. </p>
|
|
2344
2467
|
|
|
2345
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
2468
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00322">322</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
2346
2469
|
|
|
2347
2470
|
</div>
|
|
2348
2471
|
</div>
|
|
@@ -2368,7 +2491,7 @@ Private Attributes</h2></td></tr>
|
|
|
2368
2491
|
|
|
2369
2492
|
<p>map a SVFGNode to its path condition starting from root </p>
|
|
2370
2493
|
|
|
2371
|
-
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#
|
|
2494
|
+
<p class="definition">Definition at line <a class="el" href="ProgSlice_8h_source.html#l00315">315</a> of file <a class="el" href="ProgSlice_8h_source.html">ProgSlice.h</a>.</p>
|
|
2372
2495
|
|
|
2373
2496
|
</div>
|
|
2374
2497
|
</div>
|
|
@@ -2377,88 +2500,92 @@ Private Attributes</h2></td></tr>
|
|
|
2377
2500
|
<li>/home/runner/work/SVF/SVF/svf/lib/SABER/<a class="el" href="ProgSlice_8cpp_source.html">ProgSlice.cpp</a></li>
|
|
2378
2501
|
</ul>
|
|
2379
2502
|
</div><!-- contents -->
|
|
2380
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_ada13c2389d43973ff7db18b7fca90087"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087">SVF::ProgSlice::root</a></div><div class="ttdeci">const SVFGNode * root</div><div class="ttdoc">root node on the slice</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2381
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a7a3ba7e6c08d84f82690a594e286205f"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a7a3ba7e6c08d84f82690a594e286205f">SVF::ProgSlice::ComputeInterCallVFGGuard</a></div><div class="ttdeci">Condition ComputeInterCallVFGGuard(const SVFBasicBlock *src, const SVFBasicBlock *dst, const SVFBasicBlock *callBB)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2503
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_ada13c2389d43973ff7db18b7fca90087"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ada13c2389d43973ff7db18b7fca90087">SVF::ProgSlice::root</a></div><div class="ttdeci">const SVFGNode * root</div><div class="ttdoc">root node on the slice</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00314">ProgSlice.h:314</a></div></div>
|
|
2504
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a7a3ba7e6c08d84f82690a594e286205f"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a7a3ba7e6c08d84f82690a594e286205f">SVF::ProgSlice::ComputeInterCallVFGGuard</a></div><div class="ttdeci">Condition ComputeInterCallVFGGuard(const SVFBasicBlock *src, const SVFBasicBlock *dst, const SVFBasicBlock *callBB)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00256">ProgSlice.h:256</a></div></div>
|
|
2382
2505
|
<div class="ttc" id="aclassSVF_1_1RetDirSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1RetDirSVFGEdge.html">SVF::RetDirSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00254">VFGEdge.h:254</a></div></div>
|
|
2383
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a6c63e9641e4d3d3f2f8c4a73bfba7a07"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a6c63e9641e4d3d3f2f8c4a73bfba7a07">SVF::ProgSlice::isEquivalentBranchCond</a></div><div class="ttdeci">bool isEquivalentBranchCond(const Condition &lhs, const Condition &rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2384
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a2a7a3a6dc518fd375f506d43b0ac9fc9"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">SVF::ProgSlice::partialReachable</a></div><div class="ttdeci">bool partialReachable</div><div class="ttdoc">reachable from some paths</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2385
|
-
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a9b52da69d79746765d0c12a5ce1b08f4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">SVF::SaberCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
2506
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a6c63e9641e4d3d3f2f8c4a73bfba7a07"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a6c63e9641e4d3d3f2f8c4a73bfba7a07">SVF::ProgSlice::isEquivalentBranchCond</a></div><div class="ttdeci">bool isEquivalentBranchCond(const Condition &lhs, const Condition &rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00266">ProgSlice.h:266</a></div></div>
|
|
2507
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a2a7a3a6dc518fd375f506d43b0ac9fc9"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a2a7a3a6dc518fd375f506d43b0ac9fc9">SVF::ProgSlice::partialReachable</a></div><div class="ttdeci">bool partialReachable</div><div class="ttdoc">reachable from some paths</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00316">ProgSlice.h:316</a></div></div>
|
|
2508
|
+
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a9b52da69d79746765d0c12a5ce1b08f4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a9b52da69d79746765d0c12a5ce1b08f4">SVF::SaberCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00103">SaberCondAllocator.h:103</a></div></div>
|
|
2386
2509
|
<div class="ttc" id="aclassSVF_1_1VFG_html_a246cce511b8e9164a7c1760d1983f492"><div class="ttname"><a href="classSVF_1_1VFG.html#a246cce511b8e9164a7c1760d1983f492">SVF::VFG::getCallSite</a></div><div class="ttdeci">const CallICFGNode * getCallSite(CallSiteID id) const</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00182">VFG.h:182</a></div></div>
|
|
2387
2510
|
<div class="ttc" id="anamespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00097">SVFType.h:97</a></div></div>
|
|
2388
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_adf620c97daed49735d21b485c448b4a2"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2">SVF::ProgSlice::sinksBegin</a></div><div class="ttdeci">SVFGNodeSetIter sinksBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2389
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab36bc2aa24a2a90555a9714dcbfc83e5"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">SVF::ProgSlice::reachGlob</a></div><div class="ttdeci">bool reachGlob</div><div class="ttdoc">Whether slice reach a global.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2390
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_aeb1924daad67a0b7ed9e5b4974755261"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">SVF::ProgSlice::getVFCond</a></div><div class="ttdeci">Condition getVFCond(const SVFGNode *node) const</div><div class="ttdoc">Get/set VF (value-flow) and CF (control-flow) conditions.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2391
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab4da58e7c4cd2c80b4830efeaa896f80"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">SVF::ProgSlice::sinks</a></div><div class="ttdeci">SVFGNodeSet sinks</div><div class="ttdoc">a set of sink nodes</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2392
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a632db4b2e69848955925746ac721d94f"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">SVF::ProgSlice::fullReachable</a></div><div class="ttdeci">bool fullReachable</div><div class="ttdoc">reachable from all paths</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2511
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_adf620c97daed49735d21b485c448b4a2"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2">SVF::ProgSlice::sinksBegin</a></div><div class="ttdeci">SVFGNodeSetIter sinksBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00135">ProgSlice.h:135</a></div></div>
|
|
2512
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab36bc2aa24a2a90555a9714dcbfc83e5"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab36bc2aa24a2a90555a9714dcbfc83e5">SVF::ProgSlice::reachGlob</a></div><div class="ttdeci">bool reachGlob</div><div class="ttdoc">Whether slice reach a global.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00318">ProgSlice.h:318</a></div></div>
|
|
2513
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_aeb1924daad67a0b7ed9e5b4974755261"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aeb1924daad67a0b7ed9e5b4974755261">SVF::ProgSlice::getVFCond</a></div><div class="ttdeci">Condition getVFCond(const SVFGNode *node) const</div><div class="ttdoc">Get/set VF (value-flow) and CF (control-flow) conditions.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00229">ProgSlice.h:229</a></div></div>
|
|
2514
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab4da58e7c4cd2c80b4830efeaa896f80"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab4da58e7c4cd2c80b4830efeaa896f80">SVF::ProgSlice::sinks</a></div><div class="ttdeci">SVFGNodeSet sinks</div><div class="ttdoc">a set of sink nodes</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00313">ProgSlice.h:313</a></div></div>
|
|
2515
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a632db4b2e69848955925746ac721d94f"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a632db4b2e69848955925746ac721d94f">SVF::ProgSlice::fullReachable</a></div><div class="ttdeci">bool fullReachable</div><div class="ttdoc">reachable from all paths</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00317">ProgSlice.h:317</a></div></div>
|
|
2393
2516
|
<div class="ttc" id="aclassSVF_1_1SparseBitVector_html_a1b5abe09fd0fcd337385653cb47343c1"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">SVF::SparseBitVector::end</a></div><div class="ttdeci">iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01120">SparseBitVector.h:1120</a></div></div>
|
|
2394
|
-
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a1d8b90edf6ec679a97282ba60c07134d"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a1d8b90edf6ec679a97282ba60c07134d">SVF::SaberCondAllocator::getCondInst</a></div><div class="ttdeci">const SVFInstruction * getCondInst(u32_t id) const</div><div class="ttdoc">Get/Set instruction based on Z3 expression id.</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
2517
|
+
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a1d8b90edf6ec679a97282ba60c07134d"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a1d8b90edf6ec679a97282ba60c07134d">SVF::SaberCondAllocator::getCondInst</a></div><div class="ttdeci">const SVFInstruction * getCondInst(u32_t id) const</div><div class="ttdoc">Get/Set instruction based on Z3 expression id.</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00128">SaberCondAllocator.h:128</a></div></div>
|
|
2395
2518
|
<div class="ttc" id="aclassSVF_1_1SparseBitVector_html_abf76d8157c49ddba24bdc9dab3655772"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">SVF::SparseBitVector::begin</a></div><div class="ttdeci">iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01115">SparseBitVector.h:1115</a></div></div>
|
|
2396
2519
|
<div class="ttc" id="aclassSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00459">SparseBitVector.h:459</a></div></div>
|
|
2397
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a32ffd130984483b201c485da91ec467f"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a32ffd130984483b201c485da91ec467f">SVF::ProgSlice::getSVFG</a></div><div class="ttdeci">const SVFG * getSVFG() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2520
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a32ffd130984483b201c485da91ec467f"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a32ffd130984483b201c485da91ec467f">SVF::ProgSlice::getSVFG</a></div><div class="ttdeci">const SVFG * getSVFG() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00213">ProgSlice.h:213</a></div></div>
|
|
2398
2521
|
<div class="ttc" id="aclassSVF_1_1VFGEdge_html_a3937eef974c3953f1d1e7d64c5a24ff3"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a3937eef974c3953f1d1e7d64c5a24ff3">SVF::VFGEdge::isRetVFGEdge</a></div><div class="ttdeci">bool isRetVFGEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00088">VFGEdge.h:88</a></div></div>
|
|
2399
2522
|
<div class="ttc" id="aclassSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00180">GenericGraph.h:180</a></div></div>
|
|
2400
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a8ae327bc7bf72f892d87730edfc67d0d"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a8ae327bc7bf72f892d87730edfc67d0d">SVF::ProgSlice::getCallSite</a></div><div class="ttdeci">const CallICFGNode * getCallSite(const SVFGEdge *edge) const</div><div class="ttdoc">Get callsite ID and get returnsiteID from SVFGEdge.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#
|
|
2401
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab514f387ae2122e919030c5006f1bbce"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab514f387ae2122e919030c5006f1bbce">SVF::ProgSlice::clearCFCond</a></div><div class="ttdeci">void clearCFCond()</div><div class="ttdoc">Clear Control flow conditions before each VF computation.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2523
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a8ae327bc7bf72f892d87730edfc67d0d"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a8ae327bc7bf72f892d87730edfc67d0d">SVF::ProgSlice::getCallSite</a></div><div class="ttdeci">const CallICFGNode * getCallSite(const SVFGEdge *edge) const</div><div class="ttdoc">Get callsite ID and get returnsiteID from SVFGEdge.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00179">ProgSlice.cpp:179</a></div></div>
|
|
2524
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab514f387ae2122e919030c5006f1bbce"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab514f387ae2122e919030c5006f1bbce">SVF::ProgSlice::clearCFCond</a></div><div class="ttdeci">void clearCFCond()</div><div class="ttdoc">Clear Control flow conditions before each VF computation.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00221">ProgSlice.h:221</a></div></div>
|
|
2402
2525
|
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_aadf1128c0006981dff0d64dd1201e0c7"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aadf1128c0006981dff0d64dd1201e0c7">SVF::ProgSlice::Condition</a></div><div class="ttdeci">SaberCondAllocator::Condition Condition</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00055">ProgSlice.h:55</a></div></div>
|
|
2403
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a011fcd4f081926e808e15630cb2d4b47"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a011fcd4f081926e808e15630cb2d4b47">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#
|
|
2526
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a011fcd4f081926e808e15630cb2d4b47"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a011fcd4f081926e808e15630cb2d4b47">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#l00321">ProgSlice.h:321</a></div></div>
|
|
2404
2527
|
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00522">SVFValue.h:522</a></div></div>
|
|
2405
2528
|
<div class="ttc" id="acJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
2406
2529
|
<div class="ttc" id="aSVFType_8h_html_a817abc424f7cfcdec5954c7807970f36"><div class="ttname"><a href="SVFType_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a></div><div class="ttdeci">#define DSaber</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00596">SVFType.h:596</a></div></div>
|
|
2407
|
-
<div class="ttc" id="
|
|
2530
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a174a74103c69afbbff58d30f5a41404c"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a174a74103c69afbbff58d30f5a41404c">SVF::ProgSlice::getRemovedSUVFEdges</a></div><div class="ttdeci">const SVFGNodeToSVFGNodeSetMap & getRemovedSUVFEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00305">ProgSlice.h:305</a></div></div>
|
|
2531
|
+
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a79682a4e4da23d0eaf0066a91c2f7bd4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a79682a4e4da23d0eaf0066a91c2f7bd4">SVF::SaberCondAllocator::condAnd</a></div><div class="ttdeci">Condition condAnd(const Condition &lhs, const Condition &rhs)</div><div class="ttdoc">Condition operations.</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00087">SaberCondAllocator.h:87</a></div></div>
|
|
2408
2532
|
<div class="ttc" id="aclassSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00221">GenericGraph.h:221</a></div></div>
|
|
2409
|
-
<div class="ttc" id="
|
|
2410
|
-
<div class="ttc" id="
|
|
2411
|
-
<div class="ttc" id="
|
|
2533
|
+
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_aaac0aab3bb5c3533889779b4f63bd6a4"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#aaac0aab3bb5c3533889779b4f63bd6a4">SVF::SaberCondAllocator::getRemovedSUVFEdges</a></div><div class="ttdeci">SVFGNodeToSVFGNodeSetMap & getRemovedSUVFEdges()</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00244">SaberCondAllocator.h:244</a></div></div>
|
|
2534
|
+
<div class="ttc" id="aclassSVF_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#l00315">ProgSlice.h:315</a></div></div>
|
|
2535
|
+
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a87205db039579f05214507c48d6befec"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a87205db039579f05214507c48d6befec">SVF::SaberCondAllocator::exactCondElem</a></div><div class="ttdeci">NodeBS exactCondElem(const Condition &cond)</div><div class="ttdoc">Iterator every element of the condition.</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00108">SaberCondAllocator.h:108</a></div></div>
|
|
2536
|
+
<div class="ttc" id="aclassSVF_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#l00123">ProgSlice.h:123</a></div></div>
|
|
2412
2537
|
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_aa9027574586fd4fbb12039f595ecec71"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#aa9027574586fd4fbb12039f595ecec71">SVF::SaberCondAllocator::isEquivalentBranchCond</a></div><div class="ttdeci">bool isEquivalentBranchCond(const Condition &lhs, const Condition &rhs) const</div><div class="ttdoc">Whether lhs and rhs are equivalent branch conditions.</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00610">SaberCondAllocator.cpp:610</a></div></div>
|
|
2413
2538
|
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_aedb63308f8980bbaf2b6c1bd2826a710"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#aedb63308f8980bbaf2b6c1bd2826a710">SVF::SaberCondAllocator::ComputeInterCallVFGGuard</a></div><div class="ttdeci">virtual Condition ComputeInterCallVFGGuard(const SVFBasicBlock *src, const SVFBasicBlock *dst, const SVFBasicBlock *callBB)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00485">SaberCondAllocator.cpp:485</a></div></div>
|
|
2414
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_ac12dc4caa0c764ae69175e787efad2ab"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">SVF::ProgSlice::forwardslice</a></div><div class="ttdeci">SVFGNodeSet forwardslice</div><div class="ttdoc">the forward slice</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2539
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_ac12dc4caa0c764ae69175e787efad2ab"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ac12dc4caa0c764ae69175e787efad2ab">SVF::ProgSlice::forwardslice</a></div><div class="ttdeci">SVFGNodeSet forwardslice</div><div class="ttdoc">the forward slice</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00311">ProgSlice.h:311</a></div></div>
|
|
2540
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a0dfd466a758dd0be4c2bc5832c50fbd8"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a0dfd466a758dd0be4c2bc5832c50fbd8">SVF::ProgSlice::condNeg</a></div><div class="ttdeci">Condition condNeg(const Condition &cond)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00190">ProgSlice.h:190</a></div></div>
|
|
2415
2541
|
<div class="ttc" id="aclassSVF_1_1CallDirSVFGEdge_html"><div class="ttname"><a href="classSVF_1_1CallDirSVFGEdge.html">SVF::CallDirSVFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00211">VFGEdge.h:211</a></div></div>
|
|
2416
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_af3095788fc3d7798abfae10e3216968b"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">SVF::ProgSlice::_curSVFGNode</a></div><div class="ttdeci">const SVFGNode * _curSVFGNode</div><div class="ttdoc">current svfg node during guard computation</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2542
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_af3095788fc3d7798abfae10e3216968b"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#af3095788fc3d7798abfae10e3216968b">SVF::ProgSlice::_curSVFGNode</a></div><div class="ttdeci">const SVFGNode * _curSVFGNode</div><div class="ttdoc">current svfg node during guard computation</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00320">ProgSlice.h:320</a></div></div>
|
|
2417
2543
|
<div class="ttc" id="aSVFBugReport_8h_html_a6c7cd1f1c2372251f51de3a8392faeec"><div class="ttname"><a href="SVFBugReport_8h.html#a6c7cd1f1c2372251f51de3a8392faeec">BRANCHFLAGMASK</a></div><div class="ttdeci">#define BRANCHFLAGMASK</div><div class="ttdef"><b>Definition:</b> <a href="SVFBugReport_8h_source.html#l00040">SVFBugReport.h:40</a></div></div>
|
|
2418
2544
|
<div class="ttc" id="aclassSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
|
|
2419
|
-
<div class="ttc" id="
|
|
2420
|
-
<div class="ttc" id="
|
|
2421
|
-
<div class="ttc" id="
|
|
2545
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_abe0cc350db350bd4e9a9973c9052fc41"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#abe0cc350db350bd4e9a9973c9052fc41">SVF::ProgSlice::computeInvalidCondFromRemovedSUVFEdge</a></div><div class="ttdeci">Condition computeInvalidCondFromRemovedSUVFEdge(const SVFGNode *cur)</div><div class="ttdoc">Compute invalid branch condition stemming from removed strong update value-flow edges.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00108">ProgSlice.cpp:108</a></div></div>
|
|
2546
|
+
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a100c1962eac6d7af420defc827a025ed"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a100c1962eac6d7af420defc827a025ed">SVF::SaberCondAllocator::dumpCond</a></div><div class="ttdeci">std::string dumpCond(const Condition &cond) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00115">SaberCondAllocator.h:115</a></div></div>
|
|
2547
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a59cbb196069a863830b05904f16a190e"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a59cbb196069a863830b05904f16a190e">SVF::ProgSlice::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00194">ProgSlice.h:194</a></div></div>
|
|
2548
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_addb781260db48c0571c0083a45065ca0"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#addb781260db48c0571c0083a45065ca0">SVF::ProgSlice::backwardslice</a></div><div class="ttdeci">SVFGNodeSet backwardslice</div><div class="ttdoc">the backward slice</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00312">ProgSlice.h:312</a></div></div>
|
|
2422
2549
|
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a8bb7f9ce20b5a640aa48c32176f429bf"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a8bb7f9ce20b5a640aa48c32176f429bf">SVF::SaberCondAllocator::ComputeInterRetVFGGuard</a></div><div class="ttdeci">virtual Condition ComputeInterRetVFGGuard(const SVFBasicBlock *src, const SVFBasicBlock *dst, const SVFBasicBlock *retBB)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00502">SaberCondAllocator.cpp:502</a></div></div>
|
|
2423
2550
|
<div class="ttc" id="aclassSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00217">GenericGraph.h:217</a></div></div>
|
|
2424
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a899332b210414ac991b57e83851ee5be"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a899332b210414ac991b57e83851ee5be">SVF::ProgSlice::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Release memory.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#
|
|
2425
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a066430ffa98a3fa0a5ad48d26e0450f7"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a066430ffa98a3fa0a5ad48d26e0450f7">SVF::ProgSlice::inBackwardSlice</a></div><div class="ttdeci">bool inBackwardSlice(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2551
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a899332b210414ac991b57e83851ee5be"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a899332b210414ac991b57e83851ee5be">SVF::ProgSlice::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Release memory.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00246">ProgSlice.cpp:246</a></div></div>
|
|
2552
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a066430ffa98a3fa0a5ad48d26e0450f7"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a066430ffa98a3fa0a5ad48d26e0450f7">SVF::ProgSlice::inBackwardSlice</a></div><div class="ttdeci">bool inBackwardSlice(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00099">ProgSlice.h:99</a></div></div>
|
|
2426
2553
|
<div class="ttc" id="aclassSVF_1_1VFGEdge_html_a4352297ef44c4eff1efe2f348cce6fe9"><div class="ttname"><a href="classSVF_1_1VFGEdge.html#a4352297ef44c4eff1efe2f348cce6fe9">SVF::VFGEdge::isCallVFGEdge</a></div><div class="ttdeci">bool isCallVFGEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00084">VFGEdge.h:84</a></div></div>
|
|
2427
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a27636f096ec825c4d5cb1dca608afb31"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31">SVF::ProgSlice::sinksEnd</a></div><div class="ttdeci">SVFGNodeSetIter sinksEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2428
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_aee72d029c185c24b2bf01cdc0dcb25d8"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aee72d029c185c24b2bf01cdc0dcb25d8">SVF::ProgSlice::setCurSVFGNode</a></div><div class="ttdeci">void setCurSVFGNode(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2429
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab5de7bf99935818ef1b0962e36b8624c"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab5de7bf99935818ef1b0962e36b8624c">SVF::ProgSlice::setVFCond</a></div><div class="ttdeci">bool setVFCond(const SVFGNode *node, const Condition &cond)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2554
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a27636f096ec825c4d5cb1dca608afb31"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31">SVF::ProgSlice::sinksEnd</a></div><div class="ttdeci">SVFGNodeSetIter sinksEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00139">ProgSlice.h:139</a></div></div>
|
|
2555
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_aee72d029c185c24b2bf01cdc0dcb25d8"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aee72d029c185c24b2bf01cdc0dcb25d8">SVF::ProgSlice::setCurSVFGNode</a></div><div class="ttdeci">void setCurSVFGNode(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00290">ProgSlice.h:290</a></div></div>
|
|
2556
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab5de7bf99935818ef1b0962e36b8624c"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab5de7bf99935818ef1b0962e36b8624c">SVF::ProgSlice::setVFCond</a></div><div class="ttdeci">bool setVFCond(const SVFGNode *node, const Condition &cond)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00238">ProgSlice.h:238</a></div></div>
|
|
2430
2557
|
<div class="ttc" id="aclassSVF_1_1SparseBitVector_1_1SparseBitVectorIterator_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">SVF::SparseBitVector::SparseBitVectorIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00536">SparseBitVector.h:536</a></div></div>
|
|
2431
2558
|
<div class="ttc" id="anamespaceSVF_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#l00050">SVFUtil.h:50</a></div></div>
|
|
2432
2559
|
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a684e44ade783439c6f77a8d84eed282c"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a684e44ade783439c6f77a8d84eed282c">SVF::ProgSlice::VFWorkList</a></div><div class="ttdeci">FIFOWorkList< const SVFGNode * > VFWorkList</div><div class="ttdoc">worklist for value-flow guard computation</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00058">ProgSlice.h:58</a></div></div>
|
|
2433
2560
|
<div class="ttc" id="aclassSVF_1_1VFGNode_html_a3c558955f60c237c558d8faafed781e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVF::VFGNode::const_iterator</a></div><div class="ttdeci">VFGEdge::VFGEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00060">VFGNode.h:60</a></div></div>
|
|
2434
|
-
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_ad5d27f65374025b6a105ea7a92cbdb50"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad5d27f65374025b6a105ea7a92cbdb50">SVF::SaberCondAllocator::isNegCond</a></div><div class="ttdeci">bool isNegCond(u32_t id) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
2561
|
+
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_ad5d27f65374025b6a105ea7a92cbdb50"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ad5d27f65374025b6a105ea7a92cbdb50">SVF::SaberCondAllocator::isNegCond</a></div><div class="ttdeci">bool isNegCond(u32_t id) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00142">SaberCondAllocator.h:142</a></div></div>
|
|
2435
2562
|
<div class="ttc" id="aclassSVF_1_1SVFBugEvent_html_a4d0c0744525bc445a64176c3808377f3a070acf2c72c74cba55b5acea3db9c854"><div class="ttname"><a href="classSVF_1_1SVFBugEvent.html#a4d0c0744525bc445a64176c3808377f3a070acf2c72c74cba55b5acea3db9c854">SVF::SVFBugEvent::Branch</a></div><div class="ttdeci">@ Branch</div><div class="ttdef"><b>Definition:</b> <a href="SVFBugReport_8h_source.html#l00056">SVFBugReport.h:56</a></div></div>
|
|
2436
2563
|
<div class="ttc" id="aclassSVF_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>
|
|
2437
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_ae7f6f66b7e70cf872dc572b073f6d67b"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ae7f6f66b7e70cf872dc572b073f6d67b">SVF::ProgSlice::ComputeIntraVFGGuard</a></div><div class="ttdeci">Condition ComputeIntraVFGGuard(const SVFBasicBlock *src, const SVFBasicBlock *dst)</div><div class="ttdoc">Compute guards for value-flows.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2438
|
-
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a5406e73b860c419143035ee3774e7c1c"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a5406e73b860c419143035ee3774e7c1c">SVF::SaberCondAllocator::clearCFCond</a></div><div class="ttdeci">void clearCFCond()</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
2439
|
-
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_ae717f565b947a72651c0de19bf6bcca0"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae717f565b947a72651c0de19bf6bcca0">SVF::SaberCondAllocator::setCurEvalSVFGNode</a></div><div class="ttdeci">void setCurEvalSVFGNode(const SVFGNode *node)</div><div class="ttdoc">Set current value for branch condition evaluation.</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
2440
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a3e729aba81cd64e8628df630f5a0f416"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a3e729aba81cd64e8628df630f5a0f416">SVF::ProgSlice::condOr</a></div><div class="ttdeci">Condition condOr(const Condition &lhs, const Condition &rhs)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2441
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a457a759c552a1418538769d79d7a7dde"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde">SVF::ProgSlice::svfg</a></div><div class="ttdeci">const SVFG * svfg</div><div class="ttdoc">SVFG.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2442
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_af55830503ef47b4b1c15c0e5b3cd6a3f"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#af55830503ef47b4b1c15c0e5b3cd6a3f">SVF::ProgSlice::setFinalCond</a></div><div class="ttdeci">void setFinalCond(const 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#
|
|
2564
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_ae7f6f66b7e70cf872dc572b073f6d67b"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ae7f6f66b7e70cf872dc572b073f6d67b">SVF::ProgSlice::ComputeIntraVFGGuard</a></div><div class="ttdeci">Condition ComputeIntraVFGGuard(const SVFBasicBlock *src, const SVFBasicBlock *dst)</div><div class="ttdoc">Compute guards for value-flows.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00252">ProgSlice.h:252</a></div></div>
|
|
2565
|
+
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a5406e73b860c419143035ee3774e7c1c"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a5406e73b860c419143035ee3774e7c1c">SVF::SaberCondAllocator::clearCFCond</a></div><div class="ttdeci">void clearCFCond()</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00177">SaberCondAllocator.h:177</a></div></div>
|
|
2566
|
+
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_ae717f565b947a72651c0de19bf6bcca0"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ae717f565b947a72651c0de19bf6bcca0">SVF::SaberCondAllocator::setCurEvalSVFGNode</a></div><div class="ttdeci">void setCurEvalSVFGNode(const SVFGNode *node)</div><div class="ttdoc">Set current value for branch condition evaluation.</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00182">SaberCondAllocator.h:182</a></div></div>
|
|
2567
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a3e729aba81cd64e8628df630f5a0f416"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a3e729aba81cd64e8628df630f5a0f416">SVF::ProgSlice::condOr</a></div><div class="ttdeci">Condition condOr(const Condition &lhs, const Condition &rhs)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00186">ProgSlice.h:186</a></div></div>
|
|
2568
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a457a759c552a1418538769d79d7a7dde"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a457a759c552a1418538769d79d7a7dde">SVF::ProgSlice::svfg</a></div><div class="ttdeci">const SVFG * svfg</div><div class="ttdoc">SVFG.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00322">ProgSlice.h:322</a></div></div>
|
|
2569
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_af55830503ef47b4b1c15c0e5b3cd6a3f"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#af55830503ef47b4b1c15c0e5b3cd6a3f">SVF::ProgSlice::setFinalCond</a></div><div class="ttdeci">void setFinalCond(const 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#l00297">ProgSlice.h:297</a></div></div>
|
|
2443
2570
|
<div class="ttc" id="aclassSVF_1_1SVFBugEvent_html"><div class="ttname"><a href="classSVF_1_1SVFBugEvent.html">SVF::SVFBugEvent</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFBugReport_8h_source.html#l00051">SVFBugReport.h:51</a></div></div>
|
|
2444
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_aceb26d08f0d12367e4726e1ff0e25953"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aceb26d08f0d12367e4726e1ff0e25953">SVF::ProgSlice::condAnd</a></div><div class="ttdeci">Condition condAnd(const Condition &lhs, const Condition &rhs)</div><div class="ttdoc">Condition operations.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2445
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_aaf001b6abc4ecb466ab74b26981ea7ef"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">SVF::ProgSlice::pathAllocator</a></div><div class="ttdeci">SaberCondAllocator * pathAllocator</div><div class="ttdoc">path condition allocator</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2446
|
-
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
2571
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_aceb26d08f0d12367e4726e1ff0e25953"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aceb26d08f0d12367e4726e1ff0e25953">SVF::ProgSlice::condAnd</a></div><div class="ttdeci">Condition condAnd(const Condition &lhs, const Condition &rhs)</div><div class="ttdoc">Condition operations.</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00182">ProgSlice.h:182</a></div></div>
|
|
2572
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_aaf001b6abc4ecb466ab74b26981ea7ef"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#aaf001b6abc4ecb466ab74b26981ea7ef">SVF::ProgSlice::pathAllocator</a></div><div class="ttdeci">SaberCondAllocator * pathAllocator</div><div class="ttdoc">path condition allocator</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00319">ProgSlice.h:319</a></div></div>
|
|
2573
|
+
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_ab9d7f1f5c5f22b190ec34255dead41b3"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#ab9d7f1f5c5f22b190ec34255dead41b3">SVF::SaberCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00099">SaberCondAllocator.h:99</a></div></div>
|
|
2447
2574
|
<div class="ttc" id="aSVFType_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DBUG model of each pass.</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00576">SVFType.h:576</a></div></div>
|
|
2448
2575
|
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_af77d3631664b21a16818f54b03b5a832"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#af77d3631664b21a16818f54b03b5a832">SVF::SaberCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition ComputeIntraVFGGuard(const SVFBasicBlock *src, const SVFBasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8cpp_source.html#l00516">SaberCondAllocator.cpp:516</a></div></div>
|
|
2449
2576
|
<div class="ttc" id="aclassSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00626">SVFValue.h:626</a></div></div>
|
|
2450
|
-
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a246da0431273c312800459aa85d80a86"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a246da0431273c312800459aa85d80a86">SVF::SaberCondAllocator::isAllPathReachable</a></div><div class="ttdeci">bool isAllPathReachable(Condition &condition)</div><div class="ttdoc">whether condition is satisfiable for all possible boolean guards</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
2451
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a9d81f792b6a8b15395a63d06daf56573"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a9d81f792b6a8b15395a63d06daf56573">SVF::ProgSlice::getFalseCond</a></div><div class="ttdeci">Condition getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2577
|
+
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a246da0431273c312800459aa85d80a86"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a246da0431273c312800459aa85d80a86">SVF::SaberCondAllocator::isAllPathReachable</a></div><div class="ttdeci">bool isAllPathReachable(Condition &condition)</div><div class="ttdoc">whether condition is satisfiable for all possible boolean guards</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00200">SaberCondAllocator.h:200</a></div></div>
|
|
2578
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a9d81f792b6a8b15395a63d06daf56573"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a9d81f792b6a8b15395a63d06daf56573">SVF::ProgSlice::getFalseCond</a></div><div class="ttdeci">Condition getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00198">ProgSlice.h:198</a></div></div>
|
|
2452
2579
|
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a7effb0f37f486745e0cdc3ae5e9c732b"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">SVF::SVFValue::getSourceLoc</a></div><div class="ttdeci">virtual const std::string getSourceLoc() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00280">SVFValue.h:280</a></div></div>
|
|
2453
|
-
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a2e4c3f5149a5085a5c8bb7547eae8161"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">SVF::SaberCondAllocator::condOr</a></div><div class="ttdeci">Condition condOr(const Condition &lhs, const Condition &rhs)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
2454
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_abca08cad9cadc72caf6743df3ff934e7"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#abca08cad9cadc72caf6743df3ff934e7">SVF::ProgSlice::getSVFGNodeBB</a></div><div class="ttdeci">const SVFBasicBlock * getSVFGNodeBB(const SVFGNode *node) const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2455
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a07ce77afbf69d5e2a47afaa39eaea886"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a07ce77afbf69d5e2a47afaa39eaea886">SVF::ProgSlice::getRetSite</a></div><div class="ttdeci">const CallICFGNode * getRetSite(const SVFGEdge *edge) const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#
|
|
2580
|
+
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a2e4c3f5149a5085a5c8bb7547eae8161"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a2e4c3f5149a5085a5c8bb7547eae8161">SVF::SaberCondAllocator::condOr</a></div><div class="ttdeci">Condition condOr(const Condition &lhs, const Condition &rhs)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00091">SaberCondAllocator.h:91</a></div></div>
|
|
2581
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_abca08cad9cadc72caf6743df3ff934e7"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#abca08cad9cadc72caf6743df3ff934e7">SVF::ProgSlice::getSVFGNodeBB</a></div><div class="ttdeci">const SVFBasicBlock * getSVFGNodeBB(const SVFGNode *node) const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00274">ProgSlice.h:274</a></div></div>
|
|
2582
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a07ce77afbf69d5e2a47afaa39eaea886"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a07ce77afbf69d5e2a47afaa39eaea886">SVF::ProgSlice::getRetSite</a></div><div class="ttdeci">const CallICFGNode * getRetSite(const SVFGEdge *edge) const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00187">ProgSlice.cpp:187</a></div></div>
|
|
2456
2583
|
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_af41c438baa739406a35bcb2e9ba431dd"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#af41c438baa739406a35bcb2e9ba431dd">SVF::ProgSlice::SVFGNodeSetIter</a></div><div class="ttdeci">SVFGNodeSet::const_iterator SVFGNodeSetIter</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00054">ProgSlice.h:54</a></div></div>
|
|
2457
2584
|
<div class="ttc" id="aclassSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00101">GenericGraph.h:101</a></div></div>
|
|
2458
2585
|
<div class="ttc" id="anamespaceSVF_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="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
|
|
2459
|
-
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a620d53b9af8dd30523c478f4e9655817"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a620d53b9af8dd30523c478f4e9655817">SVF::SaberCondAllocator::condNeg</a></div><div class="ttdeci">Condition condNeg(const Condition &cond)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#
|
|
2460
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a62a9f2c107f27d6c04c30ef153ffb8ed"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a62a9f2c107f27d6c04c30ef153ffb8ed">SVF::ProgSlice::isSatisfiableForAll</a></div><div class="ttdeci">bool isSatisfiableForAll()</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#
|
|
2461
|
-
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab7311a806f1c3899b5a4de106eac24b7"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab7311a806f1c3899b5a4de106eac24b7">SVF::ProgSlice::ComputeInterRetVFGGuard</a></div><div class="ttdeci">Condition ComputeInterRetVFGGuard(const SVFBasicBlock *src, const SVFBasicBlock *dst, const SVFBasicBlock *retBB)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#
|
|
2586
|
+
<div class="ttc" id="aclassSVF_1_1SaberCondAllocator_html_a620d53b9af8dd30523c478f4e9655817"><div class="ttname"><a href="classSVF_1_1SaberCondAllocator.html#a620d53b9af8dd30523c478f4e9655817">SVF::SaberCondAllocator::condNeg</a></div><div class="ttdeci">Condition condNeg(const Condition &cond)</div><div class="ttdef"><b>Definition:</b> <a href="SaberCondAllocator_8h_source.html#l00095">SaberCondAllocator.h:95</a></div></div>
|
|
2587
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_a62a9f2c107f27d6c04c30ef153ffb8ed"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a62a9f2c107f27d6c04c30ef153ffb8ed">SVF::ProgSlice::isSatisfiableForAll</a></div><div class="ttdeci">bool isSatisfiableForAll()</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8cpp_source.html#l00142">ProgSlice.cpp:142</a></div></div>
|
|
2588
|
+
<div class="ttc" id="aclassSVF_1_1ProgSlice_html_ab7311a806f1c3899b5a4de106eac24b7"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ab7311a806f1c3899b5a4de106eac24b7">SVF::ProgSlice::ComputeInterRetVFGGuard</a></div><div class="ttdeci">Condition ComputeInterRetVFGGuard(const SVFBasicBlock *src, const SVFBasicBlock *dst, const SVFBasicBlock *retBB)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00260">ProgSlice.h:260</a></div></div>
|
|
2462
2589
|
<!-- start footer part -->
|
|
2463
2590
|
<hr class="footer"/><address class="footer"><small>
|
|
2464
2591
|
Generated by  <a href="http://www.doxygen.org/index.html">
|