svf-tools 1.0.427 → 1.0.430
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/CHG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ConsG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CxtStmt_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/DCHG_8h_source.html +7 -7
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +9 -9
- package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +6 -6
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +18 -18
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/LLVMUtil_8h.html +6 -0
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +58 -56
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MHP_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MTA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +13 -12
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +33 -27
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +32 -28
- package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +6 -6
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +5 -4
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +117 -27
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +32 -27
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +70 -70
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +34 -34
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +10 -10
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFModule_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFUtil_8h.html +0 -3
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +12 -13
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +7 -7
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +9 -7
- package/SVF-doxygen/html/html/SaberAnnotator_8h.html +1 -1
- package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +6 -7
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +62 -61
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +77 -76
- package/SVF-doxygen/html/html/SymbolTableInfo_8h.html +1 -0
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +135 -134
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/TCT_8h_source.html +7 -7
- package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -11
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +75 -80
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +41 -41
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +47 -47
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +5 -3
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +20 -19
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MemObj-members.html +5 -4
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +115 -88
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +94 -94
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator-members.html +26 -25
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +153 -114
- package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +31 -30
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +11 -8
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +29 -29
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +89 -89
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +28 -24
- package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +36 -36
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +86 -86
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +41 -42
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +189 -220
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
- package/SVF-doxygen/html/html/functions_a.html +3 -3
- package/SVF-doxygen/html/html/functions_e.html +2 -2
- package/SVF-doxygen/html/html/functions_func.html +3 -3
- package/SVF-doxygen/html/html/functions_func_e.html +2 -2
- package/SVF-doxygen/html/html/functions_func_g.html +8 -7
- package/SVF-doxygen/html/html/functions_func_i.html +5 -8
- package/SVF-doxygen/html/html/functions_func_s.html +9 -8
- package/SVF-doxygen/html/html/functions_g.html +15 -14
- package/SVF-doxygen/html/html/functions_i.html +11 -14
- package/SVF-doxygen/html/html/functions_l.html +3 -3
- package/SVF-doxygen/html/html/functions_o.html +15 -15
- package/SVF-doxygen/html/html/functions_p.html +7 -7
- package/SVF-doxygen/html/html/functions_r.html +8 -8
- package/SVF-doxygen/html/html/functions_s.html +11 -10
- package/SVF-doxygen/html/html/functions_t.html +10 -8
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/globals.html +3 -0
- package/SVF-doxygen/html/html/globals_b.html +3 -0
- package/SVF-doxygen/html/html/globals_r.html +3 -0
- package/SVF-doxygen/html/html/globals_s.html +9 -6
- package/SVF-doxygen/html/html/globals_type.html +15 -0
- package/SVF-doxygen/html/html/globals_u.html +5 -2
- package/SVF-doxygen/html/html/namespaceSVF.html +40 -130
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +253 -220
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +20 -20
- package/SVF-doxygen/html/html/namespacemembers.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_b.html +1 -4
- package/SVF-doxygen/html/html/namespacemembers_func.html +8 -5
- package/SVF-doxygen/html/html/namespacemembers_i.html +11 -8
- package/SVF-doxygen/html/html/namespacemembers_r.html +1 -4
- package/SVF-doxygen/html/html/namespacemembers_s.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_type.html +0 -15
- package/SVF-doxygen/html/html/namespacemembers_u.html +0 -3
- package/SVF-doxygen/html/html/search/all_1.js +4 -4
- package/SVF-doxygen/html/html/search/all_10.js +9 -9
- package/SVF-doxygen/html/html/search/all_12.js +4 -4
- package/SVF-doxygen/html/html/search/all_13.js +8 -8
- package/SVF-doxygen/html/html/search/all_14.js +7 -7
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_2.js +1 -1
- package/SVF-doxygen/html/html/search/all_5.js +2 -2
- package/SVF-doxygen/html/html/search/all_7.js +1 -1
- package/SVF-doxygen/html/html/search/all_9.js +2 -2
- package/SVF-doxygen/html/html/search/all_c.js +1 -1
- package/SVF-doxygen/html/html/search/all_d.js +2 -2
- package/SVF-doxygen/html/html/search/all_e.js +2 -2
- package/SVF-doxygen/html/html/search/all_f.js +3 -3
- package/SVF-doxygen/html/html/search/functions_0.js +3 -3
- package/SVF-doxygen/html/html/search/functions_10.js +2 -2
- package/SVF-doxygen/html/html/search/functions_4.js +2 -2
- package/SVF-doxygen/html/html/search/functions_6.js +1 -1
- package/SVF-doxygen/html/html/search/functions_8.js +1 -1
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_0.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_1.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_10.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_13.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +3 -3
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
- package/include/DDA/DDAVFSolver.h +3 -3
- package/include/MemoryModel/SymbolTableInfo.h +6 -4
- package/include/SABER/PathCondAllocator.h +8 -2
- package/include/SABER/SaberAnnotator.h +4 -4
- package/include/SVF-FE/BasicTypes.h +5 -0
- package/include/SVF-FE/LLVMUtil.h +13 -0
- package/include/Util/BasicTypes.h +0 -5
- package/include/Util/SVFUtil.h +0 -5
- package/lib/MSSA/MemRegion.cpp +4 -4
- package/lib/MemoryModel/PointerAnalysis.cpp +4 -4
- package/lib/MemoryModel/SymbolTableInfo.cpp +6 -8
- package/lib/SABER/PathCondAllocator.cpp +31 -26
- package/lib/SABER/ProgSlice.cpp +7 -4
- package/lib/SABER/SaberAnnotator.cpp +8 -8
- package/lib/SVF-FE/SymbolTableBuilder.cpp +1 -1
- package/package.json +1 -1
|
@@ -135,6 +135,8 @@ Public Member Functions</h2></td></tr>
|
|
|
135
135
|
<tr class="separator:a51c55809f28eee5b8432ab4508f9a887"><td class="memSeparator" colspan="2"> </td></tr>
|
|
136
136
|
<tr class="memitem:ad92e8909172d960de8a25f6ff0272261"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PathCondAllocator.html#ad92e8909172d960de8a25f6ff0272261">isEquivalentBranchCond</a> (const <a class="el" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a> *lhs, const <a class="el" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a> *rhs) const</td></tr>
|
|
137
137
|
<tr class="separator:ad92e8909172d960de8a25f6ff0272261"><td class="memSeparator" colspan="2"> </td></tr>
|
|
138
|
+
<tr class="memitem:a80a607028f3a05d478ffbd6fcc0bbc2a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1ICFG.html">ICFG</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PathCondAllocator.html#a80a607028f3a05d478ffbd6fcc0bbc2a">getICFG</a> () const</td></tr>
|
|
139
|
+
<tr class="separator:a80a607028f3a05d478ffbd6fcc0bbc2a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
138
140
|
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
|
|
139
141
|
<tr class="memitem:ad6d58127299d87ae3c231065bb411557"><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PathCondAllocator.html#ad6d58127299d87ae3c231065bb411557">getMemUsage</a> ()</td></tr>
|
|
140
142
|
<tr class="memdesc:ad6d58127299d87ae3c231065bb411557"><td class="mdescLeft"> </td><td class="mdescRight">Statistics. <a href="#ad6d58127299d87ae3c231065bb411557">More...</a><br /></td></tr>
|
|
@@ -217,12 +219,12 @@ Private Member Functions</h2></td></tr>
|
|
|
217
219
|
<tr class="memitem:a623e6ec670e5f6aeedee26b146ad5a0d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PathCondAllocator.html#a623e6ec670e5f6aeedee26b146ad5a0d">evaluateLoopExitBranch</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *bb, const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ)</td></tr>
|
|
218
220
|
<tr class="memdesc:a623e6ec670e5f6aeedee26b146ad5a0d"><td class="mdescLeft"> </td><td class="mdescRight">Evaluate loop exit branch. <a href="#a623e6ec670e5f6aeedee26b146ad5a0d">More...</a><br /></td></tr>
|
|
219
221
|
<tr class="separator:a623e6ec670e5f6aeedee26b146ad5a0d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
220
|
-
<tr class="memitem:
|
|
221
|
-
<tr class="memdesc:
|
|
222
|
-
<tr class="separator:
|
|
223
|
-
<tr class="memitem:
|
|
224
|
-
<tr class="memdesc:
|
|
225
|
-
<tr class="separator:
|
|
222
|
+
<tr class="memitem:af595a4b93bd350f489bfe8635d86cfcc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PathCondAllocator.html#af595a4b93bd350f489bfe8635d86cfcc">evaluateTestNullLikeExpr</a> (const <a class="el" href="classSVF_1_1BranchStmt.html">BranchStmt</a> *branchStmt, const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ)</td></tr>
|
|
223
|
+
<tr class="memdesc:af595a4b93bd350f489bfe8635d86cfcc"><td class="mdescLeft"> </td><td class="mdescRight">Return branch condition after evaluating test null like expression. <a href="#af595a4b93bd350f489bfe8635d86cfcc">More...</a><br /></td></tr>
|
|
224
|
+
<tr class="separator:af595a4b93bd350f489bfe8635d86cfcc"><td class="memSeparator" colspan="2"> </td></tr>
|
|
225
|
+
<tr class="memitem:a79d6bbd55a134c856f3e80a898af23ee"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PathCondAllocator.html#a79d6bbd55a134c856f3e80a898af23ee">evaluateProgExit</a> (const <a class="el" href="classSVF_1_1BranchStmt.html">BranchStmt</a> *branchStmt, const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ)</td></tr>
|
|
226
|
+
<tr class="memdesc:a79d6bbd55a134c856f3e80a898af23ee"><td class="mdescLeft"> </td><td class="mdescRight">Return condition when there is a branch calls program exit. <a href="#a79d6bbd55a134c856f3e80a898af23ee">More...</a><br /></td></tr>
|
|
227
|
+
<tr class="separator:a79d6bbd55a134c856f3e80a898af23ee"><td class="memSeparator" colspan="2"> </td></tr>
|
|
226
228
|
<tr class="memitem:a391cb347cf98f33c261e59975900048e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PathCondAllocator.html#a391cb347cf98f33c261e59975900048e">collectBBCallingProgExit</a> (const <a class="el" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> &bb)</td></tr>
|
|
227
229
|
<tr class="memdesc:a391cb347cf98f33c261e59975900048e"><td class="mdescLeft"> </td><td class="mdescRight">Collect basic block contains program exit function call. <a href="#a391cb347cf98f33c261e59975900048e">More...</a><br /></td></tr>
|
|
228
230
|
<tr class="separator:a391cb347cf98f33c261e59975900048e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
@@ -413,7 +415,7 @@ Private Attributes</h2></td></tr>
|
|
|
413
415
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00048">48</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
|
|
414
416
|
<div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  : <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>(<a class="code" href="classSVF_1_1CondManager.html#a08cad78a4ebb31f32b72d5ff9793b83e">CondManager::getCondMgr</a>(<a class="code" href="classSVF_1_1Options.html#a87567aa3e6423fc96e0dfbaff00ed565">Options::ConditionType</a>)) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="ttc" id="classSVF_1_1Options_html_a87567aa3e6423fc96e0dfbaff00ed565"><div class="ttname"><a href="classSVF_1_1Options.html#a87567aa3e6423fc96e0dfbaff00ed565">SVF::Options::ConditionType</a></div><div class="ttdeci">static const llvm::cl::opt< CondManager::CondMgrKind > ConditionType</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00259">Options.h:259</a></div></div>
|
|
415
417
|
<div class="ttc" id="classSVF_1_1CondManager_html_a08cad78a4ebb31f32b72d5ff9793b83e"><div class="ttname"><a href="classSVF_1_1CondManager.html#a08cad78a4ebb31f32b72d5ff9793b83e">SVF::CondManager::getCondMgr</a></div><div class="ttdeci">static CondManager * getCondMgr(CondMgrKind _condMgrKind)</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8cpp_source.html#l00043">Conditions.cpp:43</a></div></div>
|
|
416
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
418
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00289">PathCondAllocator.h:289</a></div></div>
|
|
417
419
|
</div><!-- fragment -->
|
|
418
420
|
</div>
|
|
419
421
|
</div>
|
|
@@ -470,12 +472,12 @@ Private Attributes</h2></td></tr>
|
|
|
470
472
|
<div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">"path condition allocation starts\n"</span>));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& func : *M)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(func))</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// Allocate conditions for a program.</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">for</span> (Function::const_iterator bit = func->getLLVMFun()->begin(), ebit = func->getLLVMFun()->end(); bit != ebit; ++bit)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> & bb = *bit;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#a391cb347cf98f33c261e59975900048e">collectBBCallingProgExit</a>(bb);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#af854f880e76738a13d6cb937a257828f">allocateForBB</a>(bb);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ae6b763ff293381ed5da9b07c2e8ae496">Options::PrintPathCond</a>)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#a2932b15ef74e46b676075ba1b2e82111">printPathCond</a>();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">"path condition allocation ends\n"</span>));</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_af854f880e76738a13d6cb937a257828f"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#af854f880e76738a13d6cb937a257828f">SVF::PathCondAllocator::allocateForBB</a></div><div class="ttdeci">virtual void allocateForBB(const BasicBlock &bb)</div><div class="ttdoc">Allocate path condition for every basic block. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00081">PathCondAllocator.cpp:81</a></div></div>
|
|
471
473
|
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
|
|
472
474
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00101">SVFUtil.cpp:101</a></div></div>
|
|
473
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a2932b15ef74e46b676075ba1b2e82111"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a2932b15ef74e46b676075ba1b2e82111">SVF::PathCondAllocator::printPathCond</a></div><div class="ttdeci">void printPathCond()</div><div class="ttdoc">Print out the path condition information. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#
|
|
475
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a2932b15ef74e46b676075ba1b2e82111"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a2932b15ef74e46b676075ba1b2e82111">SVF::PathCondAllocator::printPathCond</a></div><div class="ttdeci">void printPathCond()</div><div class="ttdoc">Print out the path condition information. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00542">PathCondAllocator.cpp:542</a></div></div>
|
|
474
476
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
475
477
|
<div class="ttc" id="SVFBasicTypes_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00156">SVFBasicTypes.h:156</a></div></div>
|
|
476
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a391cb347cf98f33c261e59975900048e"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a391cb347cf98f33c261e59975900048e">SVF::PathCondAllocator::collectBBCallingProgExit</a></div><div class="ttdeci">void collectBBCallingProgExit(const BasicBlock &bb)</div><div class="ttdoc">Collect basic block contains program exit function call. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#
|
|
478
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a391cb347cf98f33c261e59975900048e"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a391cb347cf98f33c261e59975900048e">SVF::PathCondAllocator::collectBBCallingProgExit</a></div><div class="ttdeci">void collectBBCallingProgExit(const BasicBlock &bb)</div><div class="ttdoc">Collect basic block contains program exit function call. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00399">PathCondAllocator.cpp:399</a></div></div>
|
|
477
479
|
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00151">SVFBasicTypes.h:151</a></div></div>
|
|
478
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
480
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00072">LLVMUtil.h:72</a></div></div>
|
|
479
481
|
<div class="ttc" id="classSVF_1_1Options_html_ae6b763ff293381ed5da9b07c2e8ae496"><div class="ttname"><a href="classSVF_1_1Options.html#ae6b763ff293381ed5da9b07c2e8ae496">SVF::Options::PrintPathCond</a></div><div class="ttdeci">static const llvm::cl::opt< bool > PrintPathCond</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00222">Options.h:222</a></div></div>
|
|
480
482
|
</div><!-- fragment -->
|
|
481
483
|
</div>
|
|
@@ -511,7 +513,7 @@ Private Attributes</h2></td></tr>
|
|
|
511
513
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00081">81</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
|
|
512
514
|
<div class="fragment"><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succ_number = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">getBBSuccessorNum</a>(&bb);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// if successor number greater than 1, allocate new decision variable for successors</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span>(succ_number > 1)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">//allocate log2(num_succ) decision variables</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">double</span> num = log(succ_number)/log(2);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> bit_num = (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)ceil(num);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> succ_index = 0;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  std::vector<Condition*> condVec;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0 ; i < bit_num; i++)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  condVec.push_back(<a class="code" href="classSVF_1_1PathCondAllocator.html#a3cd08242b82129e6074b2f30a19b5c17">newCond</a>(bb.getTerminator()));</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// iterate each successor</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> succ_it = succ_begin(&bb);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  succ_it != succ_end(&bb);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  succ_it++, succ_index++)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ = *succ_it;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* path_cond = <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// for each successor decide its bit representation</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// decide whether each bit of succ_index is 1 or 0, if (three successor) succ_index is 000 then use C1^C2^C3</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// if 001 use C1^C2^negC3</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">for</span>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> j = 0 ; j < bit_num; j++)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="comment">//test each bit of this successor's index (binary representation)</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> tool = 0x01 << j;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">if</span>(tool & succ_index)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  path_cond = <a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(path_cond, (<a class="code" href="classSVF_1_1PathCondAllocator.html#ac1ed60a8f59a55811c97c83def3bb739">condNeg</a>(condVec.at(j))));</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  path_cond = <a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(path_cond, condVec.at(j));</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#aaec323fc8a3f83da4596ed7d447ab6f1">setBranchCond</a>(&bb,succ,path_cond);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> }</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
|
|
513
515
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00095">PathCondAllocator.h:95</a></div></div>
|
|
514
|
-
<div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
516
|
+
<div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00155">BasicTypes.h:155</a></div></div>
|
|
515
517
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00081">SVFBasicTypes.h:81</a></div></div>
|
|
516
518
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a3cd08242b82129e6074b2f30a19b5c17"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a3cd08242b82129e6074b2f30a19b5c17">SVF::PathCondAllocator::newCond</a></div><div class="ttdeci">Condition * newCond(const Instruction *inst)</div><div class="ttdoc">Allocate a new condition. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00121">PathCondAllocator.h:121</a></div></div>
|
|
517
519
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aaec323fc8a3f83da4596ed7d447ab6f1"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aaec323fc8a3f83da4596ed7d447ab6f1">SVF::PathCondAllocator::setBranchCond</a></div><div class="ttdeci">void setBranchCond(const BasicBlock *bb, const BasicBlock *succ, Condition *cond)</div><div class="ttdoc">Get/Set a branch condition, and its terminator instruction. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00163">PathCondAllocator.cpp:163</a></div></div>
|
|
@@ -546,7 +548,7 @@ Private Attributes</h2></td></tr>
|
|
|
546
548
|
</div><div class="memdoc">
|
|
547
549
|
|
|
548
550
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00172">172</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
549
|
-
<div class="fragment"><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.clear();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac3a0aa27f317d7d9214181b599f19f24"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">SVF::PathCondAllocator::bbToCondMap</a></div><div class="ttdeci">BBToCondMap bbToCondMap</div><div class="ttdoc">map a basic block to its path condition starting from root </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
551
|
+
<div class="fragment"><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.clear();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac3a0aa27f317d7d9214181b599f19f24"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">SVF::PathCondAllocator::bbToCondMap</a></div><div class="ttdeci">BBToCondMap bbToCondMap</div><div class="ttdoc">map a basic block to its path condition starting from root </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00285">PathCondAllocator.h:285</a></div></div>
|
|
550
552
|
</div><!-- fragment -->
|
|
551
553
|
</div>
|
|
552
554
|
</div>
|
|
@@ -577,9 +579,9 @@ Private Attributes</h2></td></tr>
|
|
|
577
579
|
<p>Collect basic block contains program exit function call. </p>
|
|
578
580
|
<p>Whether this basic block contains program exit function call </p>
|
|
579
581
|
|
|
580
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#
|
|
581
|
-
<div class="fragment"><div class="line"><a name="
|
|
582
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6528edf9a1750df4a84d1a60d4d0bbe4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6528edf9a1750df4a84d1a60d4d0bbe4">SVF::SVFUtil::isProgExitCall</a></div><div class="ttdeci">bool isProgExitCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
582
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00399">399</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
|
|
583
|
+
<div class="fragment"><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">for</span>(BasicBlock::const_iterator it = bb.begin(), eit = bb.end(); it!=eit; it++)</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &*it;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">if</span>(SVFUtil::isa<CallBase>(inst))</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a6528edf9a1750df4a84d1a60d4d0bbe4">SVFUtil::isProgExitCall</a>(inst))</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b">funToExitBBsMap</a>[bb.getParent()].insert(&bb);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  }</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_ad35f1bdb406a85c5bfdcbbc15642853b"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b">SVF::PathCondAllocator::funToExitBBsMap</a></div><div class="ttdeci">FunToExitBBsMap funToExitBBsMap</div><div class="ttdoc">map a function to all its basic blocks calling program exit </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00284">PathCondAllocator.h:284</a></div></div>
|
|
584
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6528edf9a1750df4a84d1a60d4d0bbe4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6528edf9a1750df4a84d1a60d4d0bbe4">SVF::SVFUtil::isProgExitCall</a></div><div class="ttdeci">bool isProgExitCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00485">LLVMUtil.h:485</a></div></div>
|
|
583
585
|
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
|
|
584
586
|
</div><!-- fragment -->
|
|
585
587
|
</div>
|
|
@@ -625,14 +627,14 @@ Private Attributes</h2></td></tr>
|
|
|
625
627
|
</div><div class="memdoc">
|
|
626
628
|
<p>Compute calling inter-procedural guards between two SVFGNodes (from caller to callee) src –c1–> callBB –true–> funEntryBB –c2–> dst the InterCallVFGGuard is c1 ^ c2 </p>
|
|
627
629
|
|
|
628
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#
|
|
629
|
-
<div class="fragment"><div class="line"><a name="
|
|
630
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4cb61914dff693e284091e97ab8c8878"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">SVF::PathCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, Condition *cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
630
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00458">458</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
|
|
631
|
+
<div class="fragment"><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* funEntryBB = &dstBB->getParent()->getEntryBlock();</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> </div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* c1 = <a class="code" href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">ComputeIntraVFGGuard</a>(srcBB,callBB);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">setCFCond</a>(funEntryBB,<a class="code" href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">condOr</a>(<a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(funEntryBB),<a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(callBB)));</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* c2 = <a class="code" href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">ComputeIntraVFGGuard</a>(funEntryBB,dstBB);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(c1,c2);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> }</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
|
|
632
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4cb61914dff693e284091e97ab8c8878"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">SVF::PathCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, Condition *cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00255">PathCondAllocator.h:255</a></div></div>
|
|
631
633
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5a8c25d74ffc2a8f8dbd20faab4d9803"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">SVF::PathCondAllocator::condOr</a></div><div class="ttdeci">Condition * condOr(Condition *lhs, Condition *rhs)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00087">PathCondAllocator.h:87</a></div></div>
|
|
632
634
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab0e41d1eacfc6ee2cf42a9ce69cdcb61"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">SVF::PathCondAllocator::condAnd</a></div><div class="ttdeci">Condition * condAnd(Condition *lhs, Condition *rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00083">PathCondAllocator.h:83</a></div></div>
|
|
633
635
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aade2bc55c3882a6cacc3c4a891a1c4a3"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">SVF::PathCondAllocator::Condition</a></div><div class="ttdeci">CondExpr Condition</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00052">PathCondAllocator.h:52</a></div></div>
|
|
634
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a8c926057571ca14743e106a5a6ce7ae9"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">SVF::PathCondAllocator::getCFCond</a></div><div class="ttdeci">Condition * getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
635
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5ab573cce84584c44778611ba6f4d99c"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">SVF::PathCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition * ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks) </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#
|
|
636
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a8c926057571ca14743e106a5a6ce7ae9"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">SVF::PathCondAllocator::getCFCond</a></div><div class="ttdeci">Condition * getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00265">PathCondAllocator.h:265</a></div></div>
|
|
637
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5ab573cce84584c44778611ba6f4d99c"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">SVF::PathCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition * ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks) </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00486">PathCondAllocator.cpp:486</a></div></div>
|
|
636
638
|
</div><!-- fragment -->
|
|
637
639
|
</div>
|
|
638
640
|
</div>
|
|
@@ -677,15 +679,15 @@ Private Attributes</h2></td></tr>
|
|
|
677
679
|
</div><div class="memdoc">
|
|
678
680
|
<p>Compute return inter-procedural guards between two SVFGNodes (from callee to caller) src –c1–> funExitBB –true–> retBB –c2–> dst the InterRetVFGGuard is c1 ^ c2 </p>
|
|
679
681
|
|
|
680
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#
|
|
681
|
-
<div class="fragment"><div class="line"><a name="
|
|
682
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4cb61914dff693e284091e97ab8c8878"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">SVF::PathCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, Condition *cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
682
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00473">473</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
|
|
683
|
+
<div class="fragment"><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* funExitBB = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a3cb226930eeaf558575e09e5b65e0223">getFunExitBB</a>(srcBB->getParent());</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> </div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* c1 = <a class="code" href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">ComputeIntraVFGGuard</a>(srcBB,funExitBB);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">setCFCond</a>(retBB,<a class="code" href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">condOr</a>(<a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(retBB),<a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(funExitBB)));</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* c2 = <a class="code" href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">ComputeIntraVFGGuard</a>(retBB,dstBB);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(c1,c2);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> }</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
|
|
684
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4cb61914dff693e284091e97ab8c8878"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">SVF::PathCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, Condition *cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00255">PathCondAllocator.h:255</a></div></div>
|
|
683
685
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5a8c25d74ffc2a8f8dbd20faab4d9803"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">SVF::PathCondAllocator::condOr</a></div><div class="ttdeci">Condition * condOr(Condition *lhs, Condition *rhs)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00087">PathCondAllocator.h:87</a></div></div>
|
|
684
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a3cb226930eeaf558575e09e5b65e0223"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a3cb226930eeaf558575e09e5b65e0223">SVF::SVFUtil::getFunExitBB</a></div><div class="ttdeci">const BasicBlock * getFunExitBB(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#
|
|
686
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a3cb226930eeaf558575e09e5b65e0223"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a3cb226930eeaf558575e09e5b65e0223">SVF::SVFUtil::getFunExitBB</a></div><div class="ttdeci">const BasicBlock * getFunExitBB(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00520">LLVMUtil.h:520</a></div></div>
|
|
685
687
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab0e41d1eacfc6ee2cf42a9ce69cdcb61"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">SVF::PathCondAllocator::condAnd</a></div><div class="ttdeci">Condition * condAnd(Condition *lhs, Condition *rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00083">PathCondAllocator.h:83</a></div></div>
|
|
686
688
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aade2bc55c3882a6cacc3c4a891a1c4a3"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">SVF::PathCondAllocator::Condition</a></div><div class="ttdeci">CondExpr Condition</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00052">PathCondAllocator.h:52</a></div></div>
|
|
687
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a8c926057571ca14743e106a5a6ce7ae9"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">SVF::PathCondAllocator::getCFCond</a></div><div class="ttdeci">Condition * getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
688
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5ab573cce84584c44778611ba6f4d99c"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">SVF::PathCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition * ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks) </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#
|
|
689
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a8c926057571ca14743e106a5a6ce7ae9"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">SVF::PathCondAllocator::getCFCond</a></div><div class="ttdeci">Condition * getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00265">PathCondAllocator.h:265</a></div></div>
|
|
690
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5ab573cce84584c44778611ba6f4d99c"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">SVF::PathCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition * ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks) </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00486">PathCondAllocator.cpp:486</a></div></div>
|
|
689
691
|
</div><!-- fragment -->
|
|
690
692
|
</div>
|
|
691
693
|
</div>
|
|
@@ -728,23 +730,23 @@ Private Attributes</h2></td></tr>
|
|
|
728
730
|
<p>if the dstBB is the eligible loop exit of the current basic block we can early terminate the computation</p>
|
|
729
731
|
<p>calculate the branch condition if succ post dominate bb, then we get brCond quicker by using postDT note that we assume loop exit always post dominate loop bodys which means loops are approximated only once. </p>
|
|
730
732
|
|
|
731
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#
|
|
732
|
-
<div class="fragment"><div class="line"><a name="
|
|
733
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00486">486</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
|
|
734
|
+
<div class="fragment"><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> </div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(srcBB->getParent() == dstBB->getParent() && <span class="stringliteral">"two basic blocks are not in the same function??"</span>);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> </div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>* postDT = <a class="code" href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e">getPostDT</a>(srcBB->getParent());</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keywordflow">if</span>(postDT->dominates(dstBB,srcBB))</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> </div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#ac578894f959845164e1343384d60def1">CFWorkList</a> worklist;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  worklist.push(srcBB);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">setCFCond</a>(srcBB,<a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>());</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> </div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="keywordflow">while</span>(!worklist.empty())</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = worklist.pop();</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* cond = <a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(bb);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> </div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* loopExitCond = <a class="code" href="classSVF_1_1PathCondAllocator.html#a623e6ec670e5f6aeedee26b146ad5a0d">evaluateLoopExitBranch</a>(bb,dstBB))</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(cond, loopExitCond);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> </div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> </div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> succ_it = succ_begin(bb);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  succ_it != succ_end(bb); succ_it++)</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ = *succ_it;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* brCond;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordflow">if</span>(postDT->dominates(succ,bb))</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  brCond = <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  brCond = <a class="code" href="classSVF_1_1PathCondAllocator.html#a6d2c5b05f4966522c9310fd3c086adea">getEvalBrCond</a>(bb, succ);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" bb ("</span> << bb->getName().str() <<</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="stringliteral">") --> "</span> << <span class="stringliteral">"succ_bb ("</span> << succ->getName().str() << <span class="stringliteral">") condition: "</span> << brCond << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* succPathCond = <a class="code" href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">condAnd</a>(cond, brCond);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">setCFCond</a>(succ, <a class="code" href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">condOr</a>(<a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(succ), succPathCond)))</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  worklist.push(succ);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  }</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> </div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" src_bb ("</span> << srcBB->getName().str() <<</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="stringliteral">") --> "</span> << <span class="stringliteral">"dst_bb ("</span> << dstBB->getName().str() << <span class="stringliteral">") condition: "</span> << <a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(dstBB) << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> </div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">getCFCond</a>(dstBB);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> }</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
|
|
733
735
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
734
736
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00095">PathCondAllocator.h:95</a></div></div>
|
|
735
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4cb61914dff693e284091e97ab8c8878"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">SVF::PathCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, Condition *cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
737
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4cb61914dff693e284091e97ab8c8878"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4cb61914dff693e284091e97ab8c8878">SVF::PathCondAllocator::setCFCond</a></div><div class="ttdeci">bool setCFCond(const BasicBlock *bb, Condition *cond)</div><div class="ttdoc">Get/Set control-flow conditions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00255">PathCondAllocator.h:255</a></div></div>
|
|
736
738
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1295e2c2c0a9c1a3744ba3927b95363e"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e">SVF::PathCondAllocator::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *fun)</div><div class="ttdoc">Get Postdominators. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00151">PathCondAllocator.h:151</a></div></div>
|
|
737
739
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a623e6ec670e5f6aeedee26b146ad5a0d"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a623e6ec670e5f6aeedee26b146ad5a0d">SVF::PathCondAllocator::evaluateLoopExitBranch</a></div><div class="ttdeci">Condition * evaluateLoopExitBranch(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Evaluate loop exit branch. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00254">PathCondAllocator.cpp:254</a></div></div>
|
|
738
740
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a6d2c5b05f4966522c9310fd3c086adea"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a6d2c5b05f4966522c9310fd3c086adea">SVF::PathCondAllocator::getEvalBrCond</a></div><div class="ttdeci">Condition * getEvalBrCond(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Get a condition, evaluate the value for conditions if necessary (e.g., testNull like express) ...</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00152">PathCondAllocator.cpp:152</a></div></div>
|
|
739
741
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5a8c25d74ffc2a8f8dbd20faab4d9803"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5a8c25d74ffc2a8f8dbd20faab4d9803">SVF::PathCondAllocator::condOr</a></div><div class="ttdeci">Condition * condOr(Condition *lhs, Condition *rhs)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00087">PathCondAllocator.h:87</a></div></div>
|
|
740
|
-
<div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
742
|
+
<div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00155">BasicTypes.h:155</a></div></div>
|
|
741
743
|
<div class="ttc" id="SVFBasicTypes_8h_html_a817abc424f7cfcdec5954c7807970f36"><div class="ttname"><a href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a></div><div class="ttdeci">#define DSaber</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00170">SVFBasicTypes.h:170</a></div></div>
|
|
742
|
-
<div class="ttc" id="namespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
744
|
+
<div class="ttc" id="namespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
|
|
743
745
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
744
746
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ab0e41d1eacfc6ee2cf42a9ce69cdcb61"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ab0e41d1eacfc6ee2cf42a9ce69cdcb61">SVF::PathCondAllocator::condAnd</a></div><div class="ttdeci">Condition * condAnd(Condition *lhs, Condition *rhs)</div><div class="ttdoc">Condition operations. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00083">PathCondAllocator.h:83</a></div></div>
|
|
745
747
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac578894f959845164e1343384d60def1"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac578894f959845164e1343384d60def1">SVF::PathCondAllocator::CFWorkList</a></div><div class="ttdeci">FIFOWorkList< const BasicBlock * > CFWorkList</div><div class="ttdoc">worklist for control-flow guard computation </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00059">PathCondAllocator.h:59</a></div></div>
|
|
746
748
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aade2bc55c3882a6cacc3c4a891a1c4a3"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">SVF::PathCondAllocator::Condition</a></div><div class="ttdeci">CondExpr Condition</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00052">PathCondAllocator.h:52</a></div></div>
|
|
747
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a8c926057571ca14743e106a5a6ce7ae9"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">SVF::PathCondAllocator::getCFCond</a></div><div class="ttdeci">Condition * getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
749
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a8c926057571ca14743e106a5a6ce7ae9"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a8c926057571ca14743e106a5a6ce7ae9">SVF::PathCondAllocator::getCFCond</a></div><div class="ttdeci">Condition * getCFCond(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00265">PathCondAllocator.h:265</a></div></div>
|
|
748
750
|
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00151">SVFBasicTypes.h:151</a></div></div>
|
|
749
751
|
</div><!-- fragment -->
|
|
750
752
|
</div>
|
|
@@ -787,7 +789,7 @@ Private Attributes</h2></td></tr>
|
|
|
787
789
|
|
|
788
790
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00083">83</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
789
791
|
<div class="fragment"><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#aedda2ed496d0009d92d44a82af2ce8ae">AND</a>(lhs,rhs);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="ttc" id="classSVF_1_1CondManager_html_aedda2ed496d0009d92d44a82af2ce8ae"><div class="ttname"><a href="classSVF_1_1CondManager.html#aedda2ed496d0009d92d44a82af2ce8ae">SVF::CondManager::AND</a></div><div class="ttdeci">virtual CondExpr * AND(CondExpr *lhs, CondExpr *rhs)=0</div><div class="ttdoc">Operations on conditions. </div></div>
|
|
790
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
792
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00289">PathCondAllocator.h:289</a></div></div>
|
|
791
793
|
</div><!-- fragment -->
|
|
792
794
|
</div>
|
|
793
795
|
</div>
|
|
@@ -817,7 +819,7 @@ Private Attributes</h2></td></tr>
|
|
|
817
819
|
|
|
818
820
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00091">91</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
819
821
|
<div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#aecb97f6eb6ba2943b2eaa7a8212a9ba6">NEG</a>(cond);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="ttc" id="classSVF_1_1CondManager_html_aecb97f6eb6ba2943b2eaa7a8212a9ba6"><div class="ttname"><a href="classSVF_1_1CondManager.html#aecb97f6eb6ba2943b2eaa7a8212a9ba6">SVF::CondManager::NEG</a></div><div class="ttdeci">virtual CondExpr * NEG(CondExpr *lhs)=0</div></div>
|
|
820
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
822
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00289">PathCondAllocator.h:289</a></div></div>
|
|
821
823
|
</div><!-- fragment -->
|
|
822
824
|
</div>
|
|
823
825
|
</div>
|
|
@@ -857,7 +859,7 @@ Private Attributes</h2></td></tr>
|
|
|
857
859
|
|
|
858
860
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00087">87</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
859
861
|
<div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#aa6dcd9cb78deef05b6c4d4e9b6b0a16b">OR</a>(lhs,rhs);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="ttc" id="classSVF_1_1CondManager_html_aa6dcd9cb78deef05b6c4d4e9b6b0a16b"><div class="ttname"><a href="classSVF_1_1CondManager.html#aa6dcd9cb78deef05b6c4d4e9b6b0a16b">SVF::CondManager::OR</a></div><div class="ttdeci">virtual CondExpr * OR(CondExpr *lhs, CondExpr *rhs)=0</div></div>
|
|
860
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
862
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00289">PathCondAllocator.h:289</a></div></div>
|
|
861
863
|
</div><!-- fragment -->
|
|
862
864
|
</div>
|
|
863
865
|
</div>
|
|
@@ -886,8 +888,8 @@ Private Attributes</h2></td></tr>
|
|
|
886
888
|
|
|
887
889
|
<p>Release memory. </p>
|
|
888
890
|
|
|
889
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#
|
|
890
|
-
<div class="fragment"><div class="line"><a name="
|
|
891
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00279">279</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
892
|
+
<div class="fragment"><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  }</div></div><!-- fragment -->
|
|
891
893
|
</div>
|
|
892
894
|
</div>
|
|
893
895
|
<a id="aae773a674331bb80cc589835e0b16e4e"></a>
|
|
@@ -916,7 +918,7 @@ Private Attributes</h2></td></tr>
|
|
|
916
918
|
|
|
917
919
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00111">111</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
918
920
|
<div class="fragment"><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a19c63783d5d20f363be3641941263a78">dumpStr</a>(cond);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="ttc" id="classSVF_1_1CondManager_html_a19c63783d5d20f363be3641941263a78"><div class="ttname"><a href="classSVF_1_1CondManager.html#a19c63783d5d20f363be3641941263a78">SVF::CondManager::dumpStr</a></div><div class="ttdeci">virtual std::string dumpStr(const CondExpr *e) const =0</div><div class="ttdoc">Return string format of this expression. </div></div>
|
|
919
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
921
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00289">PathCondAllocator.h:289</a></div></div>
|
|
920
922
|
</div><!-- fragment -->
|
|
921
923
|
</div>
|
|
922
924
|
</div>
|
|
@@ -959,15 +961,17 @@ Private Attributes</h2></td></tr>
|
|
|
959
961
|
<p>(1) Evaluate a branch when it reaches a program exit (2) Evaluate a branch when it is loop exit branch (3) Evaluate a branch when it is a test null like condition </p>
|
|
960
962
|
|
|
961
963
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00294">294</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
|
|
962
|
-
<div class="fragment"><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">getBBSuccessorNum</a>(bb) == 1)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(bb->getTerminator()->getSuccessor(0) == succ && <span class="stringliteral">"not the unique successor?"</span>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">if</span>(<
|
|
963
|
-
<div class="ttc" id="
|
|
964
|
+
<div class="fragment"><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">getBBSuccessorNum</a>(bb) == 1)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(bb->getTerminator()->getSuccessor(0) == succ && <span class="stringliteral">"not the unique successor?"</span>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *icfgNode = <a class="code" href="classSVF_1_1PathCondAllocator.html#a80a607028f3a05d478ffbd6fcc0bbc2a">getICFG</a>()->getICFGNode(bb->getTerminator())) {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &svfStmt: icfgNode->getSVFStmts()) {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1BranchStmt.html">BranchStmt</a> *branchStmt = SVFUtil::dyn_cast<BranchStmt>(svfStmt)) {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">if</span>(branchStmt->getNumSuccessors() == 2) {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ1 = branchStmt->getSuccessor(0)->getBB();</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ2 = branchStmt->getSuccessor(1)->getBB();</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>((succ1 == succ || succ2 == succ) && <span class="stringliteral">"not a successor??"</span>);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* evalLoopExit = <a class="code" href="classSVF_1_1PathCondAllocator.html#a623e6ec670e5f6aeedee26b146ad5a0d">evaluateLoopExitBranch</a>(bb,succ);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">if</span>(evalLoopExit)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">return</span> evalLoopExit;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* evalProgExit = <a class="code" href="classSVF_1_1PathCondAllocator.html#a79d6bbd55a134c856f3e80a898af23ee">evaluateProgExit</a>(branchStmt,succ);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">if</span>(evalProgExit)</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">return</span> evalProgExit;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* evalTestNullLike = <a class="code" href="classSVF_1_1PathCondAllocator.html#af595a4b93bd350f489bfe8635d86cfcc">evaluateTestNullLikeExpr</a>(branchStmt,succ);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">if</span>(evalTestNullLike)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">return</span> evalTestNullLike;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  }</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  }</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4d00c3306b92e59568b54a6a72afdb74">getBranchCond</a>(bb, succ);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a79d6bbd55a134c856f3e80a898af23ee"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a79d6bbd55a134c856f3e80a898af23ee">SVF::PathCondAllocator::evaluateProgExit</a></div><div class="ttdeci">Condition * evaluateProgExit(const BranchStmt *branchStmt, const BasicBlock *succ)</div><div class="ttdoc">Return condition when there is a branch calls program exit. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00210">PathCondAllocator.cpp:210</a></div></div>
|
|
965
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4d00c3306b92e59568b54a6a72afdb74"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4d00c3306b92e59568b54a6a72afdb74">SVF::PathCondAllocator::getBranchCond</a></div><div class="ttdeci">Condition * getBranchCond(const BasicBlock *bb, const BasicBlock *succ) const</div><div class="ttdoc">Get branch condition. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00137">PathCondAllocator.cpp:137</a></div></div>
|
|
964
966
|
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
|
|
965
967
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
966
968
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00095">PathCondAllocator.h:95</a></div></div>
|
|
967
969
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a623e6ec670e5f6aeedee26b146ad5a0d"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a623e6ec670e5f6aeedee26b146ad5a0d">SVF::PathCondAllocator::evaluateLoopExitBranch</a></div><div class="ttdeci">Condition * evaluateLoopExitBranch(const BasicBlock *bb, const BasicBlock *succ)</div><div class="ttdoc">Evaluate loop exit branch. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00254">PathCondAllocator.cpp:254</a></div></div>
|
|
968
|
-
<div class="ttc" id="
|
|
969
|
-
<div class="ttc" id="
|
|
970
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a80a607028f3a05d478ffbd6fcc0bbc2a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a80a607028f3a05d478ffbd6fcc0bbc2a">SVF::PathCondAllocator::getICFG</a></div><div class="ttdeci">ICFG * getICFG() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00205">PathCondAllocator.h:205</a></div></div>
|
|
971
|
+
<div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
|
|
972
|
+
<div class="ttc" id="classSVF_1_1BranchStmt_html"><div class="ttname"><a href="classSVF_1_1BranchStmt.html">SVF::BranchStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00921">SVFStatements.h:921</a></div></div>
|
|
970
973
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aade2bc55c3882a6cacc3c4a891a1c4a3"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">SVF::PathCondAllocator::Condition</a></div><div class="ttdeci">CondExpr Condition</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00052">PathCondAllocator.h:52</a></div></div>
|
|
974
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_af595a4b93bd350f489bfe8635d86cfcc"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#af595a4b93bd350f489bfe8635d86cfcc">SVF::PathCondAllocator::evaluateTestNullLikeExpr</a></div><div class="ttdeci">Condition * evaluateTestNullLikeExpr(const BranchStmt *branchStmt, const BasicBlock *succ)</div><div class="ttdoc">Return branch condition after evaluating test null like expression. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00180">PathCondAllocator.cpp:180</a></div></div>
|
|
971
975
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a737684498679dc16a26f2411d88f36aa"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">SVF::SVFUtil::getBBSuccessorNum</a></div><div class="ttdeci">u32_t getBBSuccessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB&#39;s successors. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00349">LLVMUtil.cpp:349</a></div></div>
|
|
972
976
|
</div><!-- fragment -->
|
|
973
977
|
</div>
|
|
@@ -1018,17 +1022,17 @@ Private Attributes</h2></td></tr>
|
|
|
1018
1022
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1295e2c2c0a9c1a3744ba3927b95363e"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e">SVF::PathCondAllocator::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *fun)</div><div class="ttdoc">Get Postdominators. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00151">PathCondAllocator.h:151</a></div></div>
|
|
1019
1023
|
<div class="ttc" id="namespaceSVF_html_a02be4933b76c2baa7fdbe8b290e12bb3"><div class="ttname"><a href="namespaceSVF.html#a02be4933b76c2baa7fdbe8b290e12bb3">SVF::SmallBBVector</a></div><div class="ttdeci">llvm::SmallVector< llvm::BasicBlock *, 8 > SmallBBVector</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00115">SVFBasicTypes.h:115</a></div></div>
|
|
1020
1024
|
<div class="ttc" id="namespaceSVF_html_a77e088bfe47c0b0ddcbbe0693dec6fe5"><div class="ttname"><a href="namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5">SVF::LoopInfo</a></div><div class="ttdeci">llvm::LoopInfo LoopInfo</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00085">BasicTypes.h:85</a></div></div>
|
|
1021
|
-
<div class="ttc" id="namespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1025
|
+
<div class="ttc" id="namespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
|
|
1022
1026
|
<div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00101">SVFBasicTypes.h:101</a></div></div>
|
|
1023
1027
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
|
|
1024
1028
|
<div class="ttc" id="namespaceSVF_html_abf85e29310b2e4df8925d00a5c081314"><div class="ttname"><a href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">SVF::Loop</a></div><div class="ttdeci">llvm::Loop Loop</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00084">BasicTypes.h:84</a></div></div>
|
|
1025
1029
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a10ddc3b02b2baad2edd72fe429113b0f"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a10ddc3b02b2baad2edd72fe429113b0f">SVF::PathCondAllocator::getLoopInfo</a></div><div class="ttdeci">LoopInfo * getLoopInfo(const Function *f)</div><div class="ttdoc">Get LoopInfo. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00156">PathCondAllocator.h:156</a></div></div>
|
|
1026
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a39c0cc9dec89b0b52bf9f1026da942e1"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a39c0cc9dec89b0b52bf9f1026da942e1">SVF::PathCondAllocator::isBBCallsProgExit</a></div><div class="ttdeci">bool isBBCallsProgExit(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#
|
|
1030
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a39c0cc9dec89b0b52bf9f1026da942e1"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a39c0cc9dec89b0b52bf9f1026da942e1">SVF::PathCondAllocator::isBBCallsProgExit</a></div><div class="ttdeci">bool isBBCallsProgExit(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00416">PathCondAllocator.cpp:416</a></div></div>
|
|
1027
1031
|
</div><!-- fragment -->
|
|
1028
1032
|
</div>
|
|
1029
1033
|
</div>
|
|
1030
|
-
<a id="
|
|
1031
|
-
<h2 class="memtitle"><span class="permalink"><a href="#
|
|
1034
|
+
<a id="a79d6bbd55a134c856f3e80a898af23ee"></a>
|
|
1035
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a79d6bbd55a134c856f3e80a898af23ee">◆ </a></span>evaluateProgExit()</h2>
|
|
1032
1036
|
|
|
1033
1037
|
<div class="memitem">
|
|
1034
1038
|
<div class="memproto">
|
|
@@ -1039,8 +1043,8 @@ Private Attributes</h2></td></tr>
|
|
|
1039
1043
|
<tr>
|
|
1040
1044
|
<td class="memname"><a class="el" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">PathCondAllocator::Condition</a> * PathCondAllocator::evaluateProgExit </td>
|
|
1041
1045
|
<td>(</td>
|
|
1042
|
-
<td class="paramtype">const <a class="el" href="
|
|
1043
|
-
<td class="paramname"><em>
|
|
1046
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1BranchStmt.html">BranchStmt</a> * </td>
|
|
1047
|
+
<td class="paramname"><em>branchStmt</em>, </td>
|
|
1044
1048
|
</tr>
|
|
1045
1049
|
<tr>
|
|
1046
1050
|
<td class="paramkey"></td>
|
|
@@ -1068,15 +1072,17 @@ Private Attributes</h2></td></tr>
|
|
|
1068
1072
|
<p>no branch call program exit </p>
|
|
1069
1073
|
|
|
1070
1074
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00210">210</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
|
|
1071
|
-
<div class="fragment"><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a
|
|
1075
|
+
<div class="fragment"><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ1 = branchStmt-><a class="code" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">getSuccessor</a>(0)-><a class="code" href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">getBB</a>();</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ2 = branchStmt-><a class="code" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">getSuccessor</a>(1)-><a class="code" href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">getBB</a>();</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordtype">bool</span> branch1 = <a class="code" href="classSVF_1_1PathCondAllocator.html#a39c0cc9dec89b0b52bf9f1026da942e1">isBBCallsProgExit</a>(succ1);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordtype">bool</span> branch2 = <a class="code" href="classSVF_1_1PathCondAllocator.html#a39c0cc9dec89b0b52bf9f1026da942e1">isBBCallsProgExit</a>(succ2);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">if</span>(branch1 && !branch2)</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span>(succ1 == succ)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!branch1 && branch2)</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>(succ2 == succ)</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="comment">// two branches both call program exit</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(branch1 && branch2)</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> }</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
|
|
1072
1076
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00095">PathCondAllocator.h:95</a></div></div>
|
|
1073
1077
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0d059c9adce2c998ddf2489376beb8e2"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">SVF::PathCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition * getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00099">PathCondAllocator.h:99</a></div></div>
|
|
1074
|
-
<div class="ttc" id="
|
|
1078
|
+
<div class="ttc" id="classSVF_1_1BranchStmt_html_a7d9a6ebb2d95942c453864b5327b1ae8"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">SVF::BranchStmt::getSuccessor</a></div><div class="ttdeci">const ICFGNode * getSuccessor(u32_t i) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00987">SVFStatements.h:987</a></div></div>
|
|
1079
|
+
<div class="ttc" id="classSVF_1_1ICFGNode_html_ac1689701c75e04481e2ae2f4482551c4"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">SVF::ICFGNode::getBB</a></div><div class="ttdeci">virtual const BasicBlock * getBB() const</div><div class="ttdoc">Return the function of this ICFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00086">ICFGNode.h:86</a></div></div>
|
|
1080
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a39c0cc9dec89b0b52bf9f1026da942e1"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a39c0cc9dec89b0b52bf9f1026da942e1">SVF::PathCondAllocator::isBBCallsProgExit</a></div><div class="ttdeci">bool isBBCallsProgExit(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00416">PathCondAllocator.cpp:416</a></div></div>
|
|
1075
1081
|
</div><!-- fragment -->
|
|
1076
1082
|
</div>
|
|
1077
1083
|
</div>
|
|
1078
|
-
<a id="
|
|
1079
|
-
<h2 class="memtitle"><span class="permalink"><a href="#
|
|
1084
|
+
<a id="af595a4b93bd350f489bfe8635d86cfcc"></a>
|
|
1085
|
+
<h2 class="memtitle"><span class="permalink"><a href="#af595a4b93bd350f489bfe8635d86cfcc">◆ </a></span>evaluateTestNullLikeExpr()</h2>
|
|
1080
1086
|
|
|
1081
1087
|
<div class="memitem">
|
|
1082
1088
|
<div class="memproto">
|
|
@@ -1087,8 +1093,8 @@ Private Attributes</h2></td></tr>
|
|
|
1087
1093
|
<tr>
|
|
1088
1094
|
<td class="memname"><a class="el" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">PathCondAllocator::Condition</a> * PathCondAllocator::evaluateTestNullLikeExpr </td>
|
|
1089
1095
|
<td>(</td>
|
|
1090
|
-
<td class="paramtype">const <a class="el" href="
|
|
1091
|
-
<td class="paramname"><em>
|
|
1096
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1BranchStmt.html">BranchStmt</a> * </td>
|
|
1097
|
+
<td class="paramname"><em>branchStmt</em>, </td>
|
|
1092
1098
|
</tr>
|
|
1093
1099
|
<tr>
|
|
1094
1100
|
<td class="paramkey"></td>
|
|
@@ -1113,11 +1119,15 @@ Private Attributes</h2></td></tr>
|
|
|
1113
1119
|
<p>Evaluate null like expression for source-sink related bug detection in SABER </p>
|
|
1114
1120
|
|
|
1115
1121
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00180">180</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
|
|
1116
|
-
<div class="fragment"><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ1 =
|
|
1122
|
+
<div class="fragment"><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ1 = branchStmt-><a class="code" href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">getSuccessor</a>(0)-><a class="code" href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">getBB</a>();</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PathCondAllocator.html#af7959f60bca343fb5755cfa0c5d56cb1">isTestNullExpr</a>(branchStmt-><a class="code" href="classSVF_1_1BranchStmt.html#a915384027ae53e99311f05a08edf99f0">getCondition</a>()-><a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()))</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">if</span>(succ1 == succ)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PathCondAllocator.html#a03ee22dd8af2d9ca658e2437eeae0a10">isTestNotNullExpr</a>(branchStmt-><a class="code" href="classSVF_1_1BranchStmt.html#a915384027ae53e99311f05a08edf99f0">getCondition</a>()-><a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()))</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">// succ is then branch</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">if</span>(succ1 == succ)</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="comment">// succ is else branch</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> }</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
|
|
1117
1123
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00095">PathCondAllocator.h:95</a></div></div>
|
|
1118
1124
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0d059c9adce2c998ddf2489376beb8e2"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">SVF::PathCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition * getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00099">PathCondAllocator.h:99</a></div></div>
|
|
1119
|
-
<div class="ttc" id="
|
|
1120
|
-
<div class="ttc" id="
|
|
1125
|
+
<div class="ttc" id="classSVF_1_1BranchStmt_html_a7d9a6ebb2d95942c453864b5327b1ae8"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a7d9a6ebb2d95942c453864b5327b1ae8">SVF::BranchStmt::getSuccessor</a></div><div class="ttdeci">const ICFGNode * getSuccessor(u32_t i) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00987">SVFStatements.h:987</a></div></div>
|
|
1126
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_af7959f60bca343fb5755cfa0c5d56cb1"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#af7959f60bca343fb5755cfa0c5d56cb1">SVF::PathCondAllocator::isTestNullExpr</a></div><div class="ttdeci">bool isTestNullExpr(const Value *test) const</div><div class="ttdoc">Return true if this is a test null expression. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00340">PathCondAllocator.cpp:340</a></div></div>
|
|
1127
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a03ee22dd8af2d9ca658e2437eeae0a10"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a03ee22dd8af2d9ca658e2437eeae0a10">SVF::PathCondAllocator::isTestNotNullExpr</a></div><div class="ttdeci">bool isTestNotNullExpr(const Value *test) const</div><div class="ttdoc">Return true if this is a test not null expression. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00349">PathCondAllocator.cpp:349</a></div></div>
|
|
1128
|
+
<div class="ttc" id="classSVF_1_1ICFGNode_html_ac1689701c75e04481e2ae2f4482551c4"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#ac1689701c75e04481e2ae2f4482551c4">SVF::ICFGNode::getBB</a></div><div class="ttdeci">virtual const BasicBlock * getBB() const</div><div class="ttdoc">Return the function of this ICFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00086">ICFGNode.h:86</a></div></div>
|
|
1129
|
+
<div class="ttc" id="classSVF_1_1SVFVar_html_afaa33caa8d2a306f6741d9d066243e40"><div class="ttname"><a href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">SVF::SVFVar::getValue</a></div><div class="ttdeci">const Value * getValue() const</div><div class="ttdoc">Get/has methods of the components. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00096">SVFVariables.h:96</a></div></div>
|
|
1130
|
+
<div class="ttc" id="classSVF_1_1BranchStmt_html_a915384027ae53e99311f05a08edf99f0"><div class="ttname"><a href="classSVF_1_1BranchStmt.html#a915384027ae53e99311f05a08edf99f0">SVF::BranchStmt::getCondition</a></div><div class="ttdeci">const SVFVar * getCondition() const</div><div class="ttdoc">Return the condition. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00283">SVFStatements.cpp:283</a></div></div>
|
|
1121
1131
|
</div><!-- fragment -->
|
|
1122
1132
|
</div>
|
|
1123
1133
|
</div>
|
|
@@ -1149,7 +1159,7 @@ Private Attributes</h2></td></tr>
|
|
|
1149
1159
|
|
|
1150
1160
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00104">104</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
1151
1161
|
<div class="fragment"><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> elems;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a66ed79e36f8c09ee3ae58fb9b4a6f3e3">extractSubConds</a>(cond,elems);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> elems;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="ttc" id="classSVF_1_1CondManager_html_a66ed79e36f8c09ee3ae58fb9b4a6f3e3"><div class="ttname"><a href="classSVF_1_1CondManager.html#a66ed79e36f8c09ee3ae58fb9b4a6f3e3">SVF::CondManager::extractSubConds</a></div><div class="ttdeci">virtual void extractSubConds(const CondExpr *cond, NodeBS &support) const =0</div><div class="ttdoc">Extract sub conditions of this expression. </div></div>
|
|
1152
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
1162
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00289">PathCondAllocator.h:289</a></div></div>
|
|
1153
1163
|
<div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00092">SVFBasicTypes.h:92</a></div></div>
|
|
1154
1164
|
</div><!-- fragment -->
|
|
1155
1165
|
</div>
|
|
@@ -1196,7 +1206,7 @@ Private Attributes</h2></td></tr>
|
|
|
1196
1206
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00095">PathCondAllocator.h:95</a></div></div>
|
|
1197
1207
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a1631bbbed23fbfe2204779ecc0dc2769"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a1631bbbed23fbfe2204779ecc0dc2769">SVF::SVFUtil::getBBSuccessorPos</a></div><div class="ttdeci">u32_t getBBSuccessorPos(const BasicBlock *BB, const BasicBlock *Succ)</div><div class="ttdoc">Get basic block successor position. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00317">LLVMUtil.cpp:317</a></div></div>
|
|
1198
1208
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00081">SVFBasicTypes.h:81</a></div></div>
|
|
1199
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aff611b2797d61155c8c2f9d8ac4030bc"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">SVF::PathCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">map basic block to its successors/predecessors branch conditions </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
1209
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aff611b2797d61155c8c2f9d8ac4030bc"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">SVF::PathCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">map basic block to its successors/predecessors branch conditions </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00290">PathCondAllocator.h:290</a></div></div>
|
|
1200
1210
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a737684498679dc16a26f2411d88f36aa"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">SVF::SVFUtil::getBBSuccessorNum</a></div><div class="ttdeci">u32_t getBBSuccessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB&#39;s successors. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00349">LLVMUtil.cpp:349</a></div></div>
|
|
1201
1211
|
</div><!-- fragment -->
|
|
1202
1212
|
</div>
|
|
@@ -1225,9 +1235,9 @@ Private Attributes</h2></td></tr>
|
|
|
1225
1235
|
</table>
|
|
1226
1236
|
</div><div class="memdoc">
|
|
1227
1237
|
|
|
1228
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#
|
|
1229
|
-
<div class="fragment"><div class="line"><a name="
|
|
1230
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac3a0aa27f317d7d9214181b599f19f24"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">SVF::PathCondAllocator::bbToCondMap</a></div><div class="ttdeci">BBToCondMap bbToCondMap</div><div class="ttdoc">map a basic block to its path condition starting from root </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
1238
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00265">265</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
1239
|
+
<div class="fragment"><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  BBToCondMap::const_iterator it = <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.find(bb);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">if</span>(it==<a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.end())</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">getFalseCond</a>();</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0d059c9adce2c998ddf2489376beb8e2"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0d059c9adce2c998ddf2489376beb8e2">SVF::PathCondAllocator::getFalseCond</a></div><div class="ttdeci">Condition * getFalseCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00099">PathCondAllocator.h:99</a></div></div>
|
|
1240
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac3a0aa27f317d7d9214181b599f19f24"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">SVF::PathCondAllocator::bbToCondMap</a></div><div class="ttdeci">BBToCondMap bbToCondMap</div><div class="ttdoc">map a basic block to its path condition starting from root </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00285">PathCondAllocator.h:285</a></div></div>
|
|
1231
1241
|
</div><!-- fragment -->
|
|
1232
1242
|
</div>
|
|
1233
1243
|
</div>
|
|
@@ -1258,7 +1268,7 @@ Private Attributes</h2></td></tr>
|
|
|
1258
1268
|
<p>Given an z3 expr id, get its condition. </p>
|
|
1259
1269
|
|
|
1260
1270
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00116">116</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
1261
|
-
<div class="fragment"><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#ad0273f830c9a6791aea55bfbdebf1138">getCond</a>(i);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
1271
|
+
<div class="fragment"><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#ad0273f830c9a6791aea55bfbdebf1138">getCond</a>(i);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00289">PathCondAllocator.h:289</a></div></div>
|
|
1262
1272
|
<div class="ttc" id="classSVF_1_1CondManager_html_ad0273f830c9a6791aea55bfbdebf1138"><div class="ttname"><a href="classSVF_1_1CondManager.html#ad0273f830c9a6791aea55bfbdebf1138">SVF::CondManager::getCond</a></div><div class="ttdeci">virtual CondExpr * getCond(u32_t id) const =0</div><div class="ttdoc">Get condition using condition id (z3 ast id) </div></div>
|
|
1263
1273
|
</div><!-- fragment -->
|
|
1264
1274
|
</div>
|
|
@@ -1291,7 +1301,7 @@ Private Attributes</h2></td></tr>
|
|
|
1291
1301
|
|
|
1292
1302
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00132">132</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
1293
1303
|
<div class="fragment"><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a4fac6a918f1f6d09fe1a4ceac7c19428">getCondInst</a>(cond);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="ttc" id="classSVF_1_1CondManager_html_a4fac6a918f1f6d09fe1a4ceac7c19428"><div class="ttname"><a href="classSVF_1_1CondManager.html#a4fac6a918f1f6d09fe1a4ceac7c19428">SVF::CondManager::getCondInst</a></div><div class="ttdeci">const Instruction * getCondInst(const CondExpr *cond) const</div><div class="ttdoc">Get/Set llvm conditional expression. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00206">Conditions.h:206</a></div></div>
|
|
1294
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
1304
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00289">PathCondAllocator.h:289</a></div></div>
|
|
1295
1305
|
</div><!-- fragment -->
|
|
1296
1306
|
</div>
|
|
1297
1307
|
</div>
|
|
@@ -1320,7 +1330,7 @@ Private Attributes</h2></td></tr>
|
|
|
1320
1330
|
|
|
1321
1331
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00075">75</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
1322
1332
|
<div class="fragment"><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a03d9a0d209505631f6d9e500d9c6bde3">getCondNumber</a>();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="ttc" id="classSVF_1_1CondManager_html_a03d9a0d209505631f6d9e500d9c6bde3"><div class="ttname"><a href="classSVF_1_1CondManager.html#a03d9a0d209505631f6d9e500d9c6bde3">SVF::CondManager::getCondNumber</a></div><div class="ttdeci">virtual u32_t getCondNumber()=0</div><div class="ttdoc">Return the number of condition expressions. </div></div>
|
|
1323
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
1333
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00289">PathCondAllocator.h:289</a></div></div>
|
|
1324
1334
|
</div><!-- fragment -->
|
|
1325
1335
|
</div>
|
|
1326
1336
|
</div>
|
|
@@ -1350,7 +1360,7 @@ Private Attributes</h2></td></tr>
|
|
|
1350
1360
|
<p>Get current value for branch condition evaluation. </p>
|
|
1351
1361
|
|
|
1352
1362
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00182">182</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
1353
|
-
<div class="fragment"><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">curEvalSVFGNode</a>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a165e0a354b7679ce582c15f4a3faf6e0"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">SVF::PathCondAllocator::curEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * curEvalSVFGNode</div><div class="ttdoc">current llvm value to evaluate branch condition when computing guards </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
1363
|
+
<div class="fragment"><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">curEvalSVFGNode</a>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a165e0a354b7679ce582c15f4a3faf6e0"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">SVF::PathCondAllocator::curEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * curEvalSVFGNode</div><div class="ttdoc">current llvm value to evaluate branch condition when computing guards </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00286">PathCondAllocator.h:286</a></div></div>
|
|
1354
1364
|
</div><!-- fragment -->
|
|
1355
1365
|
</div>
|
|
1356
1366
|
</div>
|
|
@@ -1381,7 +1391,7 @@ Private Attributes</h2></td></tr>
|
|
|
1381
1391
|
<p>Get dominators. </p>
|
|
1382
1392
|
|
|
1383
1393
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00146">146</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
1384
|
-
<div class="fragment"><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#afb3864bae4ac95c7d3b731634c1abdab">getDT</a>(fun);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4949fb25fe4cd461de8aec90756b1fea"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">SVF::PathCondAllocator::cfInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder cfInfoBuilder</div><div class="ttdoc">map a function to its loop info </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
1394
|
+
<div class="fragment"><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#afb3864bae4ac95c7d3b731634c1abdab">getDT</a>(fun);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4949fb25fe4cd461de8aec90756b1fea"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">SVF::PathCondAllocator::cfInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder cfInfoBuilder</div><div class="ttdoc">map a function to its loop info </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
|
|
1385
1395
|
<div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_afb3864bae4ac95c7d3b731634c1abdab"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#afb3864bae4ac95c7d3b731634c1abdab">SVF::PTACFInfoBuilder::getDT</a></div><div class="ttdeci">DominatorTree * getDT(const Function *f)</div><div class="ttdoc">Get dominator tree of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00110">DataFlowUtil.cpp:110</a></div></div>
|
|
1386
1396
|
</div><!-- fragment -->
|
|
1387
1397
|
</div>
|
|
@@ -1453,11 +1463,40 @@ Private Attributes</h2></td></tr>
|
|
|
1453
1463
|
</div><div class="memdoc">
|
|
1454
1464
|
|
|
1455
1465
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00099">99</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
1456
|
-
<div class="fragment"><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
1466
|
+
<div class="fragment"><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">getFalseCond</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00289">PathCondAllocator.h:289</a></div></div>
|
|
1457
1467
|
<div class="ttc" id="classSVF_1_1CondManager_html_a39e9d42cb3661d1c686b5163c70eeade"><div class="ttname"><a href="classSVF_1_1CondManager.html#a39e9d42cb3661d1c686b5163c70eeade">SVF::CondManager::getFalseCond</a></div><div class="ttdeci">CondExpr * getFalseCond() const</div><div class="ttdoc">Return the unique false condition. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00177">Conditions.h:177</a></div></div>
|
|
1458
1468
|
</div><!-- fragment -->
|
|
1459
1469
|
</div>
|
|
1460
1470
|
</div>
|
|
1471
|
+
<a id="a80a607028f3a05d478ffbd6fcc0bbc2a"></a>
|
|
1472
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a80a607028f3a05d478ffbd6fcc0bbc2a">◆ </a></span>getICFG()</h2>
|
|
1473
|
+
|
|
1474
|
+
<div class="memitem">
|
|
1475
|
+
<div class="memproto">
|
|
1476
|
+
<table class="mlabels">
|
|
1477
|
+
<tr>
|
|
1478
|
+
<td class="mlabels-left">
|
|
1479
|
+
<table class="memname">
|
|
1480
|
+
<tr>
|
|
1481
|
+
<td class="memname"><a class="el" href="classSVF_1_1ICFG.html">ICFG</a>* SVF::PathCondAllocator::getICFG </td>
|
|
1482
|
+
<td>(</td>
|
|
1483
|
+
<td class="paramname"></td><td>)</td>
|
|
1484
|
+
<td> const</td>
|
|
1485
|
+
</tr>
|
|
1486
|
+
</table>
|
|
1487
|
+
</td>
|
|
1488
|
+
<td class="mlabels-right">
|
|
1489
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
1490
|
+
</tr>
|
|
1491
|
+
</table>
|
|
1492
|
+
</div><div class="memdoc">
|
|
1493
|
+
|
|
1494
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00205">205</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
1495
|
+
<div class="fragment"><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div><div class="ttc" id="classSVF_1_1SVFIR_html_a37cfa2aa4e7b98ef9dc8179f581a2362"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVF::SVFIR::getPAG</a></div><div class="ttdeci">static SVFIR * getPAG(bool buildFromFile=false)</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00106">SVFIR.h:106</a></div></div>
|
|
1496
|
+
<div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
|
|
1497
|
+
</div><!-- fragment -->
|
|
1498
|
+
</div>
|
|
1499
|
+
</div>
|
|
1461
1500
|
<a id="a10ddc3b02b2baad2edd72fe429113b0f"></a>
|
|
1462
1501
|
<h2 class="memtitle"><span class="permalink"><a href="#a10ddc3b02b2baad2edd72fe429113b0f">◆ </a></span>getLoopInfo()</h2>
|
|
1463
1502
|
|
|
@@ -1486,7 +1525,7 @@ Private Attributes</h2></td></tr>
|
|
|
1486
1525
|
|
|
1487
1526
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00156">156</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
1488
1527
|
<div class="fragment"><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">getLoopInfo</a>(f);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div><div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_a418e6009760a7c9a048d2ffd9cd29956"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">SVF::PTACFInfoBuilder::getLoopInfo</a></div><div class="ttdeci">LoopInfo * getLoopInfo(const Function *f)</div><div class="ttdoc">Get loop info of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00074">DataFlowUtil.cpp:74</a></div></div>
|
|
1489
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4949fb25fe4cd461de8aec90756b1fea"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">SVF::PathCondAllocator::cfInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder cfInfoBuilder</div><div class="ttdoc">map a function to its loop info </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
1528
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4949fb25fe4cd461de8aec90756b1fea"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">SVF::PathCondAllocator::cfInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder cfInfoBuilder</div><div class="ttdoc">map a function to its loop info </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
|
|
1490
1529
|
</div><!-- fragment -->
|
|
1491
1530
|
</div>
|
|
1492
1531
|
</div>
|
|
@@ -1516,7 +1555,7 @@ Private Attributes</h2></td></tr>
|
|
|
1516
1555
|
<p>Statistics. </p>
|
|
1517
1556
|
|
|
1518
1557
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00071">71</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
1519
|
-
<div class="fragment"><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a9d1f2e6ef92ee120c7f26d98b1389b04">getMemUsage</a>();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
1558
|
+
<div class="fragment"><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a9d1f2e6ef92ee120c7f26d98b1389b04">getMemUsage</a>();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00289">PathCondAllocator.h:289</a></div></div>
|
|
1520
1559
|
<div class="ttc" id="classSVF_1_1CondManager_html_a9d1f2e6ef92ee120c7f26d98b1389b04"><div class="ttname"><a href="classSVF_1_1CondManager.html#a9d1f2e6ef92ee120c7f26d98b1389b04">SVF::CondManager::getMemUsage</a></div><div class="ttdeci">virtual std::string getMemUsage()=0</div><div class="ttdoc">Return memory usage for this condition manager. </div></div>
|
|
1521
1560
|
</div><!-- fragment -->
|
|
1522
1561
|
</div>
|
|
@@ -1564,14 +1603,14 @@ Private Attributes</h2></td></tr>
|
|
|
1564
1603
|
<p>Get complement phi condition e.g., B0: dstBB; B1:incomingBB; B2:complementBB Assume B0 (phi node) is the successor of both B1 and B2. If B1 dominates B2, and B0 not dominate B2 then condition from B1–>B0 = neg(B1–>B2)^(B1–>B0) </p>
|
|
1565
1604
|
<p>avoid both BB0 and BB1 dominate BB2 (e.g., while loop), then BB2 is not necessaryly a complement BB </p>
|
|
1566
1605
|
|
|
1567
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#
|
|
1568
|
-
<div class="fragment"><div class="line"><a name="
|
|
1606
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00438">438</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
|
|
1607
|
+
<div class="fragment"><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(BB1 && BB2 && <span class="stringliteral">"expect nullptr BB here!"</span>);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> </div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* dt = <a class="code" href="classSVF_1_1PathCondAllocator.html#a496a23bc37dfdea32c536e9ebe9a4b88">getDT</a>(BB1->getParent());</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">if</span>(dt->dominates(BB1,BB2) && !dt->dominates(BB0,BB2))</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  {</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* cond = <a class="code" href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">ComputeIntraVFGGuard</a>(BB1,BB2);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ac1ed60a8f59a55811c97c83def3bb739">condNeg</a>(cond);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  }</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> </div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">getTrueCond</a>();</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1569
1608
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1a6bde0db54c91fba7e6bac0acff664a"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1a6bde0db54c91fba7e6bac0acff664a">SVF::PathCondAllocator::getTrueCond</a></div><div class="ttdeci">Condition * getTrueCond() const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00095">PathCondAllocator.h:95</a></div></div>
|
|
1570
1609
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a496a23bc37dfdea32c536e9ebe9a4b88"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a496a23bc37dfdea32c536e9ebe9a4b88">SVF::PathCondAllocator::getDT</a></div><div class="ttdeci">DominatorTree * getDT(const Function *fun)</div><div class="ttdoc">Get dominators. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00146">PathCondAllocator.h:146</a></div></div>
|
|
1571
|
-
<div class="ttc" id="namespaceSVF_html_aecbb42b8e9d17fa0189c50dda9fd5fdd"><div class="ttname"><a href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">SVF::DominatorTree</a></div><div class="ttdeci">llvm::DominatorTree DominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1610
|
+
<div class="ttc" id="namespaceSVF_html_aecbb42b8e9d17fa0189c50dda9fd5fdd"><div class="ttname"><a href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">SVF::DominatorTree</a></div><div class="ttdeci">llvm::DominatorTree DominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00143">BasicTypes.h:143</a></div></div>
|
|
1572
1611
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac1ed60a8f59a55811c97c83def3bb739"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac1ed60a8f59a55811c97c83def3bb739">SVF::PathCondAllocator::condNeg</a></div><div class="ttdeci">Condition * condNeg(Condition *cond)</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00091">PathCondAllocator.h:91</a></div></div>
|
|
1573
1612
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aade2bc55c3882a6cacc3c4a891a1c4a3"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">SVF::PathCondAllocator::Condition</a></div><div class="ttdeci">CondExpr Condition</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00052">PathCondAllocator.h:52</a></div></div>
|
|
1574
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5ab573cce84584c44778611ba6f4d99c"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">SVF::PathCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition * ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks) </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#
|
|
1613
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a5ab573cce84584c44778611ba6f4d99c"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a5ab573cce84584c44778611ba6f4d99c">SVF::PathCondAllocator::ComputeIntraVFGGuard</a></div><div class="ttdeci">virtual Condition * ComputeIntraVFGGuard(const BasicBlock *src, const BasicBlock *dst)</div><div class="ttdoc">Guard Computation for a value-flow (between two basic blocks) </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00486">PathCondAllocator.cpp:486</a></div></div>
|
|
1575
1614
|
</div><!-- fragment -->
|
|
1576
1615
|
</div>
|
|
1577
1616
|
</div>
|
|
@@ -1603,7 +1642,7 @@ Private Attributes</h2></td></tr>
|
|
|
1603
1642
|
|
|
1604
1643
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00151">151</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
1605
1644
|
<div class="fragment"><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">cfInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a00e3339dab62325354e8ecd8251da0f1">getPostDT</a>(fun);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_a00e3339dab62325354e8ecd8251da0f1"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#a00e3339dab62325354e8ecd8251da0f1">SVF::PTACFInfoBuilder::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *f)</div><div class="ttdoc">Get post dominator tree of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00091">DataFlowUtil.cpp:91</a></div></div>
|
|
1606
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4949fb25fe4cd461de8aec90756b1fea"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">SVF::PathCondAllocator::cfInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder cfInfoBuilder</div><div class="ttdoc">map a function to its loop info </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
1645
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a4949fb25fe4cd461de8aec90756b1fea"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a4949fb25fe4cd461de8aec90756b1fea">SVF::PathCondAllocator::cfInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder cfInfoBuilder</div><div class="ttdoc">map a function to its loop info </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00283">PathCondAllocator.h:283</a></div></div>
|
|
1607
1646
|
</div><!-- fragment -->
|
|
1608
1647
|
</div>
|
|
1609
1648
|
</div>
|
|
@@ -1632,7 +1671,7 @@ Private Attributes</h2></td></tr>
|
|
|
1632
1671
|
|
|
1633
1672
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00095">95</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
1634
1673
|
<div class="fragment"><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">getTrueCond</a>();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="ttc" id="classSVF_1_1CondManager_html_ac74f182ef249a7c892ba9c630f889ddc"><div class="ttname"><a href="classSVF_1_1CondManager.html#ac74f182ef249a7c892ba9c630f889ddc">SVF::CondManager::getTrueCond</a></div><div class="ttdeci">CondExpr * getTrueCond() const</div><div class="ttdoc">Return the unique true condition. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00172">Conditions.h:172</a></div></div>
|
|
1635
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
1674
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00289">PathCondAllocator.h:289</a></div></div>
|
|
1636
1675
|
</div><!-- fragment -->
|
|
1637
1676
|
</div>
|
|
1638
1677
|
</div>
|
|
@@ -1663,7 +1702,7 @@ Private Attributes</h2></td></tr>
|
|
|
1663
1702
|
<p>whether condition is satisfiable for all possible boolean guards </p>
|
|
1664
1703
|
|
|
1665
1704
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00197">197</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
1666
|
-
<div class="fragment"><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a6151817a6f671fa1e7814e74f7ce2e51">isAllPathReachable</a>(condition);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
1705
|
+
<div class="fragment"><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a6151817a6f671fa1e7814e74f7ce2e51">isAllPathReachable</a>(condition);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00289">PathCondAllocator.h:289</a></div></div>
|
|
1667
1706
|
<div class="ttc" id="classSVF_1_1CondManager_html_a6151817a6f671fa1e7814e74f7ce2e51"><div class="ttname"><a href="classSVF_1_1CondManager.html#a6151817a6f671fa1e7814e74f7ce2e51">SVF::CondManager::isAllPathReachable</a></div><div class="ttdeci">bool isAllPathReachable(const CondExpr *e)</div><div class="ttdoc">Whether All Paths are reachable. </div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8cpp_source.html#l00058">Conditions.cpp:58</a></div></div>
|
|
1668
1707
|
</div><!-- fragment -->
|
|
1669
1708
|
</div>
|
|
@@ -1693,10 +1732,10 @@ Private Attributes</h2></td></tr>
|
|
|
1693
1732
|
</div><div class="memdoc">
|
|
1694
1733
|
<p>Whether this basic block contains program exit function call </p>
|
|
1695
1734
|
|
|
1696
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#
|
|
1697
|
-
<div class="fragment"><div class="line"><a name="
|
|
1698
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ad35f1bdb406a85c5bfdcbbc15642853b"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b">SVF::PathCondAllocator::funToExitBBsMap</a></div><div class="ttdeci">FunToExitBBsMap funToExitBBsMap</div><div class="ttdoc">map a function to all its basic blocks calling program exit </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
1699
|
-
<div class="ttc" id="namespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1735
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00416">416</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
|
|
1736
|
+
<div class="fragment"><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = bb->getParent();</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  FunToExitBBsMap::const_iterator it = <a class="code" href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b">funToExitBBsMap</a>.find(fun);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b">funToExitBBsMap</a>.end())</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <a class="code" href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>* pdt = <a class="code" href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e">getPostDT</a>(fun);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span>& bit : it->second)</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">if</span>(pdt->dominates(bit,bb))</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  }</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a1295e2c2c0a9c1a3744ba3927b95363e"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a1295e2c2c0a9c1a3744ba3927b95363e">SVF::PathCondAllocator::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *fun)</div><div class="ttdoc">Get Postdominators. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00151">PathCondAllocator.h:151</a></div></div>
|
|
1737
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ad35f1bdb406a85c5bfdcbbc15642853b"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ad35f1bdb406a85c5bfdcbbc15642853b">SVF::PathCondAllocator::funToExitBBsMap</a></div><div class="ttdeci">FunToExitBBsMap funToExitBBsMap</div><div class="ttdoc">map a function to all its basic blocks calling program exit </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00284">PathCondAllocator.h:284</a></div></div>
|
|
1738
|
+
<div class="ttc" id="namespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
|
|
1700
1739
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
|
|
1701
1740
|
</div><!-- fragment -->
|
|
1702
1741
|
</div>
|
|
@@ -1728,8 +1767,8 @@ Private Attributes</h2></td></tr>
|
|
|
1728
1767
|
<p>Evaluate test null/not null like expressions. </p>
|
|
1729
1768
|
<p>Return true if the predicate of this compare instruction is equal </p>
|
|
1730
1769
|
|
|
1731
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#
|
|
1732
|
-
<div class="fragment"><div class="line"><a name="
|
|
1770
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00330">330</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
|
|
1771
|
+
<div class="fragment"><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">return</span> (cmp->getPredicate() == CmpInst::ICMP_EQ);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> }</div></div><!-- fragment -->
|
|
1733
1772
|
</div>
|
|
1734
1773
|
</div>
|
|
1735
1774
|
<a id="ad92e8909172d960de8a25f6ff0272261"></a>
|
|
@@ -1768,7 +1807,7 @@ Private Attributes</h2></td></tr>
|
|
|
1768
1807
|
|
|
1769
1808
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00201">201</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
1770
1809
|
<div class="fragment"><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#aa20839631502b975590754e146242175">isEquivalentBranchCond</a>(lhs, rhs);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="ttc" id="classSVF_1_1CondManager_html_aa20839631502b975590754e146242175"><div class="ttname"><a href="classSVF_1_1CondManager.html#aa20839631502b975590754e146242175">SVF::CondManager::isEquivalentBranchCond</a></div><div class="ttdeci">virtual bool isEquivalentBranchCond(const CondExpr *lhs, const CondExpr *rhs)=0</div><div class="ttdoc">Whether lhs and rhs are equivalent branch conditions. </div></div>
|
|
1771
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
1810
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00289">PathCondAllocator.h:289</a></div></div>
|
|
1772
1811
|
</div><!-- fragment -->
|
|
1773
1812
|
</div>
|
|
1774
1813
|
</div>
|
|
@@ -1798,8 +1837,8 @@ Private Attributes</h2></td></tr>
|
|
|
1798
1837
|
|
|
1799
1838
|
<p>Return true if the predicate of this compare instruction is not equal. </p>
|
|
1800
1839
|
|
|
1801
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#
|
|
1802
|
-
<div class="fragment"><div class="line"><a name="
|
|
1840
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00335">335</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
|
|
1841
|
+
<div class="fragment"><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">return</span> (cmp->getPredicate() == CmpInst::ICMP_NE);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> }</div></div><!-- fragment -->
|
|
1803
1842
|
</div>
|
|
1804
1843
|
</div>
|
|
1805
1844
|
<a id="a7182283f15c556e9d0e9fdc6d62efeef"></a>
|
|
@@ -1828,7 +1867,7 @@ Private Attributes</h2></td></tr>
|
|
|
1828
1867
|
|
|
1829
1868
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00141">141</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
1830
1869
|
<div class="fragment"><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a1007afa25f9a95c5d12c58852ef74686">isNegCond</a>(condition);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="ttc" id="classSVF_1_1CondManager_html_a1007afa25f9a95c5d12c58852ef74686"><div class="ttname"><a href="classSVF_1_1CondManager.html#a1007afa25f9a95c5d12c58852ef74686">SVF::CondManager::isNegCond</a></div><div class="ttdeci">virtual bool isNegCond(const CondExpr *cond) const =0</div></div>
|
|
1831
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
1870
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00289">PathCondAllocator.h:289</a></div></div>
|
|
1832
1871
|
</div><!-- fragment -->
|
|
1833
1872
|
</div>
|
|
1834
1873
|
</div>
|
|
@@ -1859,7 +1898,7 @@ Private Attributes</h2></td></tr>
|
|
|
1859
1898
|
<p>whether condition is satisfiable </p>
|
|
1860
1899
|
|
|
1861
1900
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00192">192</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
1862
|
-
<div class="fragment"><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a5ef85ea09500adc006a25c1eb3426831">isSatisfiable</a>(condition);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
1901
|
+
<div class="fragment"><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a5ef85ea09500adc006a25c1eb3426831">isSatisfiable</a>(condition);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00289">PathCondAllocator.h:289</a></div></div>
|
|
1863
1902
|
<div class="ttc" id="classSVF_1_1CondManager_html_a5ef85ea09500adc006a25c1eb3426831"><div class="ttname"><a href="classSVF_1_1CondManager.html#a5ef85ea09500adc006a25c1eb3426831">SVF::CondManager::isSatisfiable</a></div><div class="ttdeci">virtual bool isSatisfiable(const CondExpr *cond)=0</div><div class="ttdoc">Whether the condition is satisfiable. </div></div>
|
|
1864
1903
|
</div><!-- fragment -->
|
|
1865
1904
|
</div>
|
|
@@ -1895,8 +1934,8 @@ Private Attributes</h2></td></tr>
|
|
|
1895
1934
|
<li>br i1 tobool, label if.end, label if.then, !dbg !161 There is an indirect edge 1->2 with value %0 </li>
|
|
1896
1935
|
</ol>
|
|
1897
1936
|
|
|
1898
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#
|
|
1899
|
-
<div class="fragment"><div class="line"><a name="
|
|
1937
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00370">370</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
|
|
1938
|
+
<div class="fragment"><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> </div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *op0 = cmp->getOperand(0);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *op1 = cmp->getOperand(1);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">if</span> (SVFUtil::isa<ConstantPointerNull>(op1)) {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Value *></a> inDirVal;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &it: <a class="code" href="classSVF_1_1PathCondAllocator.html#a0fa615ec0ccc48933b84d09b8e359da7">getCurEvalSVFGNode</a>()->getOutEdges()) {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordflow">if</span> (it->isIndirectVFGEdge()) {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  inDirVal.insert(it->getDstNode()->getValue());</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  }</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">return</span> inDirVal.find(op0) != inDirVal.end();</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantPointerNull>(op0)) {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Value *></a> inDirVal;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &it: <a class="code" href="classSVF_1_1PathCondAllocator.html#a0fa615ec0ccc48933b84d09b8e359da7">getCurEvalSVFGNode</a>()->getOutEdges()) {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordflow">if</span> (it->isIndirectVFGEdge()) {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  inDirVal.insert(it->getDstNode()->getValue());</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">return</span> inDirVal.find(op1) != inDirVal.end();</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> </div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> }</div><div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00101">SVFBasicTypes.h:101</a></div></div>
|
|
1900
1939
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0fa615ec0ccc48933b84d09b8e359da7"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0fa615ec0ccc48933b84d09b8e359da7">SVF::PathCondAllocator::getCurEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * getCurEvalSVFGNode() const</div><div class="ttdoc">Get current value for branch condition evaluation. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00182">PathCondAllocator.h:182</a></div></div>
|
|
1901
1940
|
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
|
|
1902
1941
|
</div><!-- fragment -->
|
|
@@ -1928,10 +1967,10 @@ Private Attributes</h2></td></tr>
|
|
|
1928
1967
|
|
|
1929
1968
|
<p>Return true if this is a test not null expression. </p>
|
|
1930
1969
|
|
|
1931
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#
|
|
1932
|
-
<div class="fragment"><div class="line"><a name="
|
|
1933
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aff24f70f9aa07b9f89c25bedab0e5a71"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aff24f70f9aa07b9f89c25bedab0e5a71">SVF::PathCondAllocator::isNECmp</a></div><div class="ttdeci">bool isNECmp(const CmpInst *cmp) const</div><div class="ttdoc">Return true if the predicate of this compare instruction is not equal. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#
|
|
1934
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ae9c9621d6ff6d527ca81dc5f960387b7"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ae9c9621d6ff6d527ca81dc5f960387b7">SVF::PathCondAllocator::isTestContainsNullAndTheValue</a></div><div class="ttdeci">bool isTestContainsNullAndTheValue(const CmpInst *cmp) const</div><div class="ttdoc">Return true if two values on the predicate are what we want. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#
|
|
1970
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00349">349</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
|
|
1971
|
+
<div class="fragment"><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a02550b1e1110f4cfca868603ce243564">CmpInst</a>* cmp = SVFUtil::dyn_cast<CmpInst>(test))</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ae9c9621d6ff6d527ca81dc5f960387b7">isTestContainsNullAndTheValue</a>(cmp) && <a class="code" href="classSVF_1_1PathCondAllocator.html#aff24f70f9aa07b9f89c25bedab0e5a71">isNECmp</a>(cmp);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a02550b1e1110f4cfca868603ce243564"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a02550b1e1110f4cfca868603ce243564">CmpInst</a></div><div class="ttdeci">llvm::CmpInst CmpInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00039">BasicTypes.h:39</a></div></div>
|
|
1972
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aff24f70f9aa07b9f89c25bedab0e5a71"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aff24f70f9aa07b9f89c25bedab0e5a71">SVF::PathCondAllocator::isNECmp</a></div><div class="ttdeci">bool isNECmp(const CmpInst *cmp) const</div><div class="ttdoc">Return true if the predicate of this compare instruction is not equal. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00335">PathCondAllocator.cpp:335</a></div></div>
|
|
1973
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ae9c9621d6ff6d527ca81dc5f960387b7"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ae9c9621d6ff6d527ca81dc5f960387b7">SVF::PathCondAllocator::isTestContainsNullAndTheValue</a></div><div class="ttdeci">bool isTestContainsNullAndTheValue(const CmpInst *cmp) const</div><div class="ttdoc">Return true if two values on the predicate are what we want. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00370">PathCondAllocator.cpp:370</a></div></div>
|
|
1935
1974
|
</div><!-- fragment -->
|
|
1936
1975
|
</div>
|
|
1937
1976
|
</div>
|
|
@@ -1961,10 +2000,10 @@ Private Attributes</h2></td></tr>
|
|
|
1961
2000
|
|
|
1962
2001
|
<p>Return true if this is a test null expression. </p>
|
|
1963
2002
|
|
|
1964
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#
|
|
1965
|
-
<div class="fragment"><div class="line"><a name="
|
|
1966
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_af93358a02bf4ef8020091532e0c5b5af"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#af93358a02bf4ef8020091532e0c5b5af">SVF::PathCondAllocator::isEQCmp</a></div><div class="ttdeci">bool isEQCmp(const CmpInst *cmp) const</div><div class="ttdoc">Evaluate test null/not null like expressions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#
|
|
1967
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ae9c9621d6ff6d527ca81dc5f960387b7"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ae9c9621d6ff6d527ca81dc5f960387b7">SVF::PathCondAllocator::isTestContainsNullAndTheValue</a></div><div class="ttdeci">bool isTestContainsNullAndTheValue(const CmpInst *cmp) const</div><div class="ttdoc">Return true if two values on the predicate are what we want. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#
|
|
2003
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00340">340</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
|
|
2004
|
+
<div class="fragment"><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a02550b1e1110f4cfca868603ce243564">CmpInst</a>* cmp = SVFUtil::dyn_cast<CmpInst>(test))</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#ae9c9621d6ff6d527ca81dc5f960387b7">isTestContainsNullAndTheValue</a>(cmp) && <a class="code" href="classSVF_1_1PathCondAllocator.html#af93358a02bf4ef8020091532e0c5b5af">isEQCmp</a>(cmp);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> }</div><div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a02550b1e1110f4cfca868603ce243564"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a02550b1e1110f4cfca868603ce243564">CmpInst</a></div><div class="ttdeci">llvm::CmpInst CmpInst</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00039">BasicTypes.h:39</a></div></div>
|
|
2005
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_af93358a02bf4ef8020091532e0c5b5af"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#af93358a02bf4ef8020091532e0c5b5af">SVF::PathCondAllocator::isEQCmp</a></div><div class="ttdeci">bool isEQCmp(const CmpInst *cmp) const</div><div class="ttdoc">Evaluate test null/not null like expressions. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00330">PathCondAllocator.cpp:330</a></div></div>
|
|
2006
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ae9c9621d6ff6d527ca81dc5f960387b7"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ae9c9621d6ff6d527ca81dc5f960387b7">SVF::PathCondAllocator::isTestContainsNullAndTheValue</a></div><div class="ttdeci">bool isTestContainsNullAndTheValue(const CmpInst *cmp) const</div><div class="ttdoc">Return true if two values on the predicate are what we want. </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8cpp_source.html#l00370">PathCondAllocator.cpp:370</a></div></div>
|
|
1968
2007
|
</div><!-- fragment -->
|
|
1969
2008
|
</div>
|
|
1970
2009
|
</div>
|
|
@@ -1996,7 +2035,7 @@ Private Attributes</h2></td></tr>
|
|
|
1996
2035
|
|
|
1997
2036
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00121">121</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
1998
2037
|
<div class="fragment"><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#abd330e858463fed92fb3df6e8529f790">createFreshBranchCond</a>(inst);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="ttc" id="classSVF_1_1CondManager_html_abd330e858463fed92fb3df6e8529f790"><div class="ttname"><a href="classSVF_1_1CondManager.html#abd330e858463fed92fb3df6e8529f790">SVF::CondManager::createFreshBranchCond</a></div><div class="ttdeci">virtual CondExpr * createFreshBranchCond(const Instruction *inst)=0</div><div class="ttdoc">Create a fresh condition to encode each program branch. </div></div>
|
|
1999
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
2038
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00289">PathCondAllocator.h:289</a></div></div>
|
|
2000
2039
|
</div><!-- fragment -->
|
|
2001
2040
|
</div>
|
|
2002
2041
|
</div>
|
|
@@ -2018,10 +2057,10 @@ Private Attributes</h2></td></tr>
|
|
|
2018
2057
|
<p>Print out the path condition information. </p>
|
|
2019
2058
|
<p>Print path conditions </p>
|
|
2020
2059
|
|
|
2021
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#
|
|
2022
|
-
<div class="fragment"><div class="line"><a name="
|
|
2060
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8cpp_source.html#l00542">542</a> of file <a class="el" href="PathCondAllocator_8cpp_source.html">PathCondAllocator.cpp</a>.</p>
|
|
2061
|
+
<div class="fragment"><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> {</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> </div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"print path condition\n"</span>;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> </div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> & bbCond : <a class="code" href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">bbConds</a>)</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = bbCond.first;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span>& cit : bbCond.second)</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i=0;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *succ: successors(bb))</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  {</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keywordflow">if</span> (i == cit.first)</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">Condition</a>* cond = cit.second;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << bb->getName().str() << <span class="stringliteral">"-->"</span> << succ->getName().str() << <span class="stringliteral">":"</span>;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <a class="code" href="classSVF_1_1PathCondAllocator.html#aae773a674331bb80cc589835e0b16e4e">dumpCond</a>(cond) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  }</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  i++;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  }</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  }</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  }</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> }</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
|
|
2023
2062
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00081">SVFBasicTypes.h:81</a></div></div>
|
|
2024
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aff611b2797d61155c8c2f9d8ac4030bc"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">SVF::PathCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">map basic block to its successors/predecessors branch conditions </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
2063
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aff611b2797d61155c8c2f9d8ac4030bc"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">SVF::PathCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">map basic block to its successors/predecessors branch conditions </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00290">PathCondAllocator.h:290</a></div></div>
|
|
2025
2064
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
2026
2065
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aade2bc55c3882a6cacc3c4a891a1c4a3"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aade2bc55c3882a6cacc3c4a891a1c4a3">SVF::PathCondAllocator::Condition</a></div><div class="ttdeci">CondExpr Condition</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00052">PathCondAllocator.h:52</a></div></div>
|
|
2027
2066
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aae773a674331bb80cc589835e0b16e4e"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aae773a674331bb80cc589835e0b16e4e">SVF::PathCondAllocator::dumpCond</a></div><div class="ttdeci">std::string dumpCond(Condition *cond) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00111">PathCondAllocator.h:111</a></div></div>
|
|
@@ -2078,7 +2117,7 @@ Private Attributes</h2></td></tr>
|
|
|
2078
2117
|
<div class="fragment"><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">getBBSuccessorNum</a>(bb) > 1 && <span class="stringliteral">"not more than one successor??"</span>);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a1631bbbed23fbfe2204779ecc0dc2769">getBBSuccessorPos</a>(bb,succ);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#a0d685cfd0f0652a0ff839969f763371b">CondPosMap</a>& condPosMap = <a class="code" href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">bbConds</a>[bb];</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="comment">//assert(condPosMap.find(pos) == condPosMap.end() && "this branch has already been set ");</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  condPosMap[pos] = cond;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
2079
2118
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a1631bbbed23fbfe2204779ecc0dc2769"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a1631bbbed23fbfe2204779ecc0dc2769">SVF::SVFUtil::getBBSuccessorPos</a></div><div class="ttdeci">u32_t getBBSuccessorPos(const BasicBlock *BB, const BasicBlock *Succ)</div><div class="ttdoc">Get basic block successor position. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00317">LLVMUtil.cpp:317</a></div></div>
|
|
2080
2119
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00081">SVFBasicTypes.h:81</a></div></div>
|
|
2081
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aff611b2797d61155c8c2f9d8ac4030bc"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">SVF::PathCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">map basic block to its successors/predecessors branch conditions </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
2120
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aff611b2797d61155c8c2f9d8ac4030bc"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aff611b2797d61155c8c2f9d8ac4030bc">SVF::PathCondAllocator::bbConds</a></div><div class="ttdeci">BBCondMap bbConds</div><div class="ttdoc">map basic block to its successors/predecessors branch conditions </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00290">PathCondAllocator.h:290</a></div></div>
|
|
2082
2121
|
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_a0d685cfd0f0652a0ff839969f763371b"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a0d685cfd0f0652a0ff839969f763371b">SVF::PathCondAllocator::CondPosMap</a></div><div class="ttdeci">Map< u32_t, Condition * > CondPosMap</div><div class="ttdoc">z3 condition </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00054">PathCondAllocator.h:54</a></div></div>
|
|
2083
2122
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a737684498679dc16a26f2411d88f36aa"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a737684498679dc16a26f2411d88f36aa">SVF::SVFUtil::getBBSuccessorNum</a></div><div class="ttdeci">u32_t getBBSuccessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB&#39;s successors. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00349">LLVMUtil.cpp:349</a></div></div>
|
|
2084
2123
|
</div><!-- fragment -->
|
|
@@ -2120,9 +2159,9 @@ Private Attributes</h2></td></tr>
|
|
|
2120
2159
|
|
|
2121
2160
|
<p>Get/Set control-flow conditions. </p>
|
|
2122
2161
|
|
|
2123
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#
|
|
2124
|
-
<div class="fragment"><div class="line"><a name="
|
|
2125
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac3a0aa27f317d7d9214181b599f19f24"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">SVF::PathCondAllocator::bbToCondMap</a></div><div class="ttdeci">BBToCondMap bbToCondMap</div><div class="ttdoc">map a basic block to its path condition starting from root </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
2162
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00255">255</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
2163
|
+
<div class="fragment"><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  BBToCondMap::iterator it = <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.find(bb);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="comment">// until a fixed-point is reached (condition is not changed)</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">if</span>(it!=<a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>.end() && <a class="code" href="classSVF_1_1PathCondAllocator.html#ad92e8909172d960de8a25f6ff0272261">isEquivalentBranchCond</a>(it->second, cond))</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">bbToCondMap</a>[bb] = cond;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_ad92e8909172d960de8a25f6ff0272261"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ad92e8909172d960de8a25f6ff0272261">SVF::PathCondAllocator::isEquivalentBranchCond</a></div><div class="ttdeci">bool isEquivalentBranchCond(const Condition *lhs, const Condition *rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00201">PathCondAllocator.h:201</a></div></div>
|
|
2164
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_ac3a0aa27f317d7d9214181b599f19f24"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#ac3a0aa27f317d7d9214181b599f19f24">SVF::PathCondAllocator::bbToCondMap</a></div><div class="ttdeci">BBToCondMap bbToCondMap</div><div class="ttdoc">map a basic block to its path condition starting from root </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00285">PathCondAllocator.h:285</a></div></div>
|
|
2126
2165
|
</div><!-- fragment -->
|
|
2127
2166
|
</div>
|
|
2128
2167
|
</div>
|
|
@@ -2162,7 +2201,7 @@ Private Attributes</h2></td></tr>
|
|
|
2162
2201
|
|
|
2163
2202
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00136">136</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
2164
2203
|
<div class="fragment"><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">condMgr</a>-><a class="code" href="classSVF_1_1CondManager.html#a1fbf7dd446309e13671d838c91da26bf">setCondInst</a>(cond, inst);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="ttc" id="classSVF_1_1CondManager_html_a1fbf7dd446309e13671d838c91da26bf"><div class="ttname"><a href="classSVF_1_1CondManager.html#a1fbf7dd446309e13671d838c91da26bf">SVF::CondManager::setCondInst</a></div><div class="ttdeci">void setCondInst(const CondExpr *cond, const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="Conditions_8h_source.html#l00212">Conditions.h:212</a></div></div>
|
|
2165
|
-
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
2204
|
+
<div class="ttc" id="classSVF_1_1PathCondAllocator_html_aacf96d4b7154f6c2dc12ab9e19702fcd"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#aacf96d4b7154f6c2dc12ab9e19702fcd">SVF::PathCondAllocator::condMgr</a></div><div class="ttdeci">CondManager * condMgr</div><div class="ttdoc">z3 manager </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00289">PathCondAllocator.h:289</a></div></div>
|
|
2166
2205
|
</div><!-- fragment -->
|
|
2167
2206
|
</div>
|
|
2168
2207
|
</div>
|
|
@@ -2193,7 +2232,7 @@ Private Attributes</h2></td></tr>
|
|
|
2193
2232
|
<p>Set current value for branch condition evaluation. </p>
|
|
2194
2233
|
|
|
2195
2234
|
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00177">177</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
2196
|
-
<div class="fragment"><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">curEvalSVFGNode</a> = node;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a165e0a354b7679ce582c15f4a3faf6e0"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">SVF::PathCondAllocator::curEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * curEvalSVFGNode</div><div class="ttdoc">current llvm value to evaluate branch condition when computing guards </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#
|
|
2235
|
+
<div class="fragment"><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">curEvalSVFGNode</a> = node;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="ttc" id="classSVF_1_1PathCondAllocator_html_a165e0a354b7679ce582c15f4a3faf6e0"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html#a165e0a354b7679ce582c15f4a3faf6e0">SVF::PathCondAllocator::curEvalSVFGNode</a></div><div class="ttdeci">const SVFGNode * curEvalSVFGNode</div><div class="ttdoc">current llvm value to evaluate branch condition when computing guards </div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00286">PathCondAllocator.h:286</a></div></div>
|
|
2197
2236
|
</div><!-- fragment -->
|
|
2198
2237
|
</div>
|
|
2199
2238
|
</div>
|
|
@@ -2220,7 +2259,7 @@ Private Attributes</h2></td></tr>
|
|
|
2220
2259
|
|
|
2221
2260
|
<p>map basic block to its successors/predecessors branch conditions </p>
|
|
2222
2261
|
|
|
2223
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#
|
|
2262
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00290">290</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
2224
2263
|
|
|
2225
2264
|
</div>
|
|
2226
2265
|
</div>
|
|
@@ -2246,7 +2285,7 @@ Private Attributes</h2></td></tr>
|
|
|
2246
2285
|
|
|
2247
2286
|
<p>map a basic block to its path condition starting from root </p>
|
|
2248
2287
|
|
|
2249
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#
|
|
2288
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00285">285</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
2250
2289
|
|
|
2251
2290
|
</div>
|
|
2252
2291
|
</div>
|
|
@@ -2272,7 +2311,7 @@ Private Attributes</h2></td></tr>
|
|
|
2272
2311
|
|
|
2273
2312
|
<p>map a function to its loop info </p>
|
|
2274
2313
|
|
|
2275
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#
|
|
2314
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00283">283</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
2276
2315
|
|
|
2277
2316
|
</div>
|
|
2278
2317
|
</div>
|
|
@@ -2298,7 +2337,7 @@ Private Attributes</h2></td></tr>
|
|
|
2298
2337
|
|
|
2299
2338
|
<p>z3 manager </p>
|
|
2300
2339
|
|
|
2301
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#
|
|
2340
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00289">289</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
2302
2341
|
|
|
2303
2342
|
</div>
|
|
2304
2343
|
</div>
|
|
@@ -2324,7 +2363,7 @@ Private Attributes</h2></td></tr>
|
|
|
2324
2363
|
|
|
2325
2364
|
<p>current llvm value to evaluate branch condition when computing guards </p>
|
|
2326
2365
|
|
|
2327
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#
|
|
2366
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00286">286</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
2328
2367
|
|
|
2329
2368
|
</div>
|
|
2330
2369
|
</div>
|
|
@@ -2350,7 +2389,7 @@ Private Attributes</h2></td></tr>
|
|
|
2350
2389
|
|
|
2351
2390
|
<p>map a function to all its basic blocks calling program exit </p>
|
|
2352
2391
|
|
|
2353
|
-
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#
|
|
2392
|
+
<p class="definition">Definition at line <a class="el" href="PathCondAllocator_8h_source.html#l00284">284</a> of file <a class="el" href="PathCondAllocator_8h_source.html">PathCondAllocator.h</a>.</p>
|
|
2354
2393
|
|
|
2355
2394
|
</div>
|
|
2356
2395
|
</div>
|